public SaveResult <UserEntryModel> Save(UpdatePasswordDTO updatePasswordDTO, DateTime dateStamp) { var passwordHasher = new MD5PasswordHasher(); var user = Db.tblM_User.Find(User.User_PK); ModelValidationResult validationResult = validator.Validate(updatePasswordDTO); bool success = false; UserEntryModel model = null; if (validationResult.IsValid) { var hashedCurrentPassword = passwordHasher.Hash(updatePasswordDTO.CurrentPassword); if (hashedCurrentPassword != user.Password) { throw new Kairos.KairosException("Wrong current password."); } var hashedNewPassword = passwordHasher.Hash(updatePasswordDTO.NewPassword); user.Password = hashedNewPassword; Db.SaveChanges(); } return(new SaveResult <UserEntryModel> { Success = success, Message = validationResult.IsValid ? "Password has been changed." : "Validation error occured.", Model = model, ValidationResult = validationResult }); }
public SaveResult <tblM_User> Activate(UserActivationDTO userActivationDTO, DateTime dateStamp) { var passwordHasher = new MD5PasswordHasher(); var user = Db.tblM_User.Find(userActivationDTO.User_PK); var inactiveStatus = 1; user.Status_FK = inactiveStatus; Db.SaveChanges(); return(new SaveResult <tblM_User>() { Message = $"User {user.Username} successfully activated.", Model = user, Success = true, }); }
public LoginResult <UserDTO> GrantAccess(LoginDTO loginDTO) { var validationResult = Validate(loginDTO); if (!validationResult.IsValid) { return(new LoginResult <UserDTO> { Success = false, Message = "Validation error occured.", Model = null, ValidationResult = validationResult }); } MD5PasswordHasher passwordHasher = new MD5PasswordHasher(); var hashedPassword = passwordHasher.Hash(loginDTO.Password); var username = loginDTO.Username; var user = Db.tblM_User.FirstOrDefault(x => x.Username == username && x.Password == hashedPassword); if (user == null) { throw new Kairos.AccessException("Username or password do not match."); } var userDTO = new UserQuery(this.Db).GetUsernamePassword(username); return(new LoginResult <UserDTO>() { Token = Guid.NewGuid().ToString(), Success = true, Message = "Login success.", Model = userDTO, ValidationResult = validationResult }); }
public LoginResult <UserDTO> GrantAccess(LoginDTO loginDTO) { var validationResult = Validate(loginDTO); if (!validationResult.IsValid) { return(new LoginResult <UserDTO> { Success = false, Message = "Validation error occured.", Model = null, ValidationResult = validationResult }); } MD5PasswordHasher passwordHasher = new MD5PasswordHasher(); var hashedPassword = passwordHasher.Hash(loginDTO.Password); var username = loginDTO.Username; //Try by username first; var loginBy = "username"; var user = GetUserByUsername(username); //Db.tblM_User.FirstOrDefault(x => x.Username == username && x.Password == hashedPassword); //If not found, try by email if (user == null) { user = GetUserByEmail(username); loginBy = "email"; } if (user == null) { throw new Kairos.AccessException("Username or password do not match."); } if (user.Password != hashedPassword) { throw new Kairos.AccessException("Username or password do not match."); } UserDTO userDTO; if (loginBy == "username") { userDTO = new UserQuery(this.Db).GetByUsername(username); } else { userDTO = new UserQuery(this.Db).GetByEmail(username); } var treeMenu = new MenuGenerator(Db).GenerateMenus(user.User_PK); return(new LoginResult <UserDTO>() { Token = Guid.NewGuid().ToString(), Success = true, Message = "Login success.", Model = userDTO, ValidationResult = validationResult, TreeMenu = treeMenu }); }