示例#1
0
        public async Task <AuthenticationResult> RegisterAsync(UserAccountRegistrationRequest request)
        {
            var existingUser = await _userManager.FindByEmailAsync(request.Email);

            if (existingUser != null)
            {
                return(new AuthenticationResult
                {
                    Errors = new[] { "User with this email address already exists" }
                });
            }

            var newUser = new User
            {
                Email    = request.Email,
                UserName = request.Username
            };

            var createdUser = await _userManager.CreateAsync(newUser, request.Password);

            if (!createdUser.Succeeded)
            {
                return(new AuthenticationResult
                {
                    Errors = createdUser.Errors.Select(x => x.Description)
                });
            }

            return(await GenerateAuthenticationResultForUserAsync(newUser));
        }
        public async Task <IActionResult> Register([FromBody] UserAccountRegistrationRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new AuthFailedResponse
                {
                    Errors = ModelState.Values.SelectMany(i => i.Errors.Select(j => j.ErrorMessage))
                }));
            }

            var authResponse = await _userAccountService.RegisterAsync(request);

            if (!authResponse.Success)
            {
                return(BadRequest
                       (
                           new AuthFailedResponse
                {
                    Errors = authResponse.Errors
                }
                       ));
            }

            return(Ok
                   (
                       new AuthSuccessResponse
            {
                Token = authResponse.Token,
                RefreshToken = authResponse.RefreshToken
            }
                   ));
        }