diff options
| author | rtkay123 <dev@kanjala.com> | 2026-02-02 13:30:25 +0200 |
|---|---|---|
| committer | rtkay123 <dev@kanjala.com> | 2026-02-02 13:30:25 +0200 |
| commit | 549d98f3b457ddfc6dffbe2fad406da4ac50ebc7 (patch) | |
| tree | d1563d048eb7600f0f1265766efffb2797280051 /src/server/driver/auth.rs | |
| parent | e06094f23ca861ea5ae4864d11fa8ce8b7d7aa2c (diff) | |
| download | sellershut-549d98f3b457ddfc6dffbe2fad406da4ac50ebc7.tar.bz2 sellershut-549d98f3b457ddfc6dffbe2fad406da4ac50ebc7.zip | |
refactor: collapse auth
Diffstat (limited to 'src/server/driver/auth.rs')
| -rw-r--r-- | src/server/driver/auth.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/server/driver/auth.rs b/src/server/driver/auth.rs new file mode 100644 index 0000000..9215372 --- /dev/null +++ b/src/server/driver/auth.rs @@ -0,0 +1,34 @@ +use bon::Builder; +use oauth2::{AuthUrl, ClientId, ClientSecret, EndpointNotSet, EndpointSet, RedirectUrl, TokenUrl}; +use secrecy::{ExposeSecret, SecretString}; + +#[derive(Builder)] +pub struct ClientOptions { + client_id: String, + client_secret: SecretString, + token_url: String, + auth_url: String, + redirect_url: String, +} + +pub type OauthClient = oauth2::basic::BasicClient< + EndpointSet, + EndpointNotSet, + EndpointNotSet, + EndpointNotSet, + EndpointSet, +>; + +pub fn oauth_client(opts: &ClientOptions) -> anyhow::Result<OauthClient> { + let redirect_url = RedirectUrl::new(opts.redirect_url.to_owned())?; + let client_id = ClientId::new(opts.client_id.to_owned()); + let auth_url = AuthUrl::new(opts.auth_url.to_owned())?; + let token_url = TokenUrl::new(opts.token_url.to_owned())?; + let client_secret = ClientSecret::new(opts.client_secret.expose_secret().to_string()); + + Ok(oauth2::basic::BasicClient::new(client_id) + .set_client_secret(client_secret) + .set_auth_uri(auth_url) + .set_token_uri(token_url) + .set_redirect_uri(redirect_url)) +} |
