Ejemplo n.º 1
0
        public async Task <ActionResult <LoginResponse> > Register([FromBody] RegistrationRequest model)
        {
            var user = new ApplicationUser();

            user.UserName    = model.Email;
            user.Email       = model.Email;
            user.FirstName   = model.FirstName;
            user.LastName    = model.LastName;
            user.DateOfBirth = model.DateOfBirth;

            var actionResultError = await CreateUserAsync(user, model.Password);

            if (actionResultError != null)
            {
                return(actionResultError);
            }

            // Register as locked if enabled
            // if (_appConfig.NewUserAsLocked)

            if (_signInManager.Options.SignIn.RequireConfirmedEmail)
            {
                // var lockoutEndDate = new DateTime(2999,01,01);
                // await _userManager.SetLockoutEnabledAsync(userIdentity, true);
                // await  _userManager.SetLockoutEndDateAsync(userIdentity, lockoutEndDate);

                _emailService.ConfirmRegister(model.UrlCallbackConfirmation, user);
                var authModel = LoginResponse.Generate(_signInManager.Options.SignIn);
                return(this.OkCreated(authModel));
            }
            else
            {
                var authModel = await LoginResponse.GenerateWithTokenAsync(_jwtFactory, _appConfig, user);

                if (authModel == null)
                {
                    var pb = new ModelStateBuilder <RegistrationRequest>(this);
                    pb.SetFieldError(f => f.Email, ProblemDetailsFieldType.JwtError);
                    return(this.BadRequest());
                }

                return(this.OkCreated(authModel));
            }
        }