1use chrono::NaiveDateTime;
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct Oauth2Client {
7 pub id: Uuid,
8 pub client_id: String,
9 pub client_secret_hash: Option<String>,
10 pub redirect_uris: serde_json::Value,
11 pub client_name: Option<String>,
12 pub grant_types: serde_json::Value,
13 pub scopes: Option<serde_json::Value>,
14 pub is_public: bool,
15 pub created_at: NaiveDateTime,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct NewOauth2Client {
20 pub id: Uuid,
21 pub client_id: String,
22 pub client_secret_hash: Option<String>,
23 pub redirect_uris: serde_json::Value,
24 pub client_name: Option<String>,
25 pub grant_types: serde_json::Value,
26 pub scopes: Option<serde_json::Value>,
27 pub is_public: bool,
28 pub created_at: NaiveDateTime,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct AuthorizationCode {
33 pub id: Uuid,
34 pub code_hash: String,
35 pub client_id: String,
36 pub user_id: Uuid,
37 pub scopes: Option<serde_json::Value>,
38 pub redirect_uri: String,
39 pub code_challenge: String,
40 pub code_challenge_method: String,
41 pub expires_at: NaiveDateTime,
42 pub used: bool,
43 pub nonce: Option<String>,
44 pub created_at: NaiveDateTime,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
48pub struct NewAuthorizationCode {
49 pub id: Uuid,
50 pub code_hash: String,
51 pub client_id: String,
52 pub user_id: Uuid,
53 pub scopes: Option<serde_json::Value>,
54 pub redirect_uri: String,
55 pub code_challenge: String,
56 pub code_challenge_method: String,
57 pub expires_at: NaiveDateTime,
58 pub used: bool,
59 pub nonce: Option<String>,
60 pub created_at: NaiveDateTime,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
64pub struct Consent {
65 pub id: Uuid,
66 pub user_id: Uuid,
67 pub client_id: String,
68 pub scopes: Option<serde_json::Value>,
69 pub created_at: NaiveDateTime,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
73pub struct NewConsent {
74 pub id: Uuid,
75 pub user_id: Uuid,
76 pub client_id: String,
77 pub scopes: Option<serde_json::Value>,
78 pub created_at: NaiveDateTime,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
82pub struct DeviceCode {
83 pub id: Uuid,
84 pub device_code_hash: String,
85 pub user_code: String,
86 pub client_id: String,
87 pub scopes: Option<serde_json::Value>,
88 pub user_id: Option<Uuid>,
89 pub status: String,
90 pub interval: i32,
91 pub expires_at: NaiveDateTime,
92 pub last_polled_at: Option<NaiveDateTime>,
93 pub created_at: NaiveDateTime,
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize)]
97pub struct NewDeviceCode {
98 pub id: Uuid,
99 pub device_code_hash: String,
100 pub user_code: String,
101 pub client_id: String,
102 pub scopes: Option<serde_json::Value>,
103 pub user_id: Option<Uuid>,
104 pub status: String,
105 pub interval: i32,
106 pub expires_at: NaiveDateTime,
107 pub created_at: NaiveDateTime,
108}