Skip to main content

context69_contracts/
auth.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use utoipa::ToSchema;
4
5use crate::MembershipRole;
6
7#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
8pub struct AuthLoginRequest {
9    pub login_name: String,
10    pub password: String,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
14pub struct AuthUserResponse {
15    pub user_id: i64,
16    pub login_name: String,
17    pub display_name: String,
18    pub is_admin: bool,
19    #[serde(default, skip_serializing_if = "Option::is_none")]
20    pub disabled_at: Option<DateTime<Utc>>,
21    pub personal_group_key: String,
22    #[serde(default, skip_serializing_if = "Option::is_none")]
23    pub personal_group_role: Option<MembershipRole>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
27pub struct AuthTokenResponse {
28    pub access_token: String,
29    pub token_type: String,
30    pub expires_in_secs: u64,
31    pub user: AuthUserResponse,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
35pub struct AuthMeResponse {
36    pub user: AuthUserResponse,
37}