reinhardt_admin/server/
user.rs1use chrono::{DateTime, Utc};
8use reinhardt_db::orm::Model;
9use reinhardt_macros::user;
10use serde::{Deserialize, Serialize};
11use uuid::Uuid;
12
13#[user(hasher = reinhardt_auth::Argon2Hasher, username_field = "username", full = true, manager = false)]
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct AdminDefaultUser {
26 pub id: Uuid,
28 pub username: String,
30 pub email: String,
32 pub first_name: String,
34 pub last_name: String,
36 pub password_hash: Option<String>,
38 pub last_login: Option<DateTime<Utc>>,
40 pub is_active: bool,
42 pub is_staff: bool,
44 pub is_superuser: bool,
46 pub date_joined: DateTime<Utc>,
48 #[serde(deserialize_with = "super::serde_helpers::string_or_vec", default)]
50 pub user_permissions: Vec<String>,
51 #[serde(deserialize_with = "super::serde_helpers::string_or_vec", default)]
53 pub groups: Vec<String>,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct AdminDefaultUserFields {
59 _private: (),
60}
61
62impl AdminDefaultUserFields {
63 fn new() -> Self {
64 Self { _private: () }
65 }
66}
67
68impl reinhardt_db::orm::FieldSelector for AdminDefaultUserFields {
69 fn with_alias(self, _alias: &str) -> Self {
70 self
71 }
72}
73
74impl Model for AdminDefaultUser {
75 type PrimaryKey = Uuid;
76 type Fields = AdminDefaultUserFields;
77 type Objects = reinhardt_db::orm::Manager<Self>;
78
79 fn table_name() -> &'static str {
80 "auth_user"
81 }
82
83 fn new_fields() -> Self::Fields {
84 AdminDefaultUserFields::new()
85 }
86
87 fn primary_key(&self) -> Option<Self::PrimaryKey> {
88 Some(self.id)
89 }
90
91 fn set_primary_key(&mut self, value: Self::PrimaryKey) {
92 self.id = value;
93 }
94
95 fn primary_key_field() -> &'static str {
96 "id"
97 }
98}