junobuild_auth/openid/
types.rs

1pub mod interface {
2    pub struct OpenIdCredentialKey<'a> {
3        pub iss: &'a String,
4        pub sub: &'a String,
5    }
6
7    pub struct OpenIdCredential {
8        pub iss: String,
9        pub sub: String,
10
11        pub email: Option<String>,
12        pub name: Option<String>,
13        pub given_name: Option<String>,
14        pub family_name: Option<String>,
15        pub picture: Option<String>,
16        pub locale: Option<String>,
17    }
18}
19
20pub(crate) mod errors {
21    use crate::openid::jwkset::types::errors::GetOrRefreshJwksError;
22    use crate::openid::jwt::types::errors::{JwtFindProviderError, JwtVerifyError};
23    use candid::{CandidType, Deserialize};
24    use serde::Serialize;
25
26    #[derive(CandidType, Serialize, Deserialize, Debug)]
27    pub enum VerifyOpenidCredentialsError {
28        GetOrFetchJwks(GetOrRefreshJwksError),
29        GetCachedJwks,
30        JwtFindProvider(JwtFindProviderError),
31        JwtVerify(JwtVerifyError),
32    }
33}
34
35pub mod provider {
36    use crate::openid::jwt::types::cert::Jwks;
37    use candid::{CandidType, Deserialize};
38    use junobuild_shared::types::state::{Timestamp, Version};
39    use serde::Serialize;
40
41    #[derive(
42        CandidType, Serialize, Deserialize, Clone, Hash, PartialEq, Eq, PartialOrd, Ord, Debug,
43    )]
44    pub enum OpenIdProvider {
45        Google,
46    }
47
48    #[derive(CandidType, Serialize, Deserialize, Clone)]
49    pub struct OpenIdCertificate {
50        pub jwks: Jwks,
51
52        pub created_at: Timestamp,
53        pub updated_at: Timestamp,
54
55        pub version: Option<Version>,
56    }
57}