taxy_api/
auth.rs

1use serde_derive::{Deserialize, Serialize};
2use utoipa::ToSchema;
3
4#[derive(Clone, Serialize, Deserialize)]
5pub struct Account {
6    pub password: String,
7
8    #[serde(default, skip_serializing_if = "Option::is_none")]
9    pub totp: Option<String>,
10}
11
12#[derive(Deserialize, Serialize, ToSchema)]
13pub struct LoginRequest {
14    #[schema(example = "admin")]
15    pub username: String,
16    #[schema(inline)]
17    #[serde(flatten)]
18    pub method: LoginMethod,
19    #[serde(default)]
20    pub insecure: bool,
21}
22
23#[derive(Deserialize, Serialize, ToSchema)]
24#[serde(tag = "method", rename_all = "snake_case")]
25pub enum LoginMethod {
26    Password {
27        #[schema(example = "passw0rd")]
28        password: String,
29    },
30    Totp {
31        #[schema(example = "234567")]
32        token: String,
33    },
34}
35
36#[derive(Debug, Deserialize, Serialize, ToSchema)]
37#[serde(rename_all = "snake_case")]
38pub enum LoginResponse {
39    Success,
40    TotpRequired,
41}