|
|
|
@ -14,6 +14,7 @@ use serde::Serialize;
|
|
|
|
|
use crate::database::models::{Role, UserInformation};
|
|
|
|
|
use crate::database::permissions::{
|
|
|
|
|
ROLE_CREATE_PERM, ROLE_DELETE_PERM, ROLE_UPDATE_PERM, ROLE_VIEW_PERM, USER_UPDATE_PERM,
|
|
|
|
|
USER_VIEW_PERM,
|
|
|
|
|
};
|
|
|
|
|
use crate::database::tokens::SessionTokens;
|
|
|
|
|
use crate::database::Database;
|
|
|
|
@ -128,6 +129,9 @@ impl UserHttpServer {
|
|
|
|
|
(POST) (/roles/{name: String}/delete) => {
|
|
|
|
|
Self::delete_role(&database, request, name).unwrap_or_else(HTTPError::into)
|
|
|
|
|
},
|
|
|
|
|
(GET) (/users/{email: String}) => {
|
|
|
|
|
Self::get_user(&database, request, email).unwrap_or_else(HTTPError::into)
|
|
|
|
|
},
|
|
|
|
|
(POST) (/users/{email: String}/update) => {
|
|
|
|
|
Self::update_user(&database, request, email).unwrap_or_else(HTTPError::into)
|
|
|
|
|
},
|
|
|
|
@ -205,6 +209,11 @@ impl UserHttpServer {
|
|
|
|
|
"POST",
|
|
|
|
|
"Change user information",
|
|
|
|
|
)?;
|
|
|
|
|
doc.add_path::<(), UserInformation>(
|
|
|
|
|
"/users/{email:String}",
|
|
|
|
|
"GET",
|
|
|
|
|
"See user information",
|
|
|
|
|
)?;
|
|
|
|
|
|
|
|
|
|
Ok(doc)
|
|
|
|
|
}
|
|
|
|
@ -336,6 +345,13 @@ impl UserHttpServer {
|
|
|
|
|
}))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn get_user(database: &Database, request: &Request, email: String) -> HTTPResult<Response> {
|
|
|
|
|
require_permission!(database, request, USER_VIEW_PERM);
|
|
|
|
|
let user = database.users.get_user_by_email(&email)?;
|
|
|
|
|
|
|
|
|
|
Ok(Response::json(&user))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn update_user(database: &Database, request: &Request, email: String) -> HTTPResult<Response> {
|
|
|
|
|
let (_, id) = validate_request_token(request, database)?;
|
|
|
|
|
let message = deserialize_body::<UpdateUserRequest>(&request)?;
|
|
|
|
|