context69_contracts/
auth.rs1use 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}