예제 #1
0
        /// <summary>
        /// OBTIENE LISTA DE RECLAMACIONES PARA AGREGARLO AL TOKEN DE AUTORIZACION
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        private async Task <List <Claim> > ObtenerListaReclamacionesAsync(UsuariosEntidad usuario)
        {
            List <Claim> lstClaimsToken = new List <Claim>();

            var lstRoles = await _usuariosRepositorio.ObtenerUsuariosRolesAsync(usuario);

            lstClaimsToken.Add(new Claim("Id", usuario.Id.ToString()));
            lstClaimsToken.Add(new Claim("User", usuario.UserName));
            lstClaimsToken.Add(new Claim(ClaimTypes.Email, usuario.Email));
            lstClaimsToken.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()));

            foreach (var usuarioRole in lstRoles)
            {
                //ASIGANACION LISTA DE ROLES
                lstClaimsToken.Add(new Claim(ClaimTypes.Role, usuarioRole));

                var role = await _rolesRepositorio.ObtenerRoleNombreAsync(usuarioRole);

                if (role == null)
                {
                    continue;
                }

                var roleClaims = await _rolesRepositorio.ObtenerRoleClaimAsync(role);

                foreach (var roleClaim in roleClaims)
                {
                    if (lstClaimsToken.Contains(roleClaim))
                    {
                        continue;
                    }

                    lstClaimsToken.Add(roleClaim);
                }
            }

            return(lstClaimsToken);
        }