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, Default)]
79#[serde(default)]
80pub struct NewGroup {
81 #[serde(default)]
82 pub id: String,
83 #[serde(default)]
84 pub name: String,
85 #[serde(default)]
86 pub permission: String,
87 #[serde(default)]
88 pub direct_link_batch_size: Option<i64>,
89 #[serde(default)]
90 pub trash_retention: Option<i64>,
91}
92
93#[derive(Debug, Serialize, Deserialize, Clone)]
95pub enum UserStatus {
96 #[serde(rename = "active")]
97 Active,
98 #[serde(rename = "inactive")]
99 Inactive,
100 #[serde(rename = "manual_banned")]
101 ManualBanned,
102 #[serde(rename = "sys_banned")]
103 SysBanned,
104}
105
106#[derive(Debug, Serialize, Deserialize, Clone)]
108pub enum AvatarType {
109 #[serde(rename = "file")]
110 File,
111 #[serde(rename = "gravatar")]
112 Gravatar,
113}
114
115#[derive(Debug, Serialize, Deserialize, Clone)]
117pub enum ShareLinkVisibility {
118 #[serde(rename = "")]
119 Empty,
120 #[serde(rename = "all_share")]
121 AllShare,
122 #[serde(rename = "hide_share")]
123 HideShare,
124}
125
126#[derive(Debug, Serialize)]
128pub struct LoginRequest<'a> {
129 pub email: &'a str,
130 pub password: &'a str,
131}
132
133#[derive(Debug, Serialize)]
135pub struct TwoFactorLoginRequest<'a> {
136 pub email: &'a str,
137 pub password: &'a str,
138 pub code: &'a str,
139 pub ticket: Option<&'a str>,
140}
141
142#[derive(Debug, Serialize)]
144pub struct RefreshTokenRequest<'a> {
145 pub refresh_token: &'a str,
146}
147
148#[derive(Debug, Serialize, Deserialize)]
150pub struct TwoFactorSetup {
151 pub secret: String,
152 pub qr_code: String,
153 pub recovery_codes: Vec<String>,
154}
155
156#[derive(Debug, Serialize, Deserialize)]
158pub struct TwoFactorVerify {
159 pub code: String,
160}
161
162#[derive(Debug, Deserialize)]
164pub struct CaptchaResponse {
165 pub image: String,
166 pub ticket: String,
167}
168
169#[derive(Debug, Deserialize)]
171pub struct LoginPreparation {
172 #[serde(default)]
173 pub webauthn_enabled: bool,
174 #[serde(default)]
175 pub sso_enabled: Option<bool>,
176 #[serde(default)]
177 pub password_enabled: bool,
178 #[serde(default)]
179 pub qq_enabled: Option<bool>,
180}
181
182#[derive(Debug, Serialize)]
184pub struct OpenIdPrepareRequest<'a> {
185 pub hint: Option<&'a str>,
186 pub linking: Option<bool>,
187 pub provider: i32,
188}
189
190#[derive(Debug, Serialize)]
192pub struct OpenIdFinishRequest<'a> {
193 pub code: &'a str,
194 pub session_id: &'a str,
195 pub provider_id: i32,
196}
197
198#[derive(Debug, Deserialize)]
200pub struct PasskeySignInPreparation {
201 pub session_id: String,
202 pub options: Value,
203}
204
205#[derive(Debug, Serialize)]
207pub struct PasskeySignInRequest<'a> {
208 pub response: &'a str,
209 pub session_id: &'a str,
210}
211
212#[derive(Debug, Deserialize)]
214pub struct LoginResponse {
215 pub user: NewUser,
216 pub token: Token,
217}
218
219#[derive(Debug, Serialize)]
221pub struct RegisterRequest<'a> {
222 pub username: &'a str,
223 pub password: &'a str,
224 pub email: Option<&'a str>,
225}