fiberplane_models/
users.rs1use crate::names::Name;
2use crate::workspaces::AuthRole;
3use base64uuid::Base64Uuid;
4#[cfg(feature = "fp-bindgen")]
5use fp_bindgen::prelude::Serializable;
6use serde::{Deserialize, Serialize};
7use std::collections::HashMap;
8use typed_builder::TypedBuilder;
9
10#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize, TypedBuilder)]
11#[cfg_attr(
12 feature = "fp-bindgen",
13 derive(Serializable),
14 fp(rust_module = "fiberplane_models::users")
15)]
16#[non_exhaustive]
17#[serde(rename_all = "camelCase")]
18pub struct Profile {
19 #[builder(setter(into))]
20 pub id: Base64Uuid,
21
22 #[builder(setter(into))]
23 pub email: String,
24
25 #[builder(setter(into))]
26 pub name: String,
27
28 #[builder(setter(into))]
29 pub default_workspace_id: Base64Uuid,
30
31 pub default_workspace_name: Name,
32
33 #[builder(default, setter(into))]
34 pub roles: HashMap<Base64Uuid, AuthRole>,
35}
36
37#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Serialize)]
38#[cfg_attr(
39 feature = "fp-bindgen",
40 derive(Serializable),
41 fp(rust_module = "fiberplane_models::users")
42)]
43#[non_exhaustive]
44#[serde(rename_all = "snake_case")]
45pub enum OidProvider {
46 Google,
47 #[serde(rename = "github")]
48 GitHub,
49}
50
51#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize, TypedBuilder)]
52#[cfg_attr(
53 feature = "fp-bindgen",
54 derive(Serializable),
55 fp(rust_module = "fiberplane_models::users")
56)]
57#[non_exhaustive]
58#[serde(rename_all = "camelCase")]
59pub struct OidConnection {
60 pub provider: OidProvider,
61 pub linked: bool,
62}
63
64#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize, TypedBuilder)]
65#[cfg_attr(
66 feature = "fp-bindgen",
67 derive(Serializable),
68 fp(rust_module = "fiberplane_models::users")
69)]
70#[non_exhaustive]
71#[serde(rename_all = "camelCase")]
72pub struct OidLinkupLocation {
73 #[builder(setter(into))]
74 pub location: String,
75}