public async Task <ActionResult> Register(LoginRegisterViewModel model) { if (!ModelState.IsValid) { return(View(model)); } try { var request = new MUser_CreateUser() { UserName = model.Email, Email = model.Email, Password = model.Password }; var userId = await UserManagementMicroService.CreateNewUserAsync(request); await SendConfirmationEmailAsync(userId); return(View("RegisterConfirmation")); } catch (ServiceException ex) { AddModelErrors(ex); return(View()); } }
public async Task <string> CreateNewUserAsync(MUser_CreateUser request) { using var log = BeginFunction(nameof(UserMicroService), nameof(CreateNewUserAsync), request); try { var userId = Guid.NewGuid().ToString(); var user = new IdentityUser { Id = userId, UserName = request.Email, Email = request.Email, EmailConfirmed = request.SuppressEmailConfirmation }; var identityResult = await UserManager.CreateAsync(user, request.Password).ConfigureAwait(false); if (!identityResult.Succeeded) { // HACK: Validate identity errors logic. throw CreateServiceException("User could not be created.", identityResult.Errors.Where(r => !r.Description.StartsWith("Email"))); } var result = userId; log.Result(result); return(result); } catch (Exception ex) { log.Exception(ex); throw; } }