Beispiel #1
0
        public JwtToken CreateToken(SaveJwtToken token, string Role)
        {
            JwtToken jwtToken = new JwtToken();

            try
            {
                GenerateRefreshAndUpdateUser(token, (_rt) =>
                {
                    if (string.IsNullOrEmpty(_rt))
                    {
                        throw new Exception("Refresh Token no pudo ser generado");
                    }

                    jwtToken.RefreshToken = _rt;
                });


                jwtToken.Token = tokenService.GenerateToken(new Claim[]
                {
                    new Claim(ClaimTypes.Role, Role),
                    new Claim(ClaimTypes.Name, token.UserName)
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(jwtToken);
        }
Beispiel #2
0
        public JwtToken RefreshToken(SaveJwtToken token)
        {
            var principal = _auth.GetPrincipalFromExpiredToken(token.Token);
            var ci        = principal as ClaimsPrincipal;
            var claim     = ci.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role);

            string rol = claim.Value;

            token.UserName = principal.Identity.Name;

            return(_auth.CreateToken(token, rol));
        }
Beispiel #3
0
        private void GenerateRefreshAndUpdateUser(SaveJwtToken login, Action <string> refreshHandler)
        {
            var refreshToken = tokenService.GenerateRefreshToken();


            JwtRefreshToken tokenResponse = broker.SendBroker <JwtRefreshToken>(new JwtRefreshToken()
            {
                RefreshToken = refreshToken,
                UserName     = login.UserName
            });

            refreshHandler.Invoke(!string.IsNullOrEmpty(tokenResponse.Code) ? refreshToken : string.Empty);
            refreshHandler.Invoke(refreshToken);
        }
Beispiel #4
0
        public async Task <IActionResult> RefreshToken(SaveJwtToken token)
        {
            try
            {
                var response = _authPersonalRepository.RefreshToken(token);

                if (string.IsNullOrEmpty(response.Token))
                {
                    return(BadRequest(new FrontStatusCode("Refresh Token no pudo ser generado")));
                }

                await Task.CompletedTask;
                return(Ok(new JwtTokenResponse()
                {
                    RefreshToken = response.RefreshToken,
                    Token = response.Token
                }));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }
        }