aboutsummaryrefslogtreecommitdiffstats
path: root/crates/api-auth/src/discord
diff options
context:
space:
mode:
Diffstat (limited to 'crates/api-auth/src/discord')
-rw-r--r--crates/api-auth/src/discord/mod.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/crates/api-auth/src/discord/mod.rs b/crates/api-auth/src/discord/mod.rs
index a39722d..29b9bc2 100644
--- a/crates/api-auth/src/discord/mod.rs
+++ b/crates/api-auth/src/discord/mod.rs
@@ -1,8 +1,10 @@
use api_core::models::user::User;
+use async_session::Session;
use async_trait::async_trait;
+use oauth2::{CsrfToken, Scope};
use sqlx::PgPool;
-use crate::{BasicClient, OauthDriver, error::AuthError};
+use crate::{BasicClient, CSRF_TOKEN, OauthDriver, error::AuthError};
#[derive(Clone, Debug)]
pub struct AuthServiceDiscord {
@@ -24,7 +26,19 @@ impl OauthDriver for AuthServiceDiscord {
async fn get_user(&self) -> Result<User, AuthError> {
todo!()
}
- async fn create_session(&self, _user: &User) {
+ async fn create_oauth_session(&self)->Result<String,AuthError> {
+ let (auth_url, csrf_token) = self
+ .client
+ .authorize_url(CsrfToken::new_random)
+ .add_scope(Scope::new("identify".to_string()))
+ .url();
+
+ let mut session = Session::new();
+ session.insert(CSRF_TOKEN, &csrf_token).unwrap();
+
+ Ok(String::default())
+ }
+ async fn save_session(&self, user: &User)->Result<(), AuthError>{
todo!()
}
}