Ejemplo n.º 1
0
        protected Task <IPrincipal> AuthenticateJwtToken(string token)
        {
            if (ValidateToken(token, out var username))
            {
                APIQuizDBContext db = new APIQuizDBContext();
                var  roles          = "gv";
                User User           = db.Users
                                      .FirstOrDefault(u => u.UserName == username);

                if (username.ToLower() == "admin" || User.TypeId == 2)
                {
                    roles = "admin";
                }
                if (User.TypeId == 1)
                {
                    roles = "gv";
                }
                // based on username to get more information from database in order to build local identity
                var claims = new List <Claim>
                {
                    new Claim(ClaimTypes.Name, username),
                    new Claim(ClaimTypes.Role, roles)
                    // Add more claims if needed: Roles, ...
                };

                var        identity = new ClaimsIdentity(claims, "Jwt");
                IPrincipal user     = new ClaimsPrincipal(identity);

                return(Task.FromResult(user));
            }

            return(Task.FromResult <IPrincipal>(null));
        }