Ajustes para nuevo token

This commit is contained in:
Dario F. Gomez Z 2024-11-25 13:50:21 -05:00
parent 9cbf2d3047
commit f1fe950f50
3 changed files with 46 additions and 16 deletions

View File

@ -22,10 +22,11 @@ namespace Security
} }
else else
{ {
string DevKey = Environment.GetEnvironmentVariable("MySecretKey")!; ReadCredentials();
/*string DevKey = Environment.GetEnvironmentVariable("MySecretKey")!;
HashKey = DevKey; HashKey = DevKey;
PwdKey = DevKey; PwdKey = DevKey;
_SEMILLA = 1262; _SEMILLA = 1262;*/
} }
} }

View File

@ -2,6 +2,7 @@ using LdapLoginLib;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.IdentityModel.Tokens; using Microsoft.IdentityModel.Tokens;
using MSAdminUsuarios.Context; using MSAdminUsuarios.Context;
using MSAdminUsuarios.Dto;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using Security; using Security;
using System.IdentityModel.Tokens.Jwt; using System.IdentityModel.Tokens.Jwt;
@ -67,10 +68,11 @@ namespace MSAdminUsuarios.Controllers
); );
if (loggedWithLdap == true) { if (loggedWithLdap == true) {
string token = Token(userldap); //string token = Token(userldap);
AutorizaDTO autorizado = Token(userldap);
return Ok(new return Ok(new
{ {
token = token, token = autorizado.token,
user = userldap.TX_PKDOC_USUMS, user = userldap.TX_PKDOC_USUMS,
ldap = 1 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; user.FE_RECUPERACLAVE = null;
_context.USUARIOSMs.Update(user); _context.USUARIOSMs.Update(user);
_context.SaveChanges(); _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) catch (Exception e)
@ -269,8 +272,9 @@ namespace MSAdminUsuarios.Controllers
if (user == null) return BadRequest("No se encuentra usuario"); if (user == null) return BadRequest("No se encuentra usuario");
string newToken = Token(user); //string newToken = Token(user);
return Ok(newToken); AutorizaDTO autorizado = Token(user);
return Ok(autorizado.token);
} catch(Exception ex) } catch(Exception ex)
{ {
@ -311,7 +315,7 @@ namespace MSAdminUsuarios.Controllers
} }
[HttpPost("pruebaUsuario")] [HttpPost("pruebaUsuario")]
public string Token(USUARIO user) public AutorizaDTO Token(USUARIO user)
{ {
List<PERFILPORUSUARIO> perfilesPorUsuario = (from perf in _context.PERFILESPORUSUARIOs 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 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)) if (perfilesPorPermiso.ContainsKey(key))
{ {
string antVal = perfilesPorPermiso[key]; string antVal = perfilesPorPermiso[key];
perfilesPorPermiso.Remove(key); /*perfilesPorPermiso.Remove(key);
perfilesPorPermiso.Add(key, antVal + "," + val); perfilesPorPermiso.Add(key, antVal + "," + val);*/
List<string> result = new List<string>(antVal.Split(','));
if (!result.Contains(val))
{
perfilesPorPermiso.Remove(key);
perfilesPorPermiso.Add(key, antVal + "," + val);
}
} }
else else
{ {
@ -387,12 +397,15 @@ namespace MSAdminUsuarios.Controllers
// claims.AddClaim(new Claim("permisos", Encripter.Encrypt(p.NU_FK_MS.ToString()))); // claims.AddClaim(new Claim("permisos", Encripter.Encrypt(p.NU_FK_MS.ToString())));
//} //}
List<string> permisosCifrados = new List<string>();
foreach (KeyValuePair<string, string> p in perfilesPorPermiso) foreach (KeyValuePair<string, string> p in perfilesPorPermiso)
{ {
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("permisos", _encript.EncryptHashTkn(key) + "::" + val));
//permisosCifrados.Add(_encript.EncryptHashTkn(key) + "::" + val);
permisosCifrados.Add(key + "::" + "[" + val + "]");
} }
var securityTokenDescriptor = new SecurityTokenDescriptor var securityTokenDescriptor = new SecurityTokenDescriptor
@ -406,7 +419,12 @@ namespace MSAdminUsuarios.Controllers
var securityToken = jwtSecurityTokenHandler.CreateToken(securityTokenDescriptor); var securityToken = jwtSecurityTokenHandler.CreateToken(securityTokenDescriptor);
var token = jwtSecurityTokenHandler.WriteToken(securityToken); 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")] [HttpPatch("BloquearUsuario")]
@ -539,7 +557,9 @@ namespace MSAdminUsuarios.Controllers
public class ResLoginExt 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; Message = _message;
Token = _token; Token = _token;
@ -552,8 +572,9 @@ namespace MSAdminUsuarios.Controllers
} }
public bool Existe { get; set; } public bool Existe { get; set; }
public int? Estado { get; set; } public int? Estado { get; set; }
public string? Token { get; set; } //public string? Token { get; set; }
public AutorizaDTO? Token { get; set; }
public string Message { get; set; } = null!; public string Message { get; set; } = null!;
public int? Primera { get; set; } public int? Primera { get; set; }
public string? User { get; set; } public string? User { get; set; }

View File

@ -0,0 +1,8 @@
namespace MSAdminUsuarios.Dto
{
public class AutorizaDTO
{
public string token { get; set; } = "";
public List<string> permisos { get; set; } = new List<string>();
}
}