Exemple #1
0
        public ActionResult Failed()
        {
            clsModelLoginMensaje model = new clsModelLoginMensaje();

            model.Mensaje = Session["UsrUltMensaje"].ToString();

            return(View(model));
        }
Exemple #2
0
        public HttpResponseMessage ValidaAccesoWeb(List <clsModelLoginValidaWeb> pdatos)
        {
            HttpResponseMessage respuesta = new HttpResponseMessage();

            // ===============================================================================
            //                      Para leer el TokenKey
            // ===============================================================================
            // https://www.guidgenerator.com/online-guid-generator.aspx

            clsTokenKey TokenKeyUtil = new clsTokenKey();
            var         headers      = Request.Headers;

            string TokenKey = "";

            if (headers.Contains("TokenKey"))
            {
                TokenKey = headers.GetValues("TokenKey").First();
            }
            if (TokenKey.Length == 0)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Key Missing"));
            }

            if (!TokenKeyUtil.fnGetTokenKeyValido(TokenKey))
            {
                return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Key Invalid or Inactive"));
            }
            // ===============================================================================



            List <clsModelLoginMensaje> lResult = new List <clsModelLoginMensaje>();

            try
            {
                string Usuario = pdatos[0].Usuario;
                string Token   = pdatos[0].Token;
                string Opcion  = pdatos[0].Opcion;

                string[] arrOpc = Opcion.Split('|');

                // Desencripta el token y valida que la primera parte
                // sea el usuario, la segunda la llave que esta en
                // el web config del api
                // con el usuario lo compara con el usuario que se recibe
                // opcion trae en un split el nombre del controlador y la accion para
                // buscarlo en la tabla de seguridad

                string EncKeyBase   = "";
                string CodigoModulo = "";
                EncKeyBase   = ConfigurationManager.AppSettings["enc_key_base"].ToString();
                CodigoModulo = ConfigurationManager.AppSettings["Codigo_Modulo"].ToString();
                clsEncryption enc = new clsEncryption(EncKeyBase);

                Token = enc.fnGetDecrypt(Token);
                string[] arr = Token.Split('|');

                if (arr.Length != 3)
                {
                    // longitud de token inválida
                    respuesta = Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Inválido L!=3");
                }
                else
                {
                    if (Usuario != arr[0])
                    {
                        // la primera parte del token no es igual al usuario
                        respuesta = Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Inválido L0!=USR");
                    }
                    else
                    {
                        if (EncKeyBase != arr[1])
                        {
                            // la segunda parte del token no es la llave
                            respuesta = Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Inválido L1!=KEY");
                        }
                        else
                        {
                            // valida acceso a la opcion
                            if (fnGetUsuarioConAcceso(Usuario, CodigoModulo, arrOpc[0], arrOpc[1]))
                            {
                                clsModelLoginMensaje Mensaje = new clsModelLoginMensaje();
                                Mensaje.Mensaje = "Token Válido";
                                lResult.Add(Mensaje);
                                respuesta = Request.CreateResponse(HttpStatusCode.OK, lResult);
                            }
                            else
                            {
                                respuesta = Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Inválido L3!=OPC");
                            }
                        }
                    }
                }
            }

            catch (Exception ex)
            {
                respuesta = Request.CreateErrorResponse(HttpStatusCode.Conflict, ex.Message.ToString() + ' ' + ex.InnerException.Message.ToString());
            }

            return(respuesta);
        }