Ejemplo n.º 1
0
        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());
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }