public async Task<JsonResult> ChangePassword(ChangePasswordAddressModel model) { var accessToken = await _dbContext .AccessToken .SingleOrDefaultAsync(t => t.Value == model.AccessToken); var targetUser = await _dbContext.Users.FindAsync(model.OpenId); var app = await _developerApiService.AppInfoAsync(accessToken.ApplyAppId); if (!_dbContext.LocalAppGrant.Exists(t => t.AppID == accessToken.ApplyAppId && t.APIUserId == targetUser.Id)) { return Json(new AiurProtocal { Code = ErrorType.Unauthorized, Message = "This user did not grant your app!" }); } if (!app.App.ChangePassword) { return this.Protocal(ErrorType.Unauthorized, "You app is not allowed to change users' password."); } var result = await _userManager.ChangePasswordAsync(targetUser, model.OldPassword, model.NewPassword); await _userManager.UpdateAsync(targetUser); if (result.Succeeded) { return Json(new AiurProtocal { Code = ErrorType.Success, Message = "Successfully changed this user's password!" }); } else { return Json(new AiurProtocal { Code = ErrorType.WrongKey, Message = result.Errors.First().Description }); } }
public async Task <IActionResult> ChangePassword(ChangePasswordAddressModel model) { var currentUser = await GetKahlaUser(); await _userService.ChangePasswordAsync(currentUser.Id, await _appsContainer.AccessToken(), model.OldPassword, model.NewPassword); return(this.Protocol(ErrorType.Success, "Successfully changed your password!")); }
public async Task<JsonResult> ChangePassword(ChangePasswordAddressModel model) { var user = await _grantChecker.EnsureGranted(model.AccessToken, model.OpenId, t => t.ChangePassword); var result = await _userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword); await _userManager.UpdateAsync(user); if (result.Succeeded) { return Json(new AiurProtocol { Code = ErrorType.Success, Message = "Successfully changed your password!" }); } else { return Json(new AiurProtocol { Code = ErrorType.WrongKey, Message = result.Errors.First().Description }); } }