diff --git a/Auth/Security.cs b/Auth/Security.cs index 45ded06..50ddb39 100644 --- a/Auth/Security.cs +++ b/Auth/Security.cs @@ -22,10 +22,11 @@ namespace Security } else { - string DevKey = Environment.GetEnvironmentVariable("MySecretKey")!; + ReadCredentials(); + /*string DevKey = Environment.GetEnvironmentVariable("MySecretKey")!; HashKey = DevKey; PwdKey = DevKey; - _SEMILLA = 1262; + _SEMILLA = 1262;*/ } } diff --git a/Microservicios/MsUsuarios/Controllers/AuthController.cs b/Microservicios/MsUsuarios/Controllers/AuthController.cs index 2e79f74..b01e6f4 100644 --- a/Microservicios/MsUsuarios/Controllers/AuthController.cs +++ b/Microservicios/MsUsuarios/Controllers/AuthController.cs @@ -2,6 +2,7 @@ using LdapLoginLib; using Microsoft.AspNetCore.Mvc; using Microsoft.IdentityModel.Tokens; using MSAdminUsuarios.Context; +using MSAdminUsuarios.Dto; using Newtonsoft.Json.Linq; using Security; using System.IdentityModel.Tokens.Jwt; @@ -67,10 +68,11 @@ namespace MSAdminUsuarios.Controllers ); if (loggedWithLdap == true) { - string token = Token(userldap); + //string token = Token(userldap); + AutorizaDTO autorizado = Token(userldap); return Ok(new { - token = token, + token = autorizado.token, user = userldap.TX_PKDOC_USUMS, ldap = 1 }); @@ -207,12 +209,13 @@ namespace MSAdminUsuarios.Controllers //{ //} - string token = Token(user); + //string token = Token(user); + AutorizaDTO autorizado = Token(user); user.FE_RECUPERACLAVE = null; _context.USUARIOSMs.Update(user); _context.SaveChanges(); - return Ok(new ResLoginExt("Bienvenido al sistema.", true, user.NU_ESTADO_USUMS, token, user.NU_INICIO_PRIMERAVEZ_USUMS, user.TX_PKDOC_USUMS, user.BL_VIENELDAP_USUMS)); + return Ok(new ResLoginExt("Bienvenido al sistema.", true, user.NU_ESTADO_USUMS, autorizado, user.NU_INICIO_PRIMERAVEZ_USUMS, user.TX_PKDOC_USUMS, user.BL_VIENELDAP_USUMS)); } catch (Exception e) @@ -269,8 +272,9 @@ namespace MSAdminUsuarios.Controllers if (user == null) return BadRequest("No se encuentra usuario"); - string newToken = Token(user); - return Ok(newToken); + //string newToken = Token(user); + AutorizaDTO autorizado = Token(user); + return Ok(autorizado.token); } catch(Exception ex) { @@ -311,7 +315,7 @@ namespace MSAdminUsuarios.Controllers } [HttpPost("pruebaUsuario")] - public string Token(USUARIO user) + public AutorizaDTO 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 @@ -333,8 +337,14 @@ namespace MSAdminUsuarios.Controllers if (perfilesPorPermiso.ContainsKey(key)) { string antVal = perfilesPorPermiso[key]; - perfilesPorPermiso.Remove(key); - perfilesPorPermiso.Add(key, antVal + "," + val); + /*perfilesPorPermiso.Remove(key); + perfilesPorPermiso.Add(key, antVal + "," + val);*/ + List result = new List(antVal.Split(',')); + if (!result.Contains(val)) + { + perfilesPorPermiso.Remove(key); + perfilesPorPermiso.Add(key, antVal + "," + val); + } } else { @@ -387,12 +397,15 @@ namespace MSAdminUsuarios.Controllers // claims.AddClaim(new Claim("permisos", Encripter.Encrypt(p.NU_FK_MS.ToString()))); //} + List permisosCifrados = new List(); foreach (KeyValuePair p in perfilesPorPermiso) { 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)); + //permisosCifrados.Add(_encript.EncryptHashTkn(key) + "::" + val); + permisosCifrados.Add(key + "::" + "[" + val + "]"); } var securityTokenDescriptor = new SecurityTokenDescriptor @@ -406,7 +419,12 @@ namespace MSAdminUsuarios.Controllers var securityToken = jwtSecurityTokenHandler.CreateToken(securityTokenDescriptor); var token = jwtSecurityTokenHandler.WriteToken(securityToken); - return Encripter.Cypher(token); + AutorizaDTO autorizaDTO = new AutorizaDTO(); + autorizaDTO.token = Encripter.Cypher(token); + autorizaDTO.permisos = permisosCifrados; + + //return Encripter.Cypher(token); + return autorizaDTO; } [HttpPatch("BloquearUsuario")] @@ -539,7 +557,9 @@ namespace MSAdminUsuarios.Controllers public class ResLoginExt { - public ResLoginExt(string _message, bool _exist = false, int? _estado = null, string? _token = "", int? _primera = null, string? _user = "", int? _ldap = null) + //public ResLoginExt(string _message, bool _exist = false, int? _estado = null, string? _token = "", int? _primera = null, string? _user = "", int? _ldap = null) + public ResLoginExt(string _message, bool _exist = false, int? _estado = null, AutorizaDTO? _token = null, int? _primera = null, string? _user = "", int? _ldap = null) + { Message = _message; Token = _token; @@ -552,8 +572,9 @@ namespace MSAdminUsuarios.Controllers } public bool Existe { get; set; } - public int? Estado { get; set; } - public string? Token { get; set; } + public int? Estado { get; set; } + //public string? Token { get; set; } + public AutorizaDTO? Token { get; set; } public string Message { get; set; } = null!; public int? Primera { get; set; } public string? User { get; set; } diff --git a/Microservicios/MsUsuarios/Dto/AutorizaDTO.cs b/Microservicios/MsUsuarios/Dto/AutorizaDTO.cs new file mode 100644 index 0000000..078cfde --- /dev/null +++ b/Microservicios/MsUsuarios/Dto/AutorizaDTO.cs @@ -0,0 +1,8 @@ +namespace MSAdminUsuarios.Dto +{ + public class AutorizaDTO + { + public string token { get; set; } = ""; + public List permisos { get; set; } = new List(); + } +}