public Result <bool> ChangePassword(int userId, UserPasswordViewModel password) { try { if (password.NewPassword != password.RepeatedNewPassword) { throw new Exception(EResultMessage.InvalidData.ToString()); } var user = Get(u => u.Id == userId); if (user == null) { throw new Exception(EResultMessage.NotFound.ToString()); } if (!Protected.Validate(password.OldPassword, user.HashPassword)) { throw new Exception(EResultMessage.WrongPassword.ToString()); } user.HashPassword = Protected.CreatePasswordHash(password.NewPassword); Update(user); if (!SaveChanges()) { throw new Exception(EResultMessage.DatabaseError.ToString()); } return(ResultHelper.Succeeded(true, message: EResultMessage.RegistrationDone.ToString())); } catch (Exception e) { return(ResultHelper.Failed <bool>(message: e.Message)); } }
public async Task <Result <bool> > AddUser(RegisterationViewModel userViewModel) { try { var user = new UserEntity { Name = userViewModel.Name, Email = userViewModel.Email, PhoneNumber = userViewModel.PhoneNumber, Address = userViewModel.Address, Type = userViewModel.Type, Picture = userViewModel.Picture, Gender = userViewModel.Gender, }; // Check for Type if (!Enum.IsDefined(typeof(EUserType), userViewModel.Type)) { throw new Exception(EResultMessage.NotUserType.ToString()); } // Add user Typr user.Type = userViewModel.Type; if (userViewModel.Password != userViewModel.RepeatPassword) { throw new Exception(EResultMessage.PasswordNotMatched.ToString()); } // Hash user password user.HashPassword = Protected.CreatePasswordHash(userViewModel.Password); // Add user var result = Add(user); if (result == null) { throw new Exception(EResultMessage.DatabaseError.ToString()); } SaveChanges(); var token = _tokenManager.GenerateUserToken(result).Token; var confirmLink = string.Format("{0}/api/user/confirm-account", _requestAttributes.AppBaseUrl); string body = File.ReadAllText("wwwroot/html/registartion.html"); body = body.Replace("{link-path}", confirmLink); body = body.Replace("{user-name}", user.Name); body = body.Replace("{user-id}", user.Id.ToString()); body = body.Replace("{user-token}", token); await _mailProvider.SendAsync(new MailMessageViewModel { From = MailProvider.SMTP_USER, To = user.Email, IsBodyHtml = true, Body = body, Subject = "Confirm your account on Got It" }); return(ResultHelper.Succeeded(true, message: EResultMessage.RegistrationDone.ToString())); } catch (DuplicateDataException) { return(ResultHelper.Failed(data: false, message: EResultMessage.EmailExists.ToString())); } catch (Exception e) { return(ResultHelper.Failed <bool>(message: e.Message)); } }