Skip to main content

fiberplane_models/
users.rs

1use 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}