From 78f61ccdf66572d7432b5b627994038479103653 Mon Sep 17 00:00:00 2001 From: rtkay123 Date: Sun, 1 Feb 2026 15:20:13 +0200 Subject: feat: oauth from config --- src/server/state/mod.rs | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'src/server/state/mod.rs') diff --git a/src/server/state/mod.rs b/src/server/state/mod.rs index f4bf029..0726689 100644 --- a/src/server/state/mod.rs +++ b/src/server/state/mod.rs @@ -1,17 +1,40 @@ pub mod database; +use sellershut_auth::{ClientOptions, OauthClient}; use sqlx::PgPool; +#[cfg(feature = "oauth-discord")] +use url::Url; -use crate::{config::Config}; +use crate::config::Config; +#[cfg(feature = "oauth-discord")] +use crate::config::DiscordOauth; pub struct AppState { database: PgPool, + #[cfg(feature = "oauth-discord")] + oauth_discord: OauthClient, } impl AppState { pub async fn new(config: &Config) -> anyhow::Result { let database = database::connect(&config.database).await?; - Ok(Self{database}) + Ok(Self { + database, + oauth_discord: discord_client(&config.oauth.discord, &config.oauth.oauth_redirect_url)?, + }) } } + +#[cfg(feature = "oauth-discord")] +fn discord_client(disc: &DiscordOauth, redirect: &Url)->anyhow::Result { + let discord_opts = ClientOptions::builder() + .client_id(disc.client_id.to_owned()) + .redirect_url(redirect.to_string()) + .auth_url(disc.auth_url.to_string()) + .client_secret(disc.client_secret.clone()) + .token_url(disc.token_url.to_string()) + .build(); + + Ok(sellershut_auth::oauth_client(&discord_opts)?) +} -- cgit v1.2.3