summaryrefslogtreecommitdiffstats
path: root/crates/auth/src/server/routes/discord
diff options
context:
space:
mode:
authorrtkay123 <dev@kanjala.com>2025-07-23 13:39:40 +0200
committerrtkay123 <dev@kanjala.com>2025-07-23 13:39:40 +0200
commit089efa225cc0a4e7be12608129ddbff28d11f320 (patch)
treed5d27ba5f5056c7a539365fd314e6d7ce7529523 /crates/auth/src/server/routes/discord
parent0a48abb0f0d4752b639fb89dd2db32a3db0eebb8 (diff)
downloadsellershut-089efa225cc0a4e7be12608129ddbff28d11f320.tar.bz2
sellershut-089efa225cc0a4e7be12608129ddbff28d11f320.zip
feat(auth): discord oauth
Diffstat (limited to 'crates/auth/src/server/routes/discord')
-rw-r--r--crates/auth/src/server/routes/discord/discord_auth.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/crates/auth/src/server/routes/discord/discord_auth.rs b/crates/auth/src/server/routes/discord/discord_auth.rs
new file mode 100644
index 0000000..b07fa7a
--- /dev/null
+++ b/crates/auth/src/server/routes/discord/discord_auth.rs
@@ -0,0 +1,20 @@
+use axum::{
+ extract::State,
+ http::HeaderMap,
+ response::{IntoResponse, Redirect},
+};
+use oauth2::{CsrfToken, Scope};
+
+use crate::{error::AppError, state::AppHandle};
+
+pub async fn discord_auth(State(state): State<AppHandle>) -> Result<impl IntoResponse, AppError> {
+ let (auth_url, csrf_token) = state
+ .discord_client
+ .authorize_url(CsrfToken::new_random)
+ .add_scope(Scope::new("identify".to_string()))
+ .url();
+
+ let mut headers = HeaderMap::new();
+
+ Ok((headers, Redirect::to(auth_url.as_ref())))
+}