Refactor users management
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
* Shard `src/data/user.rs` into two different files * One for user data structure (same file) * One for user manipulation (new file: `user_file_entity.rs`) * Isolate password hashing and verification
This commit is contained in:
@ -26,6 +26,10 @@ pub struct GetUserRequest(pub UserID);
|
||||
#[derive(Debug)]
|
||||
pub struct GetUserResult(pub Option<User>);
|
||||
|
||||
#[derive(Message)]
|
||||
#[rtype(result = "bool")]
|
||||
pub struct VerifyUserPasswordRequest(pub UserID, pub String);
|
||||
|
||||
#[derive(Message)]
|
||||
#[rtype(FindUserByUsernameResult)]
|
||||
pub struct FindUserByUsername(pub String);
|
||||
@ -85,7 +89,7 @@ impl Handler<LoginRequest> for UsersActor {
|
||||
match self.manager.find_by_username_or_email(&msg.login) {
|
||||
None => MessageResult(LoginResult::AccountNotFound),
|
||||
Some(user) => {
|
||||
if !user.verify_password(&msg.password) {
|
||||
if !self.manager.verify_user_password(&user.uid, &msg.password) {
|
||||
return MessageResult(LoginResult::InvalidPassword);
|
||||
}
|
||||
|
||||
@ -132,6 +136,14 @@ impl Handler<GetUserRequest> for UsersActor {
|
||||
}
|
||||
}
|
||||
|
||||
impl Handler<VerifyUserPasswordRequest> for UsersActor {
|
||||
type Result = <VerifyUserPasswordRequest as actix::Message>::Result;
|
||||
|
||||
fn handle(&mut self, msg: VerifyUserPasswordRequest, _ctx: &mut Self::Context) -> Self::Result {
|
||||
self.manager.verify_user_password(&msg.0, &msg.1)
|
||||
}
|
||||
}
|
||||
|
||||
impl Handler<FindUserByUsername> for UsersActor {
|
||||
type Result = MessageResult<FindUserByUsername>;
|
||||
|
||||
|
Reference in New Issue
Block a user