Log all user actions on stdout
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
use crate::actors::users_actor;
|
||||
use actix::Addr;
|
||||
use actix_web::{web, HttpResponse, Responder};
|
||||
|
||||
use crate::actors::users_actor::{DeleteUserRequest, FindUserByUsername, UsersActor};
|
||||
use crate::data::action_logger::{Action, ActionLogger};
|
||||
use crate::data::current_user::CurrentUser;
|
||||
use crate::data::user::UserID;
|
||||
|
||||
@@ -37,13 +39,25 @@ pub async fn delete_user(
|
||||
user: CurrentUser,
|
||||
req: web::Form<DeleteUserReq>,
|
||||
users: web::Data<Addr<UsersActor>>,
|
||||
action_logger: ActionLogger,
|
||||
) -> impl Responder {
|
||||
if user.uid == req.user_id {
|
||||
return HttpResponse::BadRequest().body("You can not remove your own account!");
|
||||
}
|
||||
|
||||
let user = match users
|
||||
.send(users_actor::GetUserRequest(req.user_id.clone()))
|
||||
.await
|
||||
.unwrap()
|
||||
.0
|
||||
{
|
||||
None => return HttpResponse::NotFound().body("Could not find a user to remove!"),
|
||||
Some(u) => u,
|
||||
};
|
||||
|
||||
let res = users.send(DeleteUserRequest(req.0.user_id)).await.unwrap();
|
||||
if res.0 {
|
||||
action_logger.log(Action::AdminDeleteUser(&user));
|
||||
HttpResponse::Ok().finish()
|
||||
} else {
|
||||
HttpResponse::InternalServerError().finish()
|
||||
|
Reference in New Issue
Block a user