cloudreve_api/api/v4/models/
auth.rs1use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6#[derive(Debug, Serialize, Deserialize, Clone)]
8pub struct User {
9 pub id: String,
10 pub email: String,
11 pub nickname: String,
12 #[serde(default)]
13 pub status: Option<String>,
14 #[serde(default)]
15 pub avatar: Option<String>,
16 pub created_at: String,
17 #[serde(default)]
18 pub group: Option<UserGroup>,
19}
20
21#[derive(Debug, Serialize, Deserialize, Clone)]
23pub struct UserGroup {
24 pub id: String,
25 pub name: String,
26 #[serde(default)]
27 pub permission: Option<String>,
28 #[serde(default)]
29 pub direct_link_batch_size: Option<u64>,
30 #[serde(default)]
31 pub trash_retention: Option<u64>,
32}
33
34#[derive(Debug, Serialize, Deserialize, Clone)]
36pub struct Token {
37 pub access_token: String,
38 pub refresh_token: String,
39 pub access_expires: String,
40 pub refresh_expires: String,
41}
42
43#[derive(Debug, Serialize, Deserialize)]
45pub struct LoginData {
46 pub user: User,
47 pub token: Token,
48}
49
50#[derive(Debug, Serialize, Deserialize, Clone)]
52pub struct NewUser {
53 pub id: String,
54 pub email: Option<String>,
55 pub nickname: Option<String>,
56 pub created_at: String,
57 #[serde(default)]
58 pub anonymous: Option<bool>,
59 #[serde(default)]
60 pub group: Option<NewGroup>,
61 #[serde(default)]
62 pub status: Option<UserStatus>,
63 #[serde(default)]
64 pub avatar: Option<AvatarType>,
65 #[serde(default)]
66 pub preferred_theme: Option<String>,
67 #[serde(default)]
68 pub credit: Option<i64>,
69 #[serde(default)]
70 pub language: Option<String>,
71 #[serde(default)]
72 pub disable_view_sync: Option<String>,
73 #[serde(default)]
74 pub share_links_in_profile: Option<ShareLinkVisibility>,
75}
76
77#[derive(Debug, Serialize, Deserialize, Clone)]
79pub struct NewGroup {
80 pub id: String,
81 pub name: String,
82 pub permission: String,
83 pub direct_link_batch_size: i64,
84 pub trash_retention: i64,
85}
86
87#[derive(Debug, Serialize, Deserialize, Clone)]
89pub enum UserStatus {
90 #[serde(rename = "active")]
91 Active,
92 #[serde(rename = "inactive")]
93 Inactive,
94 #[serde(rename = "manual_banned")]
95 ManualBanned,
96 #[serde(rename = "sys_banned")]
97 SysBanned,
98}
99
100#[derive(Debug, Serialize, Deserialize, Clone)]
102pub enum AvatarType {
103 #[serde(rename = "file")]
104 File,
105 #[serde(rename = "gravatar")]
106 Gravatar,
107}
108
109#[derive(Debug, Serialize, Deserialize, Clone)]
111pub enum ShareLinkVisibility {
112 #[serde(rename = "")]
113 Empty,
114 #[serde(rename = "all_share")]
115 AllShare,
116 #[serde(rename = "hide_share")]
117 HideShare,
118}
119
120#[derive(Debug, Serialize)]
122pub struct LoginRequest<'a> {
123 pub email: &'a str,
124 pub password: &'a str,
125}
126
127#[derive(Debug, Serialize)]
129pub struct TwoFactorLoginRequest<'a> {
130 pub email: &'a str,
131 pub password: &'a str,
132 pub code: &'a str,
133 pub ticket: Option<&'a str>,
134}
135
136#[derive(Debug, Serialize)]
138pub struct RefreshTokenRequest<'a> {
139 pub refresh_token: &'a str,
140}
141
142#[derive(Debug, Serialize, Deserialize)]
144pub struct TwoFactorSetup {
145 pub secret: String,
146 pub qr_code: String,
147 pub recovery_codes: Vec<String>,
148}
149
150#[derive(Debug, Serialize, Deserialize)]
152pub struct TwoFactorVerify {
153 pub code: String,
154}
155
156#[derive(Debug, Deserialize)]
158pub struct CaptchaResponse {
159 pub image: String,
160 pub ticket: String,
161}
162
163#[derive(Debug, Deserialize)]
165pub struct LoginPreparation {
166 pub webauthn_enabled: bool,
167 pub sso_enabled: bool,
168 pub password_enabled: bool,
169 pub qq_enabled: bool,
170}
171
172#[derive(Debug, Serialize)]
174pub struct OpenIdPrepareRequest<'a> {
175 pub hint: Option<&'a str>,
176 pub linking: Option<bool>,
177 pub provider: i32,
178}
179
180#[derive(Debug, Serialize)]
182pub struct OpenIdFinishRequest<'a> {
183 pub code: &'a str,
184 pub session_id: &'a str,
185 pub provider_id: i32,
186}
187
188#[derive(Debug, Deserialize)]
190pub struct PasskeySignInPreparation {
191 pub session_id: String,
192 pub options: Value,
193}
194
195#[derive(Debug, Serialize)]
197pub struct PasskeySignInRequest<'a> {
198 pub response: &'a str,
199 pub session_id: &'a str,
200}
201
202#[derive(Debug, Deserialize)]
204pub struct LoginResponse {
205 pub user: NewUser,
206 pub token: Token,
207}
208
209#[derive(Debug, Serialize)]
211pub struct RegisterRequest<'a> {
212 pub username: &'a str,
213 pub password: &'a str,
214 pub email: Option<&'a str>,
215}