public async Task <IActionResult> OnPostAsync() { ModelState.Remove("InputRandomCode"); if (ModelState.IsValid) { var LodgerUser = await _userManager.GetUserAsync(User); UserRevert ur = new UserRevert() { UserRevertId = Guid.NewGuid().ToString(), FullName = LodgerUser.FullName, Gender = LodgerUser.Gender, AlternateEmail = LodgerUser.AlternateEmail, Country = LodgerUser.Country, City = LodgerUser.City, Occupation = LodgerUser.Occupation, Address = LodgerUser.Address, GovernmentID = LodgerUser.GovernmentID, Status = LodgerUser.Status, Biography = LodgerUser.Biography, Hobbies = LodgerUser.Hobbies, Email = LodgerUser.Email, PasswordHash = LodgerUser.PasswordHash, PhoneNumber = LodgerUser.PhoneNumber, PhoneNumberConfirmed = LodgerUser.PhoneNumberConfirmed, is3AuthEnabled = LodgerUser.is3AuthEnabled }; var phoneNumber = await _userManager.GetPhoneNumberAsync(LodgerUser); if (!(InputMobileNumber.Equals(phoneNumber))) { HttpContext.Session.SetString("MobileNumber", "65" + InputMobileNumber); Random randObj = new Random(); string verificationCode = randObj.Next(999999).ToString(); HttpContext.Session.SetString("RandomCode", verificationCode); if (!(_smsSender.SendSms("65" + InputMobileNumber, $"Your Verification Code for InfiniteLodging is {verificationCode}"))) { HttpContext.Session.Remove("MobileNumber"); StatusMessage = "Verification Code Sent!"; hasSentVerificationCode = true; return(Page()); } } StatusMessage = "Changes have been updated successfully!"; AuditRecord auditRecord = new AuditRecord(); auditRecord.AuditActionType = "Changed Phone Number"; auditRecord.AuditRecordId = Guid.NewGuid().ToString(); auditRecord.DateTimeStamp = DateTime.Now; auditRecord.PerformedBy = LodgerUser; auditRecord.IPAddress = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); ur.AuditRecord = auditRecord; _context.UserReverts.Add(ur); await _context.SaveChangesAsync(); return(Page()); } return(Page()); }
public async Task <IActionResult> OnPostRevertChangesAsync() { if (!(ModelState.IsValid)) { return(Page()); } AuditRecord usingAuditRecord = _context.AuditRecords.First(ar => (ar.AuditRecordId == auditRecordId)); if (usingAuditRecord == null) { ModelState.AddModelError("Error!", "Audit Record Not Found!"); return(Page()); } Lodger cu = _context.Users.First(u => (u.Id == usingAuditRecord.PerformedBy.Id)); if (!(cu is Lodger)) { ModelState.AddModelError("Error!", "User Not Found!"); return(Page()); } UserRevert rt = _context.UserReverts.First(ur => (ur.AuditRecord.AuditRecordId == usingAuditRecord.AuditRecordId)); if (rt == null) { ModelState.AddModelError("Error!", "Revert Backup not found!"); return(Page()); } cu.FullName = rt.FullName; cu.Gender = rt.Gender; cu.AlternateEmail = rt.AlternateEmail; cu.Country = rt.Country; cu.City = rt.City; cu.Occupation = rt.Occupation; cu.Address = rt.Address; cu.GovernmentID = rt.GovernmentID; cu.Status = rt.Status; cu.Biography = rt.Biography; cu.Hobbies = rt.Hobbies; cu.Email = rt.Email; cu.PasswordHash = rt.PasswordHash; cu.PhoneNumber = rt.PhoneNumber; cu.PhoneNumberConfirmed = rt.PhoneNumberConfirmed; cu.is3AuthEnabled = rt.is3AuthEnabled; await _context.SaveChangesAsync(); return(RedirectToPage()); }
public async Task <IActionResult> OnPostDisable3AuthAsync() { var LodgerUser = await _userManager.GetUserAsync(User); UserRevert ur = new UserRevert() { UserRevertId = Guid.NewGuid().ToString(), FullName = LodgerUser.FullName, Gender = LodgerUser.Gender, AlternateEmail = LodgerUser.AlternateEmail, Country = LodgerUser.Country, City = LodgerUser.City, Occupation = LodgerUser.Occupation, Address = LodgerUser.Address, GovernmentID = LodgerUser.GovernmentID, Status = LodgerUser.Status, Biography = LodgerUser.Biography, Hobbies = LodgerUser.Hobbies, Email = LodgerUser.Email, PasswordHash = LodgerUser.PasswordHash, PhoneNumber = LodgerUser.PhoneNumber, PhoneNumberConfirmed = LodgerUser.PhoneNumberConfirmed, is3AuthEnabled = LodgerUser.is3AuthEnabled }; if (LodgerUser.is3AuthEnabled == "True") { LodgerUser.is3AuthEnabled = "False"; LodgerUser.is3AuthPattern = ""; await _dbContext.SaveChangesAsync(); StatusMessage = "Profile changes updated successfully!"; } AuditRecord auditRecord = new AuditRecord(); auditRecord.AuditActionType = "Disabled 3-Factor-Authentication"; auditRecord.AuditRecordId = Guid.NewGuid().ToString(); auditRecord.DateTimeStamp = DateTime.Now; auditRecord.PerformedBy = LodgerUser; auditRecord.IPAddress = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); ur.AuditRecord = auditRecord; _dbContext.UserReverts.Add(ur); await _dbContext.SaveChangesAsync(); return(Page()); }
public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } var LodgerUser = await _userManager.GetUserAsync(User); if (LodgerUser == null) { return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.")); } UserRevert ur = new UserRevert() { UserRevertId = Guid.NewGuid().ToString(), FullName = LodgerUser.FullName, Gender = LodgerUser.Gender, AlternateEmail = LodgerUser.AlternateEmail, Country = LodgerUser.Country, City = LodgerUser.City, Occupation = LodgerUser.Occupation, Address = LodgerUser.Address, GovernmentID = LodgerUser.GovernmentID, Status = LodgerUser.Status, Biography = LodgerUser.Biography, Hobbies = LodgerUser.Hobbies, Email = LodgerUser.Email, PasswordHash = LodgerUser.PasswordHash, PhoneNumber = LodgerUser.PhoneNumber, PhoneNumberConfirmed = LodgerUser.PhoneNumberConfirmed, is3AuthEnabled = LodgerUser.is3AuthEnabled }; var changePasswordResult = await _userManager.ChangePasswordAsync(LodgerUser, Input.OldPassword, Input.NewPassword); if (!changePasswordResult.Succeeded) { foreach (var error in changePasswordResult.Errors) { ModelState.AddModelError(string.Empty, error.Description); } return(Page()); } AuditRecord auditRecord = new AuditRecord(); auditRecord.AuditActionType = "Changed Password"; auditRecord.AuditRecordId = Guid.NewGuid().ToString(); auditRecord.DateTimeStamp = DateTime.Now; auditRecord.PerformedBy = LodgerUser; auditRecord.IPAddress = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); ur.AuditRecord = auditRecord; _context.UserReverts.Add(ur); await _context.SaveChangesAsync(); await _signInManager.RefreshSignInAsync(LodgerUser); _logger.LogInformation("User changed their password successfully."); StatusMessage = "Your password has been changed."; return(RedirectToPage()); }
public async Task <IActionResult> OnPostAsync() { LodgerUser = await _userManager.GetUserAsync(User); if (!(string.IsNullOrEmpty(LodgerUser.GovernmentID))) { ModelState.Remove("GovernmentID"); // remove governmentId req if already have } UserRevert ur = new UserRevert() { UserRevertId = Guid.NewGuid().ToString(), FullName = LodgerUser.FullName, Gender = LodgerUser.Gender, AlternateEmail = LodgerUser.AlternateEmail, Country = LodgerUser.Country, City = LodgerUser.City, Occupation = LodgerUser.Occupation, Address = LodgerUser.Address, GovernmentID = LodgerUser.GovernmentID, Status = LodgerUser.Status, Biography = LodgerUser.Biography, Hobbies = LodgerUser.Hobbies, Email = LodgerUser.Email, PasswordHash = LodgerUser.PasswordHash, PhoneNumber = LodgerUser.PhoneNumber, PhoneNumberConfirmed = LodgerUser.PhoneNumberConfirmed, is3AuthEnabled = LodgerUser.is3AuthEnabled }; if (!ModelState.IsValid) { return(Page()); } if (UserInput.ProfilePicture != null) { VirusReport vr = await ScanForVirus(UserInput.ProfilePicture); if (vr.Positives > 0) { ModelState.AddModelError("ProfilePictureFailedVirusCheck", "ProfilePicture failed virus scan!"); ModelState.AddModelError("ProfilePictureReportLink", vr.ReportLink); return(Page()); } if (!(checkPictureHeader(UserInput.ProfilePicture))) { ModelState.AddModelError("ProfilePicInvalid", "Invalid file format for Profile Picture (Only .jpg/.jpeg/.png are accepted!)"); return(Page()); } var filename = Guid.NewGuid().ToString() + Path.GetExtension(UserInput.ProfilePicture.FileName); if (!(string.IsNullOrEmpty(LodgerUser.ProfilePic))) { var CurrentProfilePicture = LodgerUser.ProfilePic; System.IO.File.Delete(Path.Combine(_environment.ContentRootPath, "wwwroot", "profile-images", CurrentProfilePicture)); } LodgerUser.ProfilePic = filename; var file = Path.Combine(_environment.ContentRootPath, "wwwroot", "profile-images", filename); using (var fileStream = new FileStream(file, FileMode.Create)) { await UserInput.ProfilePicture.CopyToAsync(fileStream); } } LodgerUser.FullName = (UserInput.FullName == LodgerUser.FullName) ? LodgerUser.FullName : UserInput.FullName; List <string> toCheck = new List <string>() { "Male", "Female", "Other" }; if (toCheck.Contains(UserInput.Gender)) { LodgerUser.Gender = (LodgerUser.Gender == UserInput.Gender) ? LodgerUser.Gender : UserInput.Gender; } else { ModelState.AddModelError("Invalid Gender", "Invalid Gender!"); return(Page()); } LodgerUser.Biography = (LodgerUser.Biography == UserInput.Biography) ? LodgerUser.Biography : UserInput.Biography; LodgerUser.AlternateEmail = (LodgerUser.AlternateEmail == UserInput.AlternateEmail) ? LodgerUser.AlternateEmail : UserInput.AlternateEmail; LodgerUser.Country = (LodgerUser.Country == UserInput.Country) ? LodgerUser.Country : UserInput.Country; LodgerUser.City = (LodgerUser.City == UserInput.City) ? LodgerUser.City : UserInput.City; LodgerUser.Address = (LodgerUser.Address == _protector.Protect(UserInput.Address)) ? LodgerUser.Address : _protector.Protect(UserInput.Address); LodgerUser.Occupation = (LodgerUser.Occupation == _protector.Protect(UserInput.Occupation)) ? LodgerUser.Occupation : _protector.Protect(UserInput.Occupation); LodgerUser.Hobbies = (LodgerUser.Hobbies == UserInput.Hobbies) ? LodgerUser.Hobbies : UserInput.Hobbies; LodgerUser.Status = (LodgerUser.Status == UserInput.Status) ? LodgerUser.Status : UserInput.Status; if (UserInput.GovernmentID != null) { VirusReport vr2 = await ScanForVirus(UserInput.GovernmentID); if (vr2.Positives > 0) { ModelState.AddModelError("GovernmentIDFailedVirusCheck", "GovernmentID failed virus scan!"); ModelState.AddModelError("GovernmentIDReportLink", vr2.ReportLink); return(Page()); } if (!(checkPictureHeader(UserInput.GovernmentID))) { ModelState.AddModelError("GovernmentIDPhoto", "Invalid file format for GovernmentID (Only .jpg/.jpeg/.png are accepted!)"); return(Page()); } var gFileName = Guid.NewGuid().ToString() + Path.GetExtension(UserInput.GovernmentID.FileName); if (!(string.IsNullOrEmpty(LodgerUser.GovernmentID))) { var CurrentGovernmentID = LodgerUser.GovernmentID; System.IO.File.Delete(Path.Combine(_environment.ContentRootPath, "wwwroot", "government-ids", CurrentGovernmentID)); } LodgerUser.GovernmentID = _protector.Protect(gFileName); var gFile = Path.Combine(_environment.ContentRootPath, "wwwroot", "government-ids", gFileName); using (var fileStream = new FileStream(gFile, FileMode.Create)) { await UserInput.GovernmentID.CopyToAsync(fileStream); } } if (await _context.SaveChangesAsync() > 0) { AuditRecord auditRecord = new AuditRecord(); auditRecord.AuditRecordId = Guid.NewGuid().ToString(); auditRecord.AuditActionType = "Edit Profile"; auditRecord.PerformedBy = LodgerUser; auditRecord.DateTimeStamp = DateTime.Now; auditRecord.IPAddress = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); _context.AuditRecords.Add(auditRecord); ur.AuditRecord = auditRecord; _context.UserReverts.Add(ur); await _context.SaveChangesAsync(); } alertMessage = "User Profile Updated Successfully"; return(Page()); }
public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } Lodger LodgerUser = await _userManager.GetUserAsync(User); if (LodgerUser == null) { return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.")); } UserRevert ur = new UserRevert() { UserRevertId = Guid.NewGuid().ToString(), FullName = LodgerUser.FullName, Gender = LodgerUser.Gender, AlternateEmail = LodgerUser.AlternateEmail, Country = LodgerUser.Country, City = LodgerUser.City, Occupation = LodgerUser.Occupation, Address = LodgerUser.Address, GovernmentID = LodgerUser.GovernmentID, Status = LodgerUser.Status, Biography = LodgerUser.Biography, Hobbies = LodgerUser.Hobbies, Email = LodgerUser.Email, PasswordHash = LodgerUser.PasswordHash, PhoneNumber = LodgerUser.PhoneNumber, PhoneNumberConfirmed = LodgerUser.PhoneNumberConfirmed, is3AuthEnabled = LodgerUser.is3AuthEnabled }; var email = await _userManager.GetEmailAsync(LodgerUser); if (Input.Email != email) { //var setEmailResult = await _userManager.SetEmailAsync(user, Input.Email); LodgerUser.EmailConfirmed = false; var userId = await _userManager.GetUserIdAsync(LodgerUser); var code = await _userManager.GenerateChangeEmailTokenAsync(LodgerUser, Input.Email); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { userId = userId, code = code, newEmail = Input.Email }, protocol: Request.Scheme); await _emailSender.SendEmailAsync( Input.Email, "Confirm your email", $"<div style=width: 70%; margin: 0 auto;'><p><img style='display: block; margin-left: auto; margin-right: auto;' src='https://image.ibb.co/dyXbEy/test.png' alt='Infinite Lodging' width='198' height='94' /></p><h3 style='text-align: center;'>For security reasons, please verify your new email address.</h3><p style='text-align: center;'><a href='{HtmlEncoder.Default.Encode(callbackUrl)}'><img src='https://image.ibb.co/gEX9mo/Logo_Makr_0k_Wnu_O.png' alt='Confirm Email' width='344' height='43' /></a></p><p style='text-align: center;'> </p><span style='color: #808080; font-size: small;'><em>This message was sent to {Input.Email}. You are receiving this because you're a ∞Lodging member, or you've signed up to receive email from us. Manage your preferences or unsubscribe. </em></span></div>"); userAlertMessage = "Please verify your new email address before logging in!"; AuditRecord auditRecord = new AuditRecord(); auditRecord.AuditActionType = "Changed Email"; auditRecord.AuditRecordId = Guid.NewGuid().ToString(); auditRecord.DateTimeStamp = DateTime.Now; auditRecord.PerformedBy = LodgerUser; auditRecord.IPAddress = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); ur.AuditRecord = auditRecord; _context.UserReverts.Add(ur); await _context.SaveChangesAsync(); await _context.SaveChangesAsync(); await _signInManager.SignOutAsync(); return(RedirectToPage("/Index", new { area = "" })); //if (!setEmailResult.Succeeded) //{ // var userId = await _userManager.GetUserIdAsync(user); // throw new InvalidOperationException($"Unexpected error occurred setting email for user with ID '{userId}'."); //} } //var phoneNumber = await _userManager.GetPhoneNumberAsync(user); //if (Input.PhoneNumber != phoneNumber) //{ // var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, Input.PhoneNumber); // if (!setPhoneResult.Succeeded) // { // var userId = await _userManager.GetUserIdAsync(user); // throw new InvalidOperationException($"Unexpected error occurred setting phone number for user with ID '{userId}'."); // } //} await _signInManager.RefreshSignInAsync(LodgerUser); StatusMessage = "Your profile has been updated"; return(RedirectToPage()); }