devolver
This commit is contained in:
parent
6fd5147409
commit
2301af19cb
@ -127,9 +127,9 @@ namespace ApiGateway
|
|||||||
foreach (Claim cl in claims) // Claim (key:value) desde el token
|
foreach (Claim cl in claims) // Claim (key:value) desde el token
|
||||||
{
|
{
|
||||||
|
|
||||||
if (cl.Type == claim.Key && String.Equals(claim.Key, "permisos"))
|
if (cl.Type == claim.Key && String.Equals(claim.Key, "prm"))
|
||||||
{
|
{
|
||||||
string separador = "::";
|
string separador = "|";
|
||||||
|
|
||||||
int index = cl.Value.LastIndexOf(separador);
|
int index = cl.Value.LastIndexOf(separador);
|
||||||
string newPermiso = cl.Value;
|
string newPermiso = cl.Value;
|
||||||
|
@ -311,6 +311,7 @@ namespace MSAdminUsuarios.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// **** Original
|
||||||
[HttpPost("pruebaUsuario")]
|
[HttpPost("pruebaUsuario")]
|
||||||
public string Token(USUARIO user)
|
public string Token(USUARIO user)
|
||||||
{
|
{
|
||||||
@ -322,40 +323,32 @@ namespace MSAdminUsuarios.Controllers
|
|||||||
|
|
||||||
List<int?> perfiles = perfilesPorUsuario.Select(p => p.NU_FK_PFL).ToList();
|
List<int?> perfiles = perfilesPorUsuario.Select(p => p.NU_FK_PFL).ToList();
|
||||||
|
|
||||||
// Verificar si alguno de los perfiles es 2
|
List<PERMISO> permisos = (from perfXUs in perfilesPorUsuario
|
||||||
bool perfilEsDos = perfiles.Contains(2);
|
join perm in _context.PERMISOSMs on perfXUs.NU_FK_PFL equals perm.NU_FK_PFL
|
||||||
|
where perm.BL_ESTADO_PMS == 1
|
||||||
// Solo obtenemos permisos si no existe el perfil 2
|
select perm).ToList();
|
||||||
List<PERMISO> permisos = perfilEsDos ? new List<PERMISO>() :
|
|
||||||
(from perfXUs in perfilesPorUsuario
|
|
||||||
join perm in _context.PERMISOSMs on perfXUs.NU_FK_PFL equals perm.NU_FK_PFL
|
|
||||||
where perm.BL_ESTADO_PMS == 1
|
|
||||||
select perm).ToList();
|
|
||||||
|
|
||||||
Dictionary<string, string> perfilesPorPermiso = new();
|
Dictionary<string, string> perfilesPorPermiso = new();
|
||||||
// Todos
|
foreach (PERMISO p in permisos)
|
||||||
if (!perfilEsDos) // Solo procesar permisos si el perfil no es 2
|
|
||||||
{
|
{
|
||||||
foreach (PERMISO p in permisos)
|
string key = p.NU_FK_MS.ToString();
|
||||||
{
|
string val = p.NU_FK_PFL.ToString();
|
||||||
string key = p.NU_FK_MS.ToString();
|
|
||||||
string val = p.NU_FK_PFL.ToString();
|
|
||||||
|
|
||||||
if (perfilesPorPermiso.ContainsKey(key))
|
if (perfilesPorPermiso.ContainsKey(key))
|
||||||
{
|
{
|
||||||
string antVal = perfilesPorPermiso[key];
|
string antVal = perfilesPorPermiso[key];
|
||||||
perfilesPorPermiso[key] = antVal + "," + val;
|
perfilesPorPermiso.Remove(key);
|
||||||
}
|
perfilesPorPermiso.Add(key, antVal + "," + val);
|
||||||
else
|
}
|
||||||
{
|
else
|
||||||
perfilesPorPermiso.Add(key, val);
|
{
|
||||||
}
|
perfilesPorPermiso.Add(key, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
perfiles.Add(-1);
|
perfiles.Add(-1);
|
||||||
|
|
||||||
// Security key debe ser un environment variable seguro
|
//Security key debe ser un environment variable seguro
|
||||||
var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Encripter.HashKey));
|
var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Encripter.HashKey));
|
||||||
var signingCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);
|
var signingCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);
|
||||||
string nombres = "";
|
string nombres = "";
|
||||||
@ -375,30 +368,35 @@ namespace MSAdminUsuarios.Controllers
|
|||||||
int tipo_doc = user.NU_TIPODOC_USUMS == null ? -1 : (int)user.NU_TIPODOC_USUMS;
|
int tipo_doc = user.NU_TIPODOC_USUMS == null ? -1 : (int)user.NU_TIPODOC_USUMS;
|
||||||
|
|
||||||
ClaimsIdentity claims = new ClaimsIdentity(new List<Claim>
|
ClaimsIdentity claims = new ClaimsIdentity(new List<Claim>
|
||||||
{
|
{
|
||||||
new Claim("user", user.TX_PKDOC_USUMS),
|
new Claim("user", user.TX_PKDOC_USUMS),
|
||||||
new Claim("nombres", nombres),
|
new Claim("nombres", nombres),
|
||||||
new Claim("apellidos", apellidos),
|
new Claim("apellidos", apellidos),
|
||||||
new Claim("tipo_doc", tipo_doc.ToString()),
|
new Claim("tipo_doc", tipo_doc.ToString()),
|
||||||
new Claim("pk", user.NU_PK_USUMS.ToString()),
|
new Claim("pk", user.NU_PK_USUMS.ToString()),
|
||||||
new Claim("sedes", user.TX_SEDES_USUMS ?? ""),
|
new Claim("sedes", user.TX_SEDES_USUMS == null ? "" : user.TX_SEDES_USUMS),
|
||||||
new Claim("TX_NOMBRE_PVD", user.TX_NOMBRE_PVD ?? "{}"),
|
new Claim("TX_NOMBRE_PVD", user.TX_NOMBRE_PVD ?? "{}"),
|
||||||
new Claim("uid", user.TX_UUID_USUMS.ToString())
|
new Claim("uid", user.TX_UUID_USUMS.ToString())
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
foreach (int p in perfiles)
|
foreach (int p in perfiles)
|
||||||
{
|
{
|
||||||
claims.AddClaim(new Claim("perfiles", p.ToString(), ClaimValueTypes.String));
|
claims.AddClaim(new Claim("perfiles", p.ToString(), ClaimValueTypes.String));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!perfilEsDos) // Añadir permisos solo si perfil no es 2
|
|
||||||
|
//foreach (PERMISO p in permisos)
|
||||||
|
//{
|
||||||
|
// claims.AddClaim(new Claim("permisos", Encripter.Encrypt(p.NU_FK_MS.ToString())));
|
||||||
|
//}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<string, string> p in perfilesPorPermiso)
|
||||||
{
|
{
|
||||||
foreach (KeyValuePair<string, string> p in perfilesPorPermiso)
|
string key = p.Key;
|
||||||
{
|
string val = p.Value;
|
||||||
string key = p.Key;
|
|
||||||
string val = p.Value;
|
claims.AddClaim(new Claim("permisos", _encript.EncryptHashTkn(key) + "::" + val));
|
||||||
claims.AddClaim(new Claim("permisos", _encript.EncryptHashTkn(key) + "::" + val));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var securityTokenDescriptor = new SecurityTokenDescriptor
|
var securityTokenDescriptor = new SecurityTokenDescriptor
|
||||||
@ -414,6 +412,111 @@ namespace MSAdminUsuarios.Controllers
|
|||||||
|
|
||||||
return Encripter.Cypher(token);
|
return Encripter.Cypher(token);
|
||||||
}
|
}
|
||||||
|
// **** Original
|
||||||
|
|
||||||
|
//[HttpPost("pruebaUsuario")]
|
||||||
|
//public string Token(USUARIO user)
|
||||||
|
//{
|
||||||
|
// List<PERFILPORUSUARIO> perfilesPorUsuario = (from perf in _context.PERFILESPORUSUARIOs
|
||||||
|
// where perf.TX_FKDOC_USUMS == user.TX_PKDOC_USUMS && perf.NU_FK_PFL != null && perf.BL_ESTADO_PFLXUSU == 1
|
||||||
|
// select perf).ToList();
|
||||||
|
|
||||||
|
// _logger.LogInformation(perfilesPorUsuario.ToString());
|
||||||
|
|
||||||
|
// List<int?> perfiles = perfilesPorUsuario.Select(p => p.NU_FK_PFL).ToList();
|
||||||
|
|
||||||
|
// // Verificar si alguno de los perfiles es 2
|
||||||
|
// bool perfilEsDos = perfiles.Contains(2);
|
||||||
|
|
||||||
|
// // Solo obtenemos permisos si no existe el perfil 2
|
||||||
|
// List<PERMISO> permisos = perfilEsDos ? new List<PERMISO>() :
|
||||||
|
// (from perfXUs in perfilesPorUsuario
|
||||||
|
// join perm in _context.PERMISOSMs on perfXUs.NU_FK_PFL equals perm.NU_FK_PFL
|
||||||
|
// where perm.BL_ESTADO_PMS == 1
|
||||||
|
// select perm).ToList();
|
||||||
|
|
||||||
|
// Dictionary<string, string> perfilesPorPermiso = new();
|
||||||
|
// // Todos
|
||||||
|
// if (!perfilEsDos) // Solo procesar permisos si el perfil no es 2
|
||||||
|
// {
|
||||||
|
// foreach (PERMISO p in permisos)
|
||||||
|
// {
|
||||||
|
// string key = p.NU_FK_MS.ToString();
|
||||||
|
// string val = p.NU_FK_PFL.ToString();
|
||||||
|
|
||||||
|
// if (perfilesPorPermiso.ContainsKey(key))
|
||||||
|
// {
|
||||||
|
// string antVal = perfilesPorPermiso[key];
|
||||||
|
// perfilesPorPermiso[key] = antVal + "," + val;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// perfilesPorPermiso.Add(key, val);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// perfiles.Add(-1);
|
||||||
|
|
||||||
|
// // Security key debe ser un environment variable seguro
|
||||||
|
// var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Encripter.HashKey));
|
||||||
|
// var signingCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);
|
||||||
|
// string nombres = "";
|
||||||
|
// string apellidos = "";
|
||||||
|
|
||||||
|
// if (user.TX_PRIMERNOM_USUMS != null) nombres += user.TX_PRIMERNOM_USUMS;
|
||||||
|
// if (user.TX_SEGUNDONOM_USUMS != null) nombres += " " + user.TX_SEGUNDONOM_USUMS;
|
||||||
|
// if (user.TX_PRIMERAPELL_USUMS != null) apellidos += user.TX_PRIMERAPELL_USUMS;
|
||||||
|
// if (user.TX_SEGUNDOAPELL_USUMS != null) apellidos += " " + user.TX_SEGUNDOAPELL_USUMS;
|
||||||
|
|
||||||
|
// nombres = nombres.Trim();
|
||||||
|
// apellidos = apellidos.Trim();
|
||||||
|
|
||||||
|
// if (nombres == "") nombres = "N";
|
||||||
|
// if (apellidos == "") apellidos = "A";
|
||||||
|
|
||||||
|
// int tipo_doc = user.NU_TIPODOC_USUMS == null ? -1 : (int)user.NU_TIPODOC_USUMS;
|
||||||
|
|
||||||
|
// ClaimsIdentity claims = new ClaimsIdentity(new List<Claim>
|
||||||
|
//{
|
||||||
|
// new Claim("user", user.TX_PKDOC_USUMS),
|
||||||
|
// new Claim("nombres", nombres),
|
||||||
|
// new Claim("apellidos", apellidos),
|
||||||
|
// new Claim("tipo_doc", tipo_doc.ToString()),
|
||||||
|
// new Claim("pk", user.NU_PK_USUMS.ToString()),
|
||||||
|
// new Claim("sedes", user.TX_SEDES_USUMS ?? ""),
|
||||||
|
// new Claim("TX_NOMBRE_PVD", user.TX_NOMBRE_PVD ?? "{}"),
|
||||||
|
// new Claim("uid", user.TX_UUID_USUMS.ToString())
|
||||||
|
//});
|
||||||
|
|
||||||
|
// foreach (int p in perfiles)
|
||||||
|
// {
|
||||||
|
// claims.AddClaim(new Claim("perfiles", p.ToString(), ClaimValueTypes.String));
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (!perfilEsDos) // Añadir permisos solo si perfil no es 2
|
||||||
|
// {
|
||||||
|
// foreach (KeyValuePair<string, string> p in perfilesPorPermiso)
|
||||||
|
// {
|
||||||
|
// string key = p.Key;
|
||||||
|
// string val = p.Value;
|
||||||
|
// claims.AddClaim(new Claim("permisos", _encript.EncryptHashTkn(key) + "::" + val));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// var securityTokenDescriptor = new SecurityTokenDescriptor
|
||||||
|
// {
|
||||||
|
// Subject = claims,
|
||||||
|
// Expires = DateTime.Now.AddDays(20),
|
||||||
|
// SigningCredentials = signingCredentials
|
||||||
|
// };
|
||||||
|
|
||||||
|
// var jwtSecurityTokenHandler = new JwtSecurityTokenHandler();
|
||||||
|
// var securityToken = jwtSecurityTokenHandler.CreateToken(securityTokenDescriptor);
|
||||||
|
// var token = jwtSecurityTokenHandler.WriteToken(securityToken);
|
||||||
|
|
||||||
|
// return Encripter.Cypher(token);
|
||||||
|
//}
|
||||||
|
|
||||||
//[HttpPost("pruebaUsuario")]
|
//[HttpPost("pruebaUsuario")]
|
||||||
//public string Token(USUARIO user)
|
//public string Token(USUARIO user)
|
||||||
@ -472,13 +575,13 @@ namespace MSAdminUsuarios.Controllers
|
|||||||
|
|
||||||
// ClaimsIdentity claims = new ClaimsIdentity(new List<Claim>
|
// ClaimsIdentity claims = new ClaimsIdentity(new List<Claim>
|
||||||
// {
|
// {
|
||||||
// new Claim("user", user.TX_PKDOC_USUMS),
|
// new Claim("us", user.TX_PKDOC_USUMS),
|
||||||
// new Claim("nombres", nombres),
|
// new Claim("nm", nombres),
|
||||||
// new Claim("apellidos", apellidos),
|
// new Claim("ap", apellidos),
|
||||||
// new Claim("tipo_doc", tipo_doc.ToString()),
|
// new Claim("td", tipo_doc.ToString()),
|
||||||
// new Claim("pk", user.NU_PK_USUMS.ToString()),
|
// new Claim("pk", user.NU_PK_USUMS.ToString()),
|
||||||
// new Claim("sedes", user.TX_SEDES_USUMS == null ? "" : user.TX_SEDES_USUMS),
|
// new Claim("s", user.TX_SEDES_USUMS == null ? "" : user.TX_SEDES_USUMS),
|
||||||
// new Claim("TX_NOMBRE_PVD", user.TX_NOMBRE_PVD ?? "{}"),
|
// new Claim("PVD", user.TX_NOMBRE_PVD ?? "{}"),
|
||||||
// new Claim("uid", user.TX_UUID_USUMS.ToString())
|
// new Claim("uid", user.TX_UUID_USUMS.ToString())
|
||||||
// });
|
// });
|
||||||
|
|
||||||
@ -499,7 +602,7 @@ namespace MSAdminUsuarios.Controllers
|
|||||||
// string key = p.Key;
|
// string key = p.Key;
|
||||||
// string val = p.Value;
|
// string val = p.Value;
|
||||||
|
|
||||||
// claims.AddClaim(new Claim("permisos", _encript.EncryptHashTkn(key) + "::" + val));
|
// claims.AddClaim(new Claim("prm", _encript.EncryptHashTkn(key) + "|" + val));
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// var securityTokenDescriptor = new SecurityTokenDescriptor
|
// var securityTokenDescriptor = new SecurityTokenDescriptor
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
},
|
},
|
||||||
"IIS Express": {
|
"IIS Express": {
|
||||||
"commandName": "IISExpress",
|
"commandName": "IISExpress",
|
||||||
|
"sslPort": 7292,
|
||||||
"launchBrowser": true,
|
"launchBrowser": true,
|
||||||
"launchUrl": "swagger",
|
"launchUrl": "swagger",
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
|
Loading…
Reference in New Issue
Block a user