public ActionResult <ResponseBase <UsuarioQuery> > VerRolesPorUsuario(string usuario, string idAplicacion) { ResponseBase <UsuarioQuery> response = new ResponseBase <UsuarioQuery>(); response.code = 500; try { if (idAplicacion == null) { response.data = _rolesService.verRolesPorUsuario(usuario); } else { response.data = _rolesService.verRolesPorUsuario_Aplicacion(usuario, idAplicacion); } } catch (Exception e) { response.message = e.Message; } if (response.data == null) { response.code = 202; } else { response.code = 200; } return(StatusCode(response.code, response)); }
public LoginResponse IniciarSesion(CredencialesLogin request) { LoginResponse response = new LoginResponse(); response.Autenticacion = false; response.Bloqueado = false; try { Aplicacion app = _ufw.RepositoryQueryAplicacion().Find(new AplicacionSpecification(request.IdAplicacion, true, true)).FirstOrDefault(); IEnumerable <Claim> claims = null; if ((app != null) && (app.Estado == true) && (app.PermiteJWT == true) && (app.FechaExpiracionLlave.Value.CompareTo(DateTime.Now) >= 0) && (app.LlaveSecreta != null)) { request.Usuario = request.Usuario.Contains("@") ? request.Usuario.Split("@")[0] : request.Usuario; Usuario usuario = _ufw.RepositoryQueryUsuario().Find(new UsuarioSpecification(request.Usuario)).FirstOrDefault(); SignInResult result = SignInResult.Failed; if ((usuario != null)) { claims = _ufw.RepositorySessionesQueries().getClaims(usuario.UserName, app.IdAplicacion); Claim authClaim = new Claim("", String.Empty); authClaim = claims.Where(c => c.Type == ClaimTypes.AuthenticationMethod).FirstOrDefault(); if (authClaim == null) { throw new Exception("El usuario no tiene definido el tipo de Autenticación."); } //Account Service if (authClaim.Value.CompareTo("Usuario y Contraseña") == 0) { result = this._ufw.RepositorySessionesCmd().IniciarSesion(request.IdAplicacion, request.Usuario, request.Contrasena); } } else { throw new Exception("La dupla Usuario/Contraseña es incorrecta."); } if (result.Succeeded) { string algorithm = _ufw.RepositoryQueryAlgoritmo().Find(new AlgoritmoSpecification(app.AlgoritmoDeSeguridad)).FirstOrDefault().Valor; string jwt = TokenGenerator.GenerateTokenJWT(app.LlaveSecreta, algorithm, claims, app.MinutosDeVida.Value, this.Issuer, app.IdAplicacion); response.TokenJWT = new TokenJWT(); response.TokenJWT.IdAplicacion = app.IdAplicacion; response.TokenJWT.Token = jwt; response.Mensaje = "Usuario Autenticado"; var tipoAuth = _ufw.RepositoryQueryTipoAuth().Find(new TipoAuthSpecification(usuario.IdTipoAuth)).FirstOrDefault(); response.DatosUsuario = new UsuarioQuery(); response.DatosUsuario.IdUsuario = usuario.Id; response.DatosUsuario.Usuario = usuario.UserName; response.DatosUsuario.Nombres = usuario.Nombres; response.DatosUsuario.Apellidos = usuario.Apellidos; response.DatosUsuario.Identificacion = usuario.Identificacion; response.DatosUsuario.TelefonoMovil = usuario.PhoneNumber; response.DatosUsuario.Email = usuario.Email; response.DatosUsuario.IdTipoAuth = usuario.IdTipoAuth; response.DatosUsuario.TipoAutenticacion = (tipoAuth != null)? tipoAuth.Autenticacion : ""; response.DatosUsuario.Organizacion = usuario.Organizacion; response.DatosUsuario.Cargo = usuario.Cargo; response.DatosUsuario.Description = usuario.Description; response.DatosUsuario.EsExterno = usuario.EsExterno; response.DatosUsuario.Roles = _rolesService.verRolesPorUsuario_Aplicacion(usuario.UserName, app.IdAplicacion).Roles; } } else { response.Mensaje = "Inicio de sesión inválido"; } } catch (Exception e) { _ufw.InsertarLog(new _LogAutenticacionAPI("Error", request.Usuario, "Autenticación API", MethodInfo.GetCurrentMethod().Name, this.ToString(), true, e.Message, e.StackTrace)); throw e; } return(response); }