Can request new user password on login

This commit is contained in:
2022-04-02 08:30:01 +02:00
parent 0f4a5cde57
commit 4b8c9fdfdc
7 changed files with 222 additions and 11 deletions

View File

@ -1,7 +1,7 @@
use actix::{Actor, Context, Handler, Message, MessageResult};
use crate::data::entity_manager::EntityManager;
use crate::data::user::{User, verify_password};
use crate::data::user::{User, UserID, verify_password};
#[derive(Debug)]
pub enum LoginResult {
@ -17,6 +17,18 @@ pub struct LoginRequest {
pub password: String,
}
#[derive(Debug)]
pub struct ChangePasswordResult(pub bool);
#[derive(Message)]
#[rtype(ChangePasswordResult)]
pub struct ChangePasswordRequest {
pub user_id: UserID,
pub new_password: String,
pub temporary: bool,
}
pub struct UsersActor {
manager: EntityManager<User>,
}
@ -46,4 +58,13 @@ impl Handler<LoginRequest> for UsersActor {
}
}
}
}
impl Handler<ChangePasswordRequest> for UsersActor {
type Result = MessageResult<ChangePasswordRequest>;
fn handle(&mut self, msg: ChangePasswordRequest, _ctx: &mut Self::Context) -> Self::Result {
MessageResult(ChangePasswordResult(
self.manager.change_user_password(&msg.user_id, &msg.new_password, msg.temporary)))
}
}