public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } var changePasswordResult = await _userManager.ChangePasswordAsync(user, Input.OldPassword, Input.NewPassword); if (!changePasswordResult.Succeeded) { foreach (var error in changePasswordResult.Errors) { ModelState.AddModelError(string.Empty, error.Description); } return(Page()); } await _signInManager.RefreshSignInAsync(user); _logger.LogInformation($"User changed their password successfully (For user with ID '{_userManager.GetUserId(User)}')."); StatusMessage = "گذرواژه شما تغییر کرد."; return(RedirectToPage()); }
public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } var addPasswordResult = await _userManager.AddPasswordAsync(user, Input.NewPassword); if (!addPasswordResult.Succeeded) { foreach (var error in addPasswordResult.Errors) { ModelState.AddModelError(string.Empty, error.Description); } return(Page()); } await _signInManager.RefreshSignInAsync(user); StatusMessage = "گذرواژه ثبت شد."; return(RedirectToPage()); }
public async Task <IActionResult> OnPostAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } var isTwoFactorEnabled = await _userManager.GetTwoFactorEnabledAsync(user); var userId = await _userManager.GetUserIdAsync(user); if (!isTwoFactorEnabled) { throw new InvalidOperationException($"امکان ساخت کد های بازیابی برای کاربر با شناسه '{userId}' وجود نداشت، چراکه احراز هویت دو مرحله ای برای وی فعال نیست."); } var recoveryCodes = await _userManager.GenerateNewTwoFactorRecoveryCodesAsync(user, 10); RecoveryCodes = recoveryCodes.ToArray(); _logger.LogInformation($"برای کاربر با شناسه '{userId}' مجموعه جدیدی از کد های بازیابی ایجاد شد.", userId); StatusMessage = "اکنون کد های بازیابی تازه ای در اختیار دارید."; return(RedirectToPage("./ShowRecoveryCodes")); }
public async Task <IActionResult> OnGetLinkLoginCallbackAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } var info = await _signInManager.GetExternalLoginInfoAsync(await _userManager.GetUserIdAsync(user)); if (info == null) { throw new InvalidOperationException($"خطای پیش بینی نشده در حین بارگذاری اطلاعات ورود خارجی برای کاربر '{user.Id}' پیش آمد."); } var result = await _userManager.AddLoginAsync(user, info); if (!result.Succeeded) { StatusMessage = "ورود خارجی اضافه نشد. امکان استفاده همزمان از یک ورود خارجی، همزمان تنها برای یک حساب کاربری امکان پذیر است."; return(RedirectToPage()); } // Clear the existing external cookie to ensure a clean login process await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme); StatusMessage = "ورود خارجی اضافه شد."; return(RedirectToPage()); }
public async Task <IActionResult> OnPostSetProfileImageAsync(IFormFile image) { var user = await _userManager.GetUserAsync(User); //Invalid UserID if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } if (image == null) { return(RedirectToPage()); } if (!string.IsNullOrEmpty(user.ProfileImagePath)) { _ifileManager.DeleteFile(user.ProfileImagePath); } var avatarPath = $"uploads/avatars/{PersianDateTime.Now.ToString("yyyy/MM/dd/yyyyMMddhhmmss") + DateTime.Now.ToString("ffff") + new Random().Next(1000000, 9999999)}_{WebApp.Helpers.File.ValidateName(image.FileName)}"; await _ifileManager.SaveFile(image, avatarPath); user.ProfileImagePath = $"/{avatarPath}"; var result = await _userManager.UpdateAsync(user); if (!result.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"به روز رسانی تصویر نمایه برای کاربر '{userId}' با خطا مواجه شد.."); } StatusMessage = "تصویر نمایه به روز شد."; return(RedirectToPage()); }
public async Task <IActionResult> OnGet() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } return(Page()); }
public async Task <IActionResult> OnPostAsync() { var user = await _userManager.GetUserAsync(User); //Invalid UserID if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } if (ModelState.IsValid) { var phoneNumber = await _userManager.GetPhoneNumberAsync(user); if (Input.PhoneNumber != phoneNumber) { var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, Input.PhoneNumber.PersianNumberToEnglish()); if (!setPhoneResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"تنظیم شماره تماس برای کاربر '{userId}' با خطا مواجه شد.."); } } user.DisplayName = Input.DisplayName; user.FirstName = Input.FirstName; user.LastName = Input.LastName; user.BirthDate = Input.BirthDate; user.Location = Input.LocationName; var result = await _userManager.UpdateAsync(user); if (!result.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"به روز رسانی نمایه برای کاربر '{userId}' با خطا مواجه شد.."); } await _signInManager.RefreshSignInAsync(user); StatusMessage = "نمایه به روز شد."; return(RedirectToPage()); } //Invalid Model await LoadAsync(user); return(Page()); }
public async Task <IActionResult> OnPost() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } await _signInManager.ForgetTwoFactorClientAsync(); StatusMessage = "مرورگر جاری فراموش شده است. زمان ورود مجدد از طریق این مرورگر مجدداً کد های بازیابی از شما درخواست می شوند."; return(RedirectToPage()); }
public async Task <IActionResult> OnPostAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } if (!ModelState.IsValid) { await LoadSharedKeyAndQrCodeUriAsync(user); return(Page()); } // Strip spaces and hypens var verificationCode = Input.Code.Replace(" ", string.Empty).Replace("-", string.Empty); var is2faTokenValid = await _userManager.VerifyTwoFactorTokenAsync( user, _userManager.Options.Tokens.AuthenticatorTokenProvider, verificationCode); if (!is2faTokenValid) { ModelState.AddModelError("Input.Code", "کد فعال سازی نامعتبر است."); await LoadSharedKeyAndQrCodeUriAsync(user); return(Page()); } await _userManager.SetTwoFactorEnabledAsync(user, true); var userId = await _userManager.GetUserIdAsync(user); _logger.LogInformation($"حساب کاربری با شناسه '{userId}' دارای احراز هویت فعال است.", userId); StatusMessage = "نرم افزار احراز هویت شما فعال شد."; if (await _userManager.CountRecoveryCodesAsync(user) == 0) { var recoveryCodes = await _userManager.GenerateNewTwoFactorRecoveryCodesAsync(user, 10); RecoveryCodes = recoveryCodes.ToArray(); return(RedirectToPage("./ShowRecoveryCodes")); } else { return(RedirectToPage("./TwoFactorAuthentication")); } }
public async Task <IActionResult> OnGet() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } if (!await _userManager.GetTwoFactorEnabledAsync(user)) { throw new InvalidOperationException($"غیرفعال سازی احراز هویت دو مرحله ای برای کاربر یا شناسه '{_userManager.GetUserId(User)}' ممکن نبود. چرا که اینک احراز هویت دو مرحله ای برای ایشان فعال نیست."); } return(Page()); }
public async Task <IActionResult> OnGetAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } CurrentLogins = await _userManager.GetLoginsAsync(user); OtherLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()) .Where(auth => CurrentLogins.All(ul => auth.Name != ul.LoginProvider)) .ToList(); ShowRemoveButton = user.PasswordHash != null || CurrentLogins.Count > 1; return(Page()); }
public async Task <IActionResult> OnGetAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } var hasPassword = await _userManager.HasPasswordAsync(user); if (!hasPassword) { return(RedirectToPage("./SetPassword")); } return(Page()); }
public async Task <IActionResult> OnPostChangeEmailAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } if (!ModelState.IsValid) { await LoadAsync(user); return(Page()); } var email = await _userManager.GetEmailAsync(user); if (Input.NewEmail != email) { var userId = await _userManager.GetUserIdAsync(user); var code = await _userManager.GenerateChangeEmailTokenAsync(user, Input.NewEmail); var callbackUrl = Url.Page( "/Account/ConfirmEmailChange", pageHandler: null, values: new { userId = userId, email = Input.NewEmail, code = code }, protocol: Request.Scheme); await _emailSender.SendAsync( from : WeblogApp.Helpers.EmailTypes.NoReply, to : Input.NewEmail, subject : "تایید رایانامه", body : $"لطفاً حساب کاربری خود را با <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>کلیک روی نشانی</a> تایید کنید.", isBodyHtml : true); StatusMessage = "نشانی تاییدیه به رایانامه ارسال شد. لطفاً رایانامه خود را بررسی کنید."; return(RedirectToPage()); } StatusMessage = "رایانامه شما تغییر نکرد."; return(RedirectToPage()); }
public async Task <IActionResult> OnGet() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } HasAuthenticator = await _userManager.GetAuthenticatorKeyAsync(user) != null; Is2faEnabled = await _userManager.GetTwoFactorEnabledAsync(user); IsMachineRemembered = await _signInManager.IsTwoFactorClientRememberedAsync(user); RecoveryCodesLeft = await _userManager.CountRecoveryCodesAsync(user); return(Page()); }
public async Task <IActionResult> OnGetAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } var isTwoFactorEnabled = await _userManager.GetTwoFactorEnabledAsync(user); if (!isTwoFactorEnabled) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"امکان ساخت کد های بازیابی برای کاربر با شناسه '{userId}' وجود نداشت، چراکه احراز هویت دو مرحله ای برای وی فعال نیست."); } return(Page()); }
public async Task <IActionResult> OnGetAsync(string userId, string code) { if (userId == null || code == null) { return(RedirectToPage("/Index")); } var user = await _userManager.FindByIdAsync(userId); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code)); var result = await _userManager.ConfirmEmailAsync(user, code); StatusMessage = result.Succeeded ? "رایانامه شما با موفقیت تایید شد." : "در تایید رایانامه خطایی پیش آمد."; return(Page()); }
public async Task <IActionResult> OnPostAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } var disable2faResult = await _userManager.SetTwoFactorEnabledAsync(user, false); if (!disable2faResult.Succeeded) { throw new InvalidOperationException($"مواجهه با خطای پیش بینی نشده در حین غیرفعال سازی احراز هویت دو مرحله ای برای کاربر با شناسه '{_userManager.GetUserId(User)}'."); } _logger.LogInformation($"احراز هویت دو مرحله ای برای کاربر با شناسه '{_userManager.GetUserId(User)}' غیر فعال است."); StatusMessage = "احراز هویت دومرحله ای غیرفعال شد. شما میتوانید با تنظیم مجدد اقدام به فعال سازی دوباره کنید."; return(RedirectToPage("./TwoFactorAuthentication")); }
public async Task <IActionResult> OnPostAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } await _userManager.SetTwoFactorEnabledAsync(user, false); await _userManager.ResetAuthenticatorKeyAsync(user); _logger.LogInformation($"کاربر با شناسه '{user.Id}' اقدام به تنظیم مجدد کلید نرم افزار احراز هویت کرد."); await _signInManager.RefreshSignInAsync(user); StatusMessage = "کلید احراز هویت نرم افزار دوباره تنظیم شد. به تنظیم مجدد نرم افزار با کلید جدید اقدام کنید."; return(RedirectToPage("./EnableAuthenticator")); }
public async Task <IActionResult> OnPostRemoveLoginAsync(string loginProvider, string providerKey) { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } var result = await _userManager.RemoveLoginAsync(user, loginProvider, providerKey); if (!result.Succeeded) { StatusMessage = $"ورود خارجی برای کاربر با شناسه '{_userManager.GetUserId(User)}' حذف شد."; return(RedirectToPage()); } await _signInManager.RefreshSignInAsync(user); StatusMessage = $"ورود خارجی برای کاربر با شناسه '{_userManager.GetUserId(User)}' حذف نشد."; return(RedirectToPage()); }
public async Task <IActionResult> OnPostSendVerificationEmailAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } if (!ModelState.IsValid) { await LoadAsync(user); return(Page()); } var userId = await _userManager.GetUserIdAsync(user); var email = await _userManager.GetEmailAsync(user); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = userId, code = code }, protocol: Request.Scheme); await _emailSender.SendAsync( from : WebApp.Helpers.EmailTypes.NoReply, to : Input.NewEmail, subject : "تایید رایانامه", body : $"لطفاً حساب کاربری خود را با <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>کلیک روی نشانی</a> تایید کنید.", isBodyHtml : true); StatusMessage = "رایانامه تاییدیه ارسال شد. لطفاً رایانامه خود را بررسی کنید."; return(RedirectToPage()); }
public async Task <IActionResult> OnPostAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } RequirePassword = await _userManager.HasPasswordAsync(user); if (RequirePassword) { if (!await _userManager.CheckPasswordAsync(user, Input.Password)) { ModelState.AddModelError(string.Empty, "گذرواژه اشتباه است."); return(Page()); } } var result = await _userManager.DeleteAsync(user); var userId = await _userManager.GetUserIdAsync(user); if (!result.Succeeded) { throw new InvalidOperationException($"خطای پیش بینی نشده حین حذف کاربر '{userId}' پیش آمد."); } //Delete User's Profile Image _ifileManager.DeleteFile(user.ProfileImagePath); await _signInManager.SignOutAsync(); _logger.LogInformation($"User with ID '{userId}' deleted themselves."); return(Redirect("~/")); }
public async Task <IActionResult> OnGetAsync(string userId, string email, string code) { if (userId == null || email == null || code == null) { return(RedirectToPage("/Index")); } var user = await _userManager.FindByIdAsync(userId); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code)); var result = await _userManager.ChangeEmailAsync(user, email, code); if (!result.Succeeded) { StatusMessage = "در تغییر رایانامه خطایی پیش آمد."; return(Page()); } // In our UI email and user name are one and the same, so when we update the email // we need to update the user name. var setUserNameResult = await _userManager.SetUserNameAsync(user, email); if (!setUserNameResult.Succeeded) { StatusMessage = "در تغییر نام کاربری خطایی پیش آمد."; return(Page()); } await _signInManager.RefreshSignInAsync(user); StatusMessage = "رایانامه شما با موفقیت تایید شد."; return(Page()); }
public async Task <IActionResult> OnPostAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound(Describer.UnableToLoadUser(_userManager.GetUserId(User), Language.English))); } _logger.LogInformation($"User with ID '{_userManager.GetUserId(User)}' asked for their personal data."); // Only include personal data for download var personalData = new Dictionary <string, string>(); var personalDataProps = typeof(ApplicationUser).GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(PersonalDataAttribute))); foreach (var p in personalDataProps) { personalData.Add(p.Name, p.GetValue(user)?.ToString() ?? "null"); } Response.Headers.Add("Content-Disposition", "attachment; filename=PersonalData.json"); return(new FileContentResult(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(personalData)), "text/json")); }