changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > demo / annotate obj/src/auth.rs

changeset 11: d8f806f1d327
author: ellis <ellis@rwest.io>
date: Sun, 14 May 2023 21:27:04 -0400
permissions: -rw-r--r--
description: obj updates
11
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
1
 //! Auth Configs
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
2
 use serde::{Deserialize, Serialize};
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
3
 
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
4
 #[cfg(feature = "oauth")]
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
5
 use yup_oauth2::ApplicationSecret;
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
6
 
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
7
 #[derive(Serialize, Deserialize, Debug, Default, Hash)]
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
8
 pub struct AuthConfig {
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
9
   pub provider: String,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
10
   #[cfg(feature = "oauth")]
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
11
   pub oauth: Option<Oauth2Config>,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
12
   pub ssh: Option<SshConfig>,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
13
   pub pw: Option<PasswordConfig>,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
14
 }
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
15
 
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
16
 #[derive(Serialize, Deserialize, Default, Debug, Hash)]
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
17
 pub struct PasswordConfig(String, String);
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
18
 
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
19
 #[cfg(feature = "oauth")]
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
20
 #[derive(Serialize, Deserialize, Hash, Debug, PartialEq, Clone, Default)]
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
21
 pub struct Oauth2Config {
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
22
   pub client_id: String,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
23
   pub client_secret: String,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
24
   pub redirect_uris: Vec<String>,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
25
   pub auth_uri: String,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
26
   pub token_uri: String,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
27
   pub project_id: Option<String>, //for apptoken
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
28
   pub client_email: Option<String>,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
29
   /// The URL of the public x509 certificate, used to verify the signature on
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
30
   /// JWTs, such as ID tokens, signed by the authentication provider.
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
31
   pub auth_provider_x509_cert_url: Option<String>,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
32
   ///  The URL of the public x509 certificate, used to verify JWTs signed by the
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
33
   /// client.
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
34
   pub client_x509_cert_url: Option<String>,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
35
 }
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
36
 
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
37
 #[cfg(feature = "oauth")]
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
38
 impl From<ApplicationSecret> for Oauth2Config {
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
39
   fn from(shh: ApplicationSecret) -> Self {
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
40
     Oauth2Config {
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
41
       client_id: shh.client_id,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
42
       client_secret: shh.client_secret,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
43
       redirect_uris: shh.redirect_uris,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
44
       auth_uri: shh.auth_uri,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
45
       token_uri: shh.token_uri,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
46
       project_id: shh.project_id,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
47
       client_email: shh.client_email,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
48
       auth_provider_x509_cert_url: shh.auth_provider_x509_cert_url,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
49
       client_x509_cert_url: shh.client_x509_cert_url,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
50
     }
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
51
   }
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
52
 }
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
53
 
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
54
 #[cfg(feature = "oauth")]
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
55
 impl From<Oauth2Config> for ApplicationSecret {
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
56
   fn from(cfg: Oauth2Config) -> Self {
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
57
     ApplicationSecret {
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
58
       client_id: cfg.client_id,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
59
       client_secret: cfg.client_secret,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
60
       redirect_uris: cfg.redirect_uris,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
61
       auth_uri: cfg.auth_uri,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
62
       token_uri: cfg.token_uri,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
63
       project_id: cfg.project_id,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
64
       client_email: cfg.client_email,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
65
       auth_provider_x509_cert_url: cfg.auth_provider_x509_cert_url,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
66
       client_x509_cert_url: cfg.client_x509_cert_url,
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
67
     }
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
68
   }
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
69
 }
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
70
 
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
71
 #[derive(Serialize, Deserialize, Hash, Debug, PartialEq, Clone, Default)]
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents:
diff changeset
72
 pub struct SshConfig {}