From 2301af19cba25298e89ced92bea5af12d1397b7e Mon Sep 17 00:00:00 2001 From: Cristian Guerrero Date: Sat, 16 Nov 2024 09:35:32 -0500 Subject: [PATCH] devolver --- ApiGateway/CustomLogic.cs | 4 +- .../MsUsuarios/Controllers/AuthController.cs | 201 +++++++++++++----- .../MsUsuarios/Properties/launchSettings.json | 1 + 3 files changed, 155 insertions(+), 51 deletions(-) diff --git a/ApiGateway/CustomLogic.cs b/ApiGateway/CustomLogic.cs index 2ef925f..c3e3b8a 100644 --- a/ApiGateway/CustomLogic.cs +++ b/ApiGateway/CustomLogic.cs @@ -127,9 +127,9 @@ namespace ApiGateway 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); string newPermiso = cl.Value; diff --git a/Microservicios/MsUsuarios/Controllers/AuthController.cs b/Microservicios/MsUsuarios/Controllers/AuthController.cs index c2c149a..696d2aa 100644 --- a/Microservicios/MsUsuarios/Controllers/AuthController.cs +++ b/Microservicios/MsUsuarios/Controllers/AuthController.cs @@ -311,6 +311,7 @@ namespace MSAdminUsuarios.Controllers } } + // **** Original [HttpPost("pruebaUsuario")] public string Token(USUARIO user) { @@ -322,40 +323,32 @@ namespace MSAdminUsuarios.Controllers List 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 permisos = perfilEsDos ? new List() : - (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(); + List permisos = (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 perfilesPorPermiso = new(); - // Todos - if (!perfilEsDos) // Solo procesar permisos si el perfil no es 2 + foreach (PERMISO p in permisos) { - 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)) - { - string antVal = perfilesPorPermiso[key]; - perfilesPorPermiso[key] = antVal + "," + val; - } - else - { - perfilesPorPermiso.Add(key, val); - } + if (perfilesPorPermiso.ContainsKey(key)) + { + string antVal = perfilesPorPermiso[key]; + perfilesPorPermiso.Remove(key); + perfilesPorPermiso.Add(key, antVal + "," + val); + } + else + { + perfilesPorPermiso.Add(key, val); } } 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 signingCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256); string nombres = ""; @@ -375,30 +368,35 @@ namespace MSAdminUsuarios.Controllers int tipo_doc = user.NU_TIPODOC_USUMS == null ? -1 : (int)user.NU_TIPODOC_USUMS; ClaimsIdentity claims = new ClaimsIdentity(new List - { - 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()) - }); + { + 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 == null ? "" : 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 (PERMISO p in permisos) + //{ + // claims.AddClaim(new Claim("permisos", Encripter.Encrypt(p.NU_FK_MS.ToString()))); + //} + + foreach (KeyValuePair p in perfilesPorPermiso) { - foreach (KeyValuePair p in perfilesPorPermiso) - { - string key = p.Key; - string val = p.Value; - claims.AddClaim(new Claim("permisos", _encript.EncryptHashTkn(key) + "::" + val)); - } + string key = p.Key; + string val = p.Value; + + claims.AddClaim(new Claim("permisos", _encript.EncryptHashTkn(key) + "::" + val)); } var securityTokenDescriptor = new SecurityTokenDescriptor @@ -414,6 +412,111 @@ namespace MSAdminUsuarios.Controllers return Encripter.Cypher(token); } + // **** Original + + //[HttpPost("pruebaUsuario")] + //public string Token(USUARIO user) + //{ + // List 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 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 permisos = perfilEsDos ? new List() : + // (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 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 + //{ + // 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 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")] //public string Token(USUARIO user) @@ -472,13 +575,13 @@ namespace MSAdminUsuarios.Controllers // ClaimsIdentity claims = new ClaimsIdentity(new List // { - // new Claim("user", user.TX_PKDOC_USUMS), - // new Claim("nombres", nombres), - // new Claim("apellidos", apellidos), - // new Claim("tipo_doc", tipo_doc.ToString()), + // new Claim("us", user.TX_PKDOC_USUMS), + // new Claim("nm", nombres), + // new Claim("ap", apellidos), + // new Claim("td", tipo_doc.ToString()), // new Claim("pk", user.NU_PK_USUMS.ToString()), - // new Claim("sedes", user.TX_SEDES_USUMS == null ? "" : user.TX_SEDES_USUMS), - // new Claim("TX_NOMBRE_PVD", user.TX_NOMBRE_PVD ?? "{}"), + // new Claim("s", user.TX_SEDES_USUMS == null ? "" : user.TX_SEDES_USUMS), + // new Claim("PVD", user.TX_NOMBRE_PVD ?? "{}"), // new Claim("uid", user.TX_UUID_USUMS.ToString()) // }); @@ -499,7 +602,7 @@ namespace MSAdminUsuarios.Controllers // string key = p.Key; // 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 diff --git a/Microservicios/MsUsuarios/Properties/launchSettings.json b/Microservicios/MsUsuarios/Properties/launchSettings.json index a87c1a7..74234f8 100644 --- a/Microservicios/MsUsuarios/Properties/launchSettings.json +++ b/Microservicios/MsUsuarios/Properties/launchSettings.json @@ -22,6 +22,7 @@ }, "IIS Express": { "commandName": "IISExpress", + "sslPort": 7292, "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": {