/// <summary> /// Updates a user's password /// </summary> /// <param name="emailAddress">Email Address of the user who's password is to be updated.</param> /// <param name="password">New password of the user</param> public void UpdatePassword(string emailAddress, string password) { var user = GetUserByEmail(emailAddress); if (user == null) { throw new ArgumentException($"Change Password - no user found for email address specified: {emailAddress}"); } var currentPassword = _passwordRepository.GetById(user.BusinessEntityId); var salt = HashGenerator.CreateSalt(); currentPassword.PasswordSalt = salt; currentPassword.PasswordHash = HashGenerator.GenerateHash(password, salt); _passwordRepository.Update(currentPassword); }
private void InsertUser() { if (_context.People.Any()) { return; } var businessEntity = new BusinessEntity(); _context.BusinessEntities.Add(businessEntity); _context.SaveChanges(); var person = new Person() { BusinessEntityId = businessEntity.BusinessEntityId, FirstName = "Default", MiddleName = string.Empty, LastName = "Admin", DisplayName = "Default Admin", Username = "******", EmailAddress = "*****@*****.**", About = string.Empty, Website = string.Empty, DateCreatedUtc = DateTime.UtcNow, DateModifiedUtc = DateTime.UtcNow, DateLastLoginUtc = DateTime.UtcNow, Avatar = $"data:image/png;base64,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" }; _context.People.Add(person); _context.SaveChanges(); const string plainTextPassword = "******"; var passwordSalt = HashGenerator.CreateSalt(); var passwordHash = HashGenerator.GenerateHash(plainTextPassword, passwordSalt); var password = new Password() { PasswordHash = passwordHash, PasswordSalt = passwordSalt, BusinessEntityId = person.BusinessEntityId }; _context.Passwords.Add(password); _context.SaveChanges(); }
public async Task <bool> CreateUser(CreateUserEntity obj) { try { var salt = HashGenerator.CreateSalt(); var newUser = new User() { UserName = obj.UserName, FirstName = obj.FirstName, LastName = obj.LastName, MiddleName = obj.MiddleName, Email = obj.Email, Mobile = obj.Mobile, CreatedBy = "Admin", CreatedDate = DateTime.Now, IsActive = true, PasswordHash = HashGenerator.CreateHashPassword(obj.Password, salt), Salt = salt }; _context.Users.Add(newUser); var res = _context.SaveChanges(); if (res > 0) { return(true); } else { return(false); } } catch (Exception ex) { return(false); } }
/// <summary> /// Register a new user (person) /// </summary> /// <param name="person">Person object to register</param> /// <param name="password">Password for the new user in plain text</param> /// <returns></returns> public UserRegistrationResult Register(Person person, string password) { if (person == null) { throw new ArgumentException("Person object cannot be null.", nameof(person)); } var result = new UserRegistrationResult(); if (_userService.CheckIfUserExistsByEmail(person.EmailAddress)) { result.AddError("A user already exists with the specified email address."); } if (person.Username.Length < 4) { result.AddError("Username must be at least 4 characters long."); } var usernameNumber = 0; if (int.TryParse(person.Username, out usernameNumber)) { result.AddError("Username cannot be numeric."); } if (string.IsNullOrEmpty(person.EmailAddress)) { result.AddError("Email Address is not provided."); } if (!CommonHelper.IsValidEmail(person.EmailAddress)) { result.AddError("Invalid Email Address specfied."); } if (string.IsNullOrEmpty(password)) { result.AddError("A password is required."); } if (string.IsNullOrEmpty(person.Username)) { result.AddError("Please enter a username."); } if (_userService.CheckIfUserExistsByUsername(person.Username)) { result.AddError("The username is not available."); } if (person.Username.Length > 50) { result.AddError("The username cannot exceed 50 characters."); } if (!result.Success) { return(result); } // If we made it this far, then the information provided is valid. We can proceed now. var businessEntity = new BusinessEntity(); _businessEntityRepository.Create(businessEntity); var user = new Person() { BusinessEntityId = businessEntity.BusinessEntityId, FirstName = person.FirstName, MiddleName = person.MiddleName, LastName = person.LastName, DisplayName = $"{person.FirstName} {person.LastName}", About = person.About, Username = person.Username, EmailAddress = person.EmailAddress, Website = person.Website, IsDeleted = false, IsBlocked = false, IsEmailVerified = false, DateCreatedUtc = DateTime.UtcNow, DateModifiedUtc = DateTime.UtcNow, DateLastLoginUtc = DateTime.UtcNow }; _peopleRepository.Create(user); var salt = HashGenerator.CreateSalt(); var passwordSet = new Password() { BusinessEntityId = businessEntity.BusinessEntityId, PasswordSalt = salt, PasswordHash = HashGenerator.GenerateHash(password, salt) }; _passwordRepository.Create(passwordSet); return(result); }