diff options
Diffstat (limited to 'crates/api-auth/src/discord')
| -rw-r--r-- | crates/api-auth/src/discord/mod.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/crates/api-auth/src/discord/mod.rs b/crates/api-auth/src/discord/mod.rs index ffa5a68..ba26f8b 100644 --- a/crates/api-auth/src/discord/mod.rs +++ b/crates/api-auth/src/discord/mod.rs @@ -1,4 +1,5 @@ use api_core::models::user::User; +use async_session::Session; use async_trait::async_trait; use serde::{Deserialize, Serialize}; use sh_util::cache::RedisManager; @@ -25,7 +26,11 @@ impl TryFrom<DiscordUser> for User { match (&user_data.email, user_data.verified) { (None, _) => Err(AuthError::MissingEmail), (_, false) => Err(AuthError::EmailNotVerified), - (Some(_), true) => Ok(Self {}), + (Some(_), true) => Ok(Self { + id: user_data.id, + username: user_data.username, + email: user_data.email.ok_or(AuthError::MissingEmail)?, + }), } } } @@ -67,7 +72,10 @@ impl OauthDriver for AuthServiceDiscord { crate::util::create_oauth_session(&self.client, &self.cache, &["identify", "email"]).await } - async fn save_session(&self, _user: &User) -> Result<(), AuthError> { - todo!() + async fn save_session(&self, user: &User) -> Result<(), AuthError> { + let mut session = Session::new(); + session.insert("user", user).expect("serialisable user"); + + Ok(()) } } |
