1use uuid::Uuid;
2
3use crate::type_alias::HttpRequest;
4
5#[derive(Debug, Default, Eq, Hash, PartialEq)]
6pub struct User {
7 pub id: Uuid,
8 pub name: String,
9 pub access_key: String,
11 pub secret_key: String,
12 pub kind: UserKind,
13}
14
15impl User {}
16
17pub trait UserExt {
18 fn user(&self) -> Option<User>;
19}
20
21impl UserExt for HttpRequest {
22 fn user(&self) -> Option<User> {
23 Some(User {
25 id: Default::default(),
27 name: "".to_string(),
29 access_key: "".to_string(),
31 secret_key: "".to_string(),
33 kind: UserKind::Person,
35 })
36 }
37}
38
39#[derive(Debug, Default, Eq, Hash, PartialEq)]
40pub enum UserKind {
41 #[default]
42 Service,
44 Person,
46 Team,
48 Company,
50 Customer,
52}
53
54#[derive(Debug, Default, Eq, Hash, PartialEq)]
55pub struct Group {
56 pub id: Uuid,
57 pub name: String,
58 pub users: Vec<User>,
59}
60
61#[derive(Debug, Default, Eq, Hash, PartialEq)]
62pub struct Role {
63 pub name: String,
64}