Пример #1
0
        public IActionResult GetJwtAndRtViaRt(AuthenticateApiRequest authenticateRequest)
        {
            AuthenticateApiResponse authenticateResponse = _jwtAndRtService.GetJwtAndRtViaRt(authenticateRequest.RefreshToken, ipAddress());

            if (authenticateResponse != null)
            {
                return(Ok(authenticateResponse));
            }
            else
            {
                return(BadRequest(new DefaultApiResponse {
                    ErrorMessage = "Действие обновляющего токена закончилось"
                }));
            }
        }
Пример #2
0
        public AuthenticateApiResponse GetJwtAndRt(AuthenticateApiRequest model, string ipAddress)
        {
            var user = _milieuRepo.GetUser(model.Email);

            // return null if user not found
            if (user == null)
            {
                return(null);
            }

            // authentication successful so generate jwt and refresh tokens
            var jwtToken     = generateJwt(user);
            var refreshToken = generateRefreshToken(ipAddress);

            // save refresh token
            _milieuRepo.UpdateOrAddRefreshToken(user, refreshToken);

            return(new AuthenticateApiResponse(user, jwtToken, refreshToken.Value));
        }
Пример #3
0
        public async Task <IActionResult> Register([FromBody] RegisterApiRequest registerApiRequest)
        {
            if (ModelState.IsValid)
            {
                User user = new User
                {
                    Email    = registerApiRequest.Email,
                    UserName = registerApiRequest.Email,
                };

                var result = await _userManager.CreateAsync(user, registerApiRequest.Password);

                if (result.Succeeded)
                {
                    AuthenticateApiRequest  authenticateRequest  = new AuthenticateApiRequest(registerApiRequest.Email);
                    AuthenticateApiResponse authenticateResponse = _jwtAndRtService.GetJwtAndRt(authenticateRequest, ipAddress());
                    await _signInManager.SignInAsync(user, false);

                    return(Ok(authenticateResponse));
                }
                else
                {
                    return(BadRequest(
                               new AuthenticateApiResponse
                    {
                        ApiResponseDefault = new DefaultApiResponse
                        {
                            ErrorMessage = result.Errors?.ToList().Select(f => f.Description).Aggregate((a, b) => $"{a}{Environment.NewLine}{b}")
                        }
                    }));
                }
            }
            else
            {
                AuthenticateApiResponse badResponse = new AuthenticateApiResponse();
                badResponse.ApiResponseDefault.ErrorMessage = ModelStateHelperMethods.GetAggregateErrors(ModelState.Values);
                return(BadRequest(badResponse));
            }
        }
Пример #4
0
        public async Task <IActionResult> Login([FromBody] LoginApiRequest loginApiRequest)
        {
            if (ModelState.IsValid)
            {
                var result = await _signInManager.PasswordSignInAsync(loginApiRequest.Email, loginApiRequest.Password, false, false);

                AuthenticateApiRequest  authenticateRequest  = new AuthenticateApiRequest(loginApiRequest.Email);
                AuthenticateApiResponse authenticateResponse = _jwtAndRtService.GetJwtAndRt(authenticateRequest, ipAddress());

                if (result.Succeeded)
                {
                    return(Ok(authenticateResponse));
                }
                else
                {
                    return(BadRequest(authenticateResponse));
                }
            }
            else
            {
                return(BadRequest());
            }
        }