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}