Exemplo n.º 1
0
    public override async Task <GrpcResponse> Login(LoginRequest request, ServerCallContext context)
    {
        var loginDto    = _mapper.Map <UserLoginDto>(request);
        var loginResult = await _accountService.LoginAsync(loginDto);

        var grpcResponse = new GrpcResponse()
        {
            IsSuccessStatusCode = loginResult.IsSuccess
        };

        if (!grpcResponse.IsSuccessStatusCode)
        {
            grpcResponse.Error = loginResult.ProblemDetails?.Detail;
            return(grpcResponse);
        }

        var validatedInfo = loginResult.Content;
        var loginReply    = new LoginReply
        {
            Token        = JwtTokenHelper.CreateAccessToken(_jwtOptions.Value, validatedInfo.ValidationVersion, validatedInfo.Account, validatedInfo.Id.ToString(), validatedInfo.Name, validatedInfo.RoleIds).Token,
            RefreshToken = JwtTokenHelper.CreateRefreshToken(_jwtOptions.Value, validatedInfo.ValidationVersion, validatedInfo.Id.ToString()).Token
        };

        grpcResponse.Content = Any.Pack(loginReply);
        return(grpcResponse);
    }
Exemplo n.º 2
0
    public async Task <ActionResult <UserTokenInfoDto> > RefreshAccessTokenAsync([FromBody] UserRefreshTokenDto input)
    {
        var claimOfId = JwtTokenHelper.GetClaimFromRefeshToken(_jwtOptions.Value, input.RefreshToken, JwtRegisteredClaimNames.NameId);

        if (claimOfId is not null)
        {
            var id = claimOfId.Value.ToLong();
            if (id is null)
            {
                return(Forbid());
            }

            var validatedInfo = await _accountService.GetUserValidatedInfoAsync(id.Value);

            if (validatedInfo is null)
            {
                return(Forbid());
            }

            var jti = JwtTokenHelper.GetClaimFromRefeshToken(_jwtOptions.Value, input.RefreshToken, JwtRegisteredClaimNames.Jti);
            if (jti.Value != validatedInfo.ValidationVersion)
            {
                return(Forbid());
            }

            var accessToken  = JwtTokenHelper.CreateAccessToken(_jwtOptions.Value, validatedInfo.ValidationVersion, validatedInfo.Account, validatedInfo.Id.ToString(), validatedInfo.Name, validatedInfo.RoleIds);
            var refreshToken = JwtTokenHelper.CreateRefreshToken(_jwtOptions.Value, validatedInfo.ValidationVersion, validatedInfo.Id.ToString());

            await _accountService.ChangeUserValidateInfoExpiresDtAsync(id.Value);

            var tokenInfo = new UserTokenInfoDto(accessToken.Token, accessToken.Expire, refreshToken.Token, refreshToken.Expire);
            return(Ok(tokenInfo));
        }
        return(Forbid());
    }
Exemplo n.º 3
0
        public async Task <IActionResult> Login([FromBody] UserValidateInputDto userDto)
        {
            var userValidateDto = await _accountService.Login(userDto);

            return(new OkObjectResult(new
            {
                Token = JwtTokenHelper.CreateAccessToken(_jwtConfig, userValidateDto),
                RefreshToken = JwtTokenHelper.CreateRefreshToken(_jwtConfig, userValidateDto)
            }));
        }
Exemplo n.º 4
0
        public async Task <UserTokenInfoDto> Login([FromBody] UserValidateInputDto userDto)
        {
            var userValidateDto = await _accountService.Login(userDto);

            return(new UserTokenInfoDto
            {
                Token = JwtTokenHelper.CreateAccessToken(_jwtConfig, userValidateDto),
                RefreshToken = JwtTokenHelper.CreateRefreshToken(_jwtConfig, userValidateDto)
            });
        }
Exemplo n.º 5
0
    public async Task <ActionResult <UserTokenInfoDto> > LoginAsync([FromBody] UserLoginDto input)
    {
        var result = await _accountService.LoginAsync(input);

        if (result.IsSuccess)
        {
            var validatedInfo = result.Content;
            var accessToken   = JwtTokenHelper.CreateAccessToken(_jwtOptions.Value, validatedInfo.ValidationVersion, validatedInfo.Account, validatedInfo.Id.ToString(), validatedInfo.Name, validatedInfo.RoleIds);
            var refreshToken  = JwtTokenHelper.CreateRefreshToken(_jwtOptions.Value, validatedInfo.ValidationVersion, validatedInfo.Id.ToString());
            var tokenInfo     = new UserTokenInfoDto(accessToken.Token, accessToken.Expire, refreshToken.Token, refreshToken.Expire);
            return(Created($"/auth/session", tokenInfo));
        }
        return(Problem(result.ProblemDetails));
    }
Exemplo n.º 6
0
        public async Task <ActionResult <UserTokenInfoDto> > Login([FromBody] UserValidateInputDto userDto)
        {
            var result = await _accountService.Login(userDto);

            if (result.IsSuccess)
            {
                return(CreatedAtAction(nameof(GetCurrentUserInfo)
                                       , new UserTokenInfoDto
                {
                    Token = JwtTokenHelper.CreateAccessToken(_jwtConfig, result.Content),
                    RefreshToken = JwtTokenHelper.CreateRefreshToken(_jwtConfig, result.Content)
                }));
            }

            return(Problem(result.ProblemDetails));
        }
Exemplo n.º 7
0
        public async Task <ActionResult <UserTokenInfoDto> > LoginAsync([FromBody] UserLoginDto input)
        {
            var result = await _accountService.LoginAsync(input);

            if (result.IsSuccess)
            {
                return(Created($"/usr/session"
                               ,
                               new UserTokenInfoDto
                {
                    Token = JwtTokenHelper.CreateAccessToken(_jwtConfig, result.Content),
                    RefreshToken = JwtTokenHelper.CreateRefreshToken(_jwtConfig, result.Content)
                }));
            }

            return(Problem(result.ProblemDetails));
        }
Exemplo n.º 8
0
        public async Task <UserTokenInfoDto> Login([FromBody] UserValidateInputDto userDto)
        {
            var ipAddress = _contextAccessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
            var device    = _contextAccessor.HttpContext.Request.Headers["device"].ToString();

            if (string.IsNullOrWhiteSpace(device))
            {
                device = "web";
            }

            var userValidateDto = await _accountService.Login(userDto, new CurrenUserInfoDto { RemoteIpAddress = ipAddress, Device = device });

            return(new UserTokenInfoDto
            {
                Token = JwtTokenHelper.CreateAccessToken(_jwtConfig, userValidateDto),
                RefreshToken = JwtTokenHelper.CreateRefreshToken(_jwtConfig, userValidateDto)
            });
        }