49 lines
925 B
Rust
49 lines
925 B
Rust
|
use uuid::Uuid;
|
||
|
use diesel::prelude::*;
|
||
|
use diesel::associations::HasTable;
|
||
|
use rocket::request::{FromRequest, Request, Outcome};
|
||
|
use diesel_derive_enum::DbEnum;
|
||
|
|
||
|
use crate::schema::*;
|
||
|
|
||
|
#[derive(Debug, DbEnum)]
|
||
|
pub enum Role {
|
||
|
Admin,
|
||
|
ZoneAdmin,
|
||
|
}
|
||
|
|
||
|
#[derive(Debug, Queryable, Identifiable)]
|
||
|
#[table_name = "user"]
|
||
|
pub struct User {
|
||
|
pub id: String,
|
||
|
pub role: String,
|
||
|
}
|
||
|
|
||
|
#[derive(Debug, Queryable, Identifiable)]
|
||
|
#[table_name = "localuser"]
|
||
|
#[primary_key(user_id)]
|
||
|
pub struct LocalUser {
|
||
|
pub user_id: String,
|
||
|
pub username: String,
|
||
|
pub password: String,
|
||
|
}
|
||
|
|
||
|
// pub struct LdapUserAssociation {
|
||
|
// user_id: Uuid,
|
||
|
// ldap_id: String
|
||
|
// }
|
||
|
|
||
|
pub struct UserInfo {
|
||
|
id: Uuid,
|
||
|
role: Role,
|
||
|
username: String,
|
||
|
}
|
||
|
|
||
|
impl<'a, 'r> FromRequest<'a, 'r> for UserInfo {
|
||
|
type Error = ();
|
||
|
|
||
|
fn from_request(request: &'a Request<'r>) -> Outcome<UserInfo, ()> {
|
||
|
Outcome::Forward(())
|
||
|
}
|
||
|
}
|