public void Update(UnifiedUserDto userParam, string password = null) { var user = _context.Users.Find(userParam.UserId); if (user == null) { throw new AppException("User not found"); } if (userParam.UserName != user.UserName) { // UserName has changed so check if the new UserName is already taken if (_context.Users.Any(x => x.UserName == userParam.UserName)) { throw new AppException("UserName " + userParam.UserName + " is already taken"); } } // update user properties user.UserName = userParam.UserName; user.FirstName = userParam.FirstName; user.LastName = userParam.LastName; user.Email = userParam.Email; // update password if it was entered if (!string.IsNullOrWhiteSpace(password)) { byte[] passwordHash, passwordSalt; CreatePasswordHash(password, out passwordHash, out passwordSalt); user.PasswordHash = passwordHash; user.PasswordSalt = passwordSalt; } _context.Users.Update(user); _context.SaveChanges(); }
public UnifiedUserDto Create(UnifiedUserDto user, string password) { // validation if (string.IsNullOrWhiteSpace(password)) { throw new AppException("Password is required"); } if (_context.Users.Any(x => x.UserName == user.UserName)) { throw new AppException("UserName \"" + user.UserName + "\" is already taken"); } byte[] passwordHash, passwordSalt; CreatePasswordHash(password, out passwordHash, out passwordSalt); user.PasswordHash = passwordHash; user.PasswordSalt = passwordSalt; _context.Users.Add(user); _context.SaveChanges(); return(user); }