public async Task EnsureSeedDataAsync() { var userFound = await m_userManager.FindByEmailAsync("*****@*****.**"); if (userFound == null) { var newUser = new ChirpUser() { UserName = "******", Email = "*****@*****.**" }; var userRes = await m_userManager.CreateAsync(newUser, "qwertyui"); } m_context.SaveChanges(); if (!m_context.ChirpPosts.Any()) { //Add new data var chirpPost = new ChirpPost() { Message = "First message! ChirpChirp!", PostTime = DateTimeOffset.UtcNow, User = await m_userManager.FindByEmailAsync("*****@*****.**") }; m_context.ChirpPosts.Add(chirpPost); m_context.SaveChanges(); } }
public IActionResult Post(DtoUserRegister dto) { if (_db.Users.UserExists(dto.Username)) { ModelState.AddModelError("Username", "This username is already taken"); } if (dto.Password != dto.PasswordConfirm) { ModelState.AddModelError("PasswordConfirm", "The password and the confirmation password do not match"); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = new ChirpUser { Username = dto.Username, Password = _passwordHasher.HashPassword(dto.Password) }; _db.Users.Add(user); _db.SaveChanges(); return(Ok(user.Id)); }
public async Task SendConfirmationEmail(ChirpUser a_user) { var code = await m_userManager.GenerateEmailConfirmationTokenAsync(a_user); var callbackUrl = Url.Action("EmailConfirmed", "Auth", new { userId = a_user.Id, code = code }, protocol: HttpContext.Request.Scheme); var emailBody = $"Please confirm your account by clicking this link: <br/> <a href=\"{callbackUrl}\"> {callbackUrl} </a>"; await m_emailSender.SendEmailAsync(a_user.Email, "Confirm your account", emailBody); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl ??= Url.Content("~/"); ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (ModelState.IsValid) { var user = new ChirpUser { Username = Input.Username }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); /* * 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 = user.Id, code = code, returnUrl = returnUrl }, * protocol: Request.Scheme); * * await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", * $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); * * if (_userManager.Options.SignIn.RequireConfirmedAccount) * { * return RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl }); * } * else * { * await _signInManager.SignInAsync(user, isPersistent: false); * return LocalRedirect(returnUrl); * } */ await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(Page()); }
public async Task <JsonResult> Post([FromBody] SignupViewModel vm, string returnUrl) { if (!ModelState.IsValid) { return(Json(new { error = "Unknown sign up error." })); } if (vm.Password != vm.ConfirmPassword) { return(Json(new { error = "The passwords you entered did not match." })); } var userFound = await m_userManager.FindByNameAsync(vm.Username); if (userFound != null) { return(Json(new { error = "This username is already in use." })); } userFound = await m_userManager.FindByEmailAsync(vm.Email); if (userFound != null) { return(Json(new { error = "This email address is already in use." })); } var newUser = new ChirpUser() { UserName = vm.Username, Email = vm.Email }; var signUpResult = await m_userManager.CreateAsync(newUser, vm.Password); if (!signUpResult.Succeeded) { if (signUpResult.Errors.Any()) { if (signUpResult.Errors.First().Code == "InvalidUserName") { return(Json(new { error = "Invalid username. Usernames can only contain letters, numbers, and .-_" })); } } return(Json(new { error = "Unknown sign up error." })); } await SendConfirmationEmail(newUser); return(Json(new { url = "confirmemailsent" })); }
public async Task <IActionResult> UploadProfilePicture(ICollection <IFormFile> files) { ChirpUser user = await m_userManager.FindByNameAsync(User.Identity.Name); var file = files.First(); var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); Stream stream = file.OpenReadStream(); string key = user.Id + ".jpg"; m_profilePictureService.UploadProfilePicture(key, stream); user.HasProfilePicture = true; await m_userManager.UpdateAsync(user); return(RedirectToAction("ChangeProfilePicture", "Auth")); }