Se añaden mejoras al codigo realizado

Se añade clase custom de response codes
Se añade api doc
Se añade fix al login en mensajes de error e interacciones no deseadas
parent 28e7c8f6
...@@ -32,10 +32,20 @@ ...@@ -32,10 +32,20 @@
<div class="d-flex flex-column-fluid flex-center"> <div class="d-flex flex-column-fluid flex-center">
<!--begin::Signin--> <!--begin::Signin-->
<div class="login-form login-signin"> <div class="login-form login-signin">
{% if error %}
<div class="alert alert-custom alert-outline-danger fade show mb-5" role="alert">
<div class="alert-icon"><i class="flaticon-warning"></i></div>
<div class="alert-text">{{ error.message|trans({},'messages') }}</div>
<div class="alert-close">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="ki ki-close"></i></span>
</button>
</div>
</div>
{% endif %}
<!--begin::Form--> <!--begin::Form-->
<form class="form" action="{{ path('backend_login_check') }}" method="post" novalidate="novalidate" id="kt_login_signin_form"> <form class="form" action="{{ path('backend_login_check') }}" method="post" novalidate="novalidate" id="kt_login_signin_form">
{{ include('login/includes/alertMessages.html.twig') }}
<!--begin::Title--> <!--begin::Title-->
<div class="pb-13 pt-lg-0 pt-5"> <div class="pb-13 pt-lg-0 pt-5">
<h3 class="font-weight-bolder text-dark font-size-h4 font-size-h1-lg">Bienvenido!</h3> <h3 class="font-weight-bolder text-dark font-size-h4 font-size-h1-lg">Bienvenido!</h3>
......
...@@ -10,6 +10,10 @@ ws: ...@@ -10,6 +10,10 @@ ws:
resource: "@WsBundle/Resources/config/routing.yml" resource: "@WsBundle/Resources/config/routing.yml"
prefix: /api prefix: /api
NelmioApiDocBundle:
resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
prefix: /api/doc
campania_api_test: campania_api_test:
path: mcafee/landing/1 path: mcafee/landing/1
......
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
namespace AppBundle\Lib;
/**
* Description of Responses
*
* @author cdiaz
*/
class Responses {
const HTTP_CONTINUE = 100;
const HTTP_SWITCHING_PROTOCOLS = 101;
const HTTP_PROCESSING = 102; // RFC2518
const HTTP_EARLY_HINTS = 103; // RFC8297
const HTTP_OK = 200;
const HTTP_CREATED = 201;
const HTTP_ACCEPTED = 202;
const HTTP_NON_AUTHORITATIVE_INFORMATION = 203;
const HTTP_NO_CONTENT = 204;
const HTTP_RESET_CONTENT = 205;
const HTTP_PARTIAL_CONTENT = 206;
const HTTP_MULTI_STATUS = 207; // RFC4918
const HTTP_ALREADY_REPORTED = 208; // RFC5842
const HTTP_IM_USED = 226; // RFC3229
const HTTP_MULTIPLE_CHOICES = 300;
const HTTP_MOVED_PERMANENTLY = 301;
const HTTP_FOUND = 302;
const HTTP_SEE_OTHER = 303;
const HTTP_NOT_MODIFIED = 304;
const HTTP_USE_PROXY = 305;
const HTTP_RESERVED = 306;
const HTTP_TEMPORARY_REDIRECT = 307;
const HTTP_PERMANENTLY_REDIRECT = 308; // RFC7238
const HTTP_BAD_REQUEST = 400;
const HTTP_UNAUTHORIZED = 401;
const HTTP_PAYMENT_REQUIRED = 402;
const HTTP_FORBIDDEN = 403;
const HTTP_NOT_FOUND = 404;
const HTTP_METHOD_NOT_ALLOWED = 405;
const HTTP_NOT_ACCEPTABLE = 406;
const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407;
const HTTP_REQUEST_TIMEOUT = 408;
const HTTP_CONFLICT = 409;
const HTTP_GONE = 410;
const HTTP_LENGTH_REQUIRED = 411;
const HTTP_PRECONDITION_FAILED = 412;
const HTTP_REQUEST_ENTITY_TOO_LARGE = 413;
const HTTP_REQUEST_URI_TOO_LONG = 414;
const HTTP_UNSUPPORTED_MEDIA_TYPE = 415;
const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
const HTTP_EXPECTATION_FAILED = 417;
const HTTP_I_AM_A_TEAPOT = 418; // RFC2324
const HTTP_MISDIRECTED_REQUEST = 421; // RFC7540
const HTTP_UNPROCESSABLE_ENTITY = 422; // RFC4918
const HTTP_LOCKED = 423; // RFC4918
const HTTP_FAILED_DEPENDENCY = 424; // RFC4918
const HTTP_TOO_EARLY = 425; // RFC-ietf-httpbis-replay-04
const HTTP_UPGRADE_REQUIRED = 426; // RFC2817
const HTTP_PRECONDITION_REQUIRED = 428; // RFC6585
const HTTP_TOO_MANY_REQUESTS = 429; // RFC6585
const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431; // RFC6585
const HTTP_UNAVAILABLE_FOR_LEGAL_REASONS = 451;
const HTTP_INTERNAL_SERVER_ERROR = 500;
const HTTP_NOT_IMPLEMENTED = 501;
const HTTP_BAD_GATEWAY = 502;
const HTTP_SERVICE_UNAVAILABLE = 503;
const HTTP_GATEWAY_TIMEOUT = 504;
const HTTP_VERSION_NOT_SUPPORTED = 505;
const HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL = 506; // RFC2295
const HTTP_INSUFFICIENT_STORAGE = 507; // RFC4918
const HTTP_LOOP_DETECTED = 508; // RFC5842
const HTTP_NOT_EXTENDED = 510; // RFC2774
const HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511; // RFC6585
}
...@@ -17,6 +17,7 @@ use WsBundle\Controller\v1\serializer\szerBodyContenido; ...@@ -17,6 +17,7 @@ use WsBundle\Controller\v1\serializer\szerBodyContenido;
use WsBundle\Controller\v1\serializer\szerFooterContenido; use WsBundle\Controller\v1\serializer\szerFooterContenido;
use WsBundle\Controller\v1\serializer\szerHtmlContenido; use WsBundle\Controller\v1\serializer\szerHtmlContenido;
use AppBundle\Lib\Utiles; use AppBundle\Lib\Utiles;
use AppBundle\Lib\Responses;
use AppBundle\Model\Disposicion; use AppBundle\Model\Disposicion;
use AppBundle\Model\DisposicionQuery; use AppBundle\Model\DisposicionQuery;
use AppBundle\Model\Campania; use AppBundle\Model\Campania;
...@@ -31,6 +32,27 @@ class CampaniaApiController extends ApiController { ...@@ -31,6 +32,27 @@ class CampaniaApiController extends ApiController {
const FIRST_COLUMN = 1; const FIRST_COLUMN = 1;
const FIRST_ROW = 1; const FIRST_ROW = 1;
/**
*
* Obtiene contenido html de la camapaña en formato json
*
*
* @ApiDoc(
* section="Generación Contenido HTML Campaña",
* tags={"stable" = "#2EFE2E"},
* resource=true,
* description="Se obtiene configuracion del contenido html a generar en la campaña, en base a los registros de la tabla campania y campania_contenido, relacionado esta ultima con la tabla template_css_relacion en ba se a la disposicion, disposicion de columnas, id del template a utilizar y tipo del contenido a generar.",
* input="WsBundle\Controller\v1\serializer\szerCampania",
* output="WsBundle\Controller\v1\serializer\szerHtmlContenido",
* statusCodes={
* 200="OK",
* 400="Parámetros de Entrada Inválidos",
* 412="No se cumple la condicion del entorno",
* 500="Error interno"
* }
* )
*
*/
public function obtenerContenidoAction(Request $request) { public function obtenerContenidoAction(Request $request) {
$log = Utiles::setLog('CampaniaBundle\Controller\CampaniaController:obtenerContenidoAction', 'mcafee/ws/index'); $log = Utiles::setLog('CampaniaBundle\Controller\CampaniaController:obtenerContenidoAction', 'mcafee/ws/index');
$tiempo_inicio = microtime(true); $tiempo_inicio = microtime(true);
...@@ -45,7 +67,7 @@ class CampaniaApiController extends ApiController { ...@@ -45,7 +67,7 @@ class CampaniaApiController extends ApiController {
if ($szerValidatorCampania instanceof szerCampania === false) { if ($szerValidatorCampania instanceof szerCampania === false) {
$log->err('problemas en deserialize... ' . print_r($szerValidatorCampania, true) . print_r($request->getContent(), true)); $log->err('problemas en deserialize... ' . print_r($szerValidatorCampania, true) . print_r($request->getContent(), true));
$log->debug('Peticion Finalizada. tiempo:' . round(microtime(true) - $tiempo_inicio, 4)); $log->debug('Peticion Finalizada. tiempo:' . round(microtime(true) - $tiempo_inicio, 4));
return View::create(array('msg' =>"Ha ocurrido un error con los datos de entrada szerCampania .",'errors' => $szerValidatorCampania), Response::HTTP_BAD_REQUEST); return View::create(array('msg' =>"Ha ocurrido un error con los datos de entrada szerCampania .",'errors' => $szerValidatorCampania), Responses::HTTP_BAD_REQUEST);
} }
$log->debug("analizando si es dispositivo movil...ua : ".$request->headers->get('User-Agent')); $log->debug("analizando si es dispositivo movil...ua : ".$request->headers->get('User-Agent'));
...@@ -54,7 +76,7 @@ class CampaniaApiController extends ApiController { ...@@ -54,7 +76,7 @@ class CampaniaApiController extends ApiController {
if ($isMobile == -1) { if ($isMobile == -1) {
$log->err('no se pudo determinar el entorno... '); $log->err('no se pudo determinar el entorno... ');
$log->debug('Peticion Finalizada. tiempo:' . round(microtime(true) - $tiempo_inicio, 4)); $log->debug('Peticion Finalizada. tiempo:' . round(microtime(true) - $tiempo_inicio, 4));
return View::create(array('errors' => "no se pudo determinar el entorno."), Response::HTTP_BAD_REQUEST); return View::create(array('errors' => "no se pudo determinar el entorno."), Responses::HTTP_PRECONDITION_FAILED );
} else if ($isMobile) { } else if ($isMobile) {
$log->debug("petición realizada desde un dispositivo movil..."); $log->debug("petición realizada desde un dispositivo movil...");
$esMovil = true; $esMovil = true;
...@@ -81,7 +103,7 @@ class CampaniaApiController extends ApiController { ...@@ -81,7 +103,7 @@ class CampaniaApiController extends ApiController {
$view = View::create(); $view = View::create();
$view->setData($szerHtmlContenido); $view->setData($szerHtmlContenido);
$view->setStatusCode(200); $view->setStatusCode(Responses::HTTP_OK);
$log->debug('Peticion Finalizada. tiempo:' . round(microtime(true) - $tiempo_inicio, 4)); $log->debug('Peticion Finalizada. tiempo:' . round(microtime(true) - $tiempo_inicio, 4));
return $view; return $view;
......
"use strict"; "use strict";
// Class Definition // Class Definition
var KTLogin = function() { var KTLogin = function () {
var _login; var _login;
var _showForm = function(form) { var _showForm = function (form) {
var cls = 'login-' + form + '-on'; var cls = 'login-' + form + '-on';
var form = 'kt_login_' + form + '_form'; var form = 'kt_login_' + form + '_form';
...@@ -17,7 +17,7 @@ var KTLogin = function() { ...@@ -17,7 +17,7 @@ var KTLogin = function() {
KTUtil.animateClass(KTUtil.getById(form), 'animate__animated animate__backInUp'); KTUtil.animateClass(KTUtil.getById(form), 'animate__animated animate__backInUp');
} }
var _handleSignInForm = function() { var _handleSignInForm = function () {
var validation; var validation;
// Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/
...@@ -52,19 +52,12 @@ var KTLogin = function() { ...@@ -52,19 +52,12 @@ var KTLogin = function() {
$('#kt_login_signin_submit').on('click', function (e) { $('#kt_login_signin_submit').on('click', function (e) {
e.preventDefault(); e.preventDefault();
validation.validate().then(function(status) { validation.validate().then(function (status) {
if (status == 'Valid') { if (status == 'Valid') {
swal.fire({
text: "Ingresando...",
icon: "success",
buttonsStyling: false,
customClass: {
confirmButton: "btn font-weight-bold btn-light-primary"
}
}).then(function() {
console.log("ingresando");
$("#kt_login_signin_form").submit(); $("#kt_login_signin_form").submit();
});
} else { } else {
swal.fire({ swal.fire({
text: "Ocurrio un error, intente nuevamente", text: "Ocurrio un error, intente nuevamente",
...@@ -74,7 +67,7 @@ var KTLogin = function() { ...@@ -74,7 +67,7 @@ var KTLogin = function() {
customClass: { customClass: {
confirmButton: "btn font-weight-bold btn-light-primary" confirmButton: "btn font-weight-bold btn-light-primary"
} }
}).then(function() { }).then(function () {
KTUtil.scrollTop(); KTUtil.scrollTop();
}); });
} }
...@@ -87,7 +80,7 @@ var KTLogin = function() { ...@@ -87,7 +80,7 @@ var KTLogin = function() {
// Public Functions // Public Functions
return { return {
// public functions // public functions
init: function() { init: function () {
_login = $('#kt_login'); _login = $('#kt_login');
_handleSignInForm(); _handleSignInForm();
...@@ -98,6 +91,6 @@ var KTLogin = function() { ...@@ -98,6 +91,6 @@ var KTLogin = function() {
}(); }();
// Class Initialization // Class Initialization
jQuery(document).ready(function() { jQuery(document).ready(function () {
KTLogin.init(); KTLogin.init();
}); });
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment