public async Task <User?> UpdateUser(AdminUpdateUserModel updateUserModel) { if (string.IsNullOrEmpty(updateUserModel?.UserToUpdateCurrentUsername) || string.IsNullOrEmpty(updateUserModel?.UserToUpdateNewUsername) || string.IsNullOrEmpty(updateUserModel?.UserToUpdateNewPassword)) { return(null); } byte[] hashedPassword; byte[] passwordSalt; CreatePasswordHash(updateUserModel.UserToUpdateNewPassword, out hashedPassword, out passwordSalt); var dbUpdateUserModel = new DbUpdateUserModel { UserToUpdateCurrentUsername = updateUserModel.UserToUpdateCurrentUsername, UserToUpdateNewUsername = updateUserModel.UserToUpdateNewUsername, Password = hashedPassword, PasswordSalt = passwordSalt }; var createdUser = await _userRepository.UpdateUser(dbUpdateUserModel).ConfigureAwait(false); if (createdUser == null) { return(null); } return(new User { Id = createdUser.Id, Username = createdUser.Username, Token = CreateJwt($"{createdUser.Id}") }); }
// api/admin/updateuser/{id}?sessionKey={sessionKey} public HttpResponseMessage UpdateUser([FromBody] AdminUpdateUserModel userToUpdate, string sessionKey, int id) { var response = this.PerformOperationAndHandleExceptions(() => { this.CheckIfUserIsAdmin(sessionKey); var user = (from currentUser in context.Users where currentUser.Id == id select currentUser).FirstOrDefault(); if (user == null) { throw new ArgumentException("User not found!"); } user.Username = userToUpdate.Username ?? user.Username; user.Nickname = userToUpdate.Nickname ?? user.Nickname; user.WebSite = userToUpdate.WebSite ?? user.WebSite; user.Gender = userToUpdate.Gender == Gender.Unknown ? user.Gender : userToUpdate.Gender; user.Hometown = userToUpdate.Hometown ?? user.Hometown; user.Birthday = userToUpdate.Birthday ?? user.Birthday; user.Email = userToUpdate.Email ?? user.Email; user.Occupation = userToUpdate.Occupation ?? user.Occupation; user.AboutMe = userToUpdate.AboutMe ?? user.AboutMe; if (user.UserType != UserType.Admin && userToUpdate.UserType == UserType.Admin) { user.UserType = UserType.Admin; } else if (user.UserType == UserType.Regular && userToUpdate.UserType == UserType.Lecturer) { user.UserType = UserType.Lecturer; } context.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Accepted)); }); return(response); }