public async Task <IActionResult> Resend(string email) { if (string.IsNullOrWhiteSpace(email)) { return(BadRequest("ResendEmailRequired")); } var user = await _userManager.FindByEmailAsync(email.Trim()); if (user == null) { return(NotFound()); } if (user.EmailConfirmed) { return(BadRequest("ResendEmailConfirmed")); } var emailConfirmationToken = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = new Uri(Url.Link("ConfirmEmail", new { id = _protector.Protect(user.Id), token = emailConfirmationToken })); var emailTemplateVM = new EmailTemplateVM(user.Email, callbackUrl.AbsoluteUri); var emailFormat = emailTemplateVM.GetConfirmEmailFormat(); await _messageService.SendEmailAsync("*****@*****.**", user.Email, emailFormat.Item1, null, emailFormat.Item2); return(new OkResult()); }
public async Task <IActionResult> Register([FromBody] RegistrationVM model) { if (!ModelState.IsValid) { string errorMsg = null; foreach (var m in ModelState.Values) { foreach (var msg in m.Errors) { errorMsg = msg.ErrorMessage; } } return(BadRequest(errorMsg)); } var allUsers = _repository.GetAll(); foreach (var au in allUsers) { if (au.NickName.ToLower().Trim().Equals(model.NickName.ToLower().Trim())) { return(BadRequest("DuplicateNickName")); } } ApplicationUser newUser = new ApplicationUser { UserName = model.Email, Email = model.Email, NickName = model.NickName, DateCreated = DateTime.UtcNow }; var result = await _userManager.CreateAsync(newUser, model.Password); if (result.Succeeded) { var user = await _userManager.FindByEmailAsync(model.Email); var userRole = new IdentityRole("User"); if (!await _userManager.IsInRoleAsync(user, userRole.Name)) { await _userManager.AddToRoleAsync(user, userRole.Name); } var emailConfirmationToken = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = new Uri(Url.Link("ConfirmEmail", new { id = _protector.Protect(user.Id), token = emailConfirmationToken })); var emailTemplateVM = new EmailTemplateVM(user.Email, callbackUrl.AbsoluteUri); var emailFormat = emailTemplateVM.GetConfirmEmailFormat(); await _messageService.SendEmailAsync("*****@*****.**", user.Email, emailFormat.Item1, null, emailFormat.Item2); var userVM = Mapper.Map <ApplicationUser, ApplicationUserVM>(user); return(CreatedAtRoute("GetUser", new { controller = "Account", id = user.Id }, userVM)); } return(new BadRequestObjectResult(result.Errors)); }