public IHttpActionResult RefreshUsuario([FromBody] TokenModel payload) { Negocio.Administracion.Usuario boUsuario = new Negocio.Administracion.Usuario(); var principal = TokenGenerator.GetPrincipalFromExpiredToken(payload.ApiToken); List <Usuario> usuarios; boUsuario.ObtenerUsuario(new FiltroUsuario { Cedula = principal.Identity.Name.ToLower(), Includes = new string[] { "UsuarioDistribuidora.Distribuidora" } }, out usuarios); var savedRefreshToken = usuarios[0].RefreshToken; if (savedRefreshToken != payload.RefreshToken) { return(Unauthorized()); } var newUsuario = usuarios[0]; newUsuario.RefreshToken = TokenGenerator.GenerateRefreshToken(); newUsuario.PushToken = payload.PushToken; newUsuario.EsModificado = true; boUsuario.GuardarUsuario(new List <Usuario>() { newUsuario }); newUsuario.Token = TokenGenerator.GenerateTokenJWT(newUsuario.Cedula.ToLower()); // Envío de Notificación push dummy para validar el funcionamiento. Se envia en cada refresh if (!string.IsNullOrEmpty(usuarios[0].PushToken)) { Api.Firebase.Integrador.PushNotification push = new Firebase.Integrador.PushNotification(); Task.Run(() => push.ProcesoPush(new PrivilegioUsuarioDistribuidora() { Proceso = Entidad.Enums.ProcesoPrivilegioUsuarioDistribuidora.AsignaActualiza, IdUsuarioDistribuidora = 1 })); } return(Ok(newUsuario)); }
public IHttpActionResult AutenticarUsuario(LoginModel login) { if (login == null || string.IsNullOrEmpty(login.NombreUsuario) || string.IsNullOrEmpty(login.Pass)) { return(Unauthorized()); } Negocio.Seguridad.Seguridad boSeguridad = new Negocio.Seguridad.Seguridad(); Negocio.Administracion.Usuario boUsuario = new Negocio.Administracion.Usuario(); if (boSeguridad.ValidarUsuario(login.NombreUsuario, login.Pass)) { List <Usuario> usuarios; boUsuario.ObtenerUsuario(new FiltroUsuario { Cedula = login.NombreUsuario.ToLower(), Includes = new string[] { "UsuarioDistribuidora.Distribuidora" } }, out usuarios); var usuario = usuarios.FirstOrDefault(); usuario.RefreshToken = TokenGenerator.GenerateRefreshToken(); usuario.PushToken = login.PushToken; usuario.EsModificado = true; boUsuario.GuardarUsuario(new List <Usuario>() { usuario }); usuario.Token = TokenGenerator.GenerateTokenJWT(login.NombreUsuario.ToLower()); //if (!string.IsNullOrEmpty(usuario.PushToken)) //{ //Api.Firebase.Integrador.PushNotification push = new Firebase.Integrador.PushNotification(); //Task.Run(() => push.SendPushAsync(usuario.PushToken, $"{usuario.Nombre} {usuario.Apellido}")); return(Ok(usuario)); } else { return(Unauthorized()); } }