junobuild_auth/openid/
types.rs1pub 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}