Middlewares en Laravel

En este presente artículo vamos a ver qué es y como crear middlewares para nuestra aplicación Laravel.

veremos un uso muy útil de éstos, como puede ser el control de nuestras rutas cuando se encuentre en mantenimiento nuestra página.

¿Pero Qué son los middleware en laravel?

Un middleware en laravel es una clase que funciona como filtro en las rutas, es decir, podemos añadirle a nuestra ruta o grupo de rutas.

un middelware para restringir por ejemplo el acceso a éstas si un usuario no está autentificado en nuestra aplicación, como podrían ser las rutas donde el administrador gestiona su aplicación laravel.

El middleware más conocido y utilizado en laravel es uno de los que ya vienen creado por defecto, que es el middleware authenticate, que controla si un usuario esta logeado en nuestra aplicación.

Si añadiesemos el middleware de autenticación en nuestras rutas y el middleware comprobase que el usuario no esta autenticado lo redireccionaría por defecto a la ruta de login.

¿Como crear nuestro middelware en Laravel?

Para este ejemplo vamos a crear un middelware que comprobará si nuestra aplicación esta en modo mantenimiento.

de ser así redireccionaría al usuario a la vista donde aparecerá el mensaje de mantenimiento que crearemos más adelante.

Ahora crearemos nuestro middelware, que llamaremos «Maintenance», con el siguiente comando en nuestra consola:

php artisan make:middleware Maintenance

Una vez ejecutado este comando, lo encontraremos en la carpeta Middleware que se encuentra en la ruta  app/http/Middleware con el nombre de Maintenance.php. 

Ahora vamos a registrar el middleware en nuestra aplicación, para ello iremos a Kernel.php que se encuentra en la carpeta App/Http y nos dirijimos abajo del todo y añadimos en el array $routeMiddelware nuestro nuevo middelware:

protected $routeMiddleware = [
   ...
   ...
   'maintenance' => \App\Http\Middleware\Maintenance::class,

Ahora vamos a crear una nueva tabla en nuestra base de datos que será la encargada de guardar nuestra configuración de la aplicacion, como el mantenimiento de la página:

public function up()
{
   Schema::create('configurations', function (Blueprint $table) {
     $table->increments('id');
     $table->string('name');
     $table->boolean('state');
     $table->timestamps();
    });
}

guardaremos en nuestra tabla algo así, donde la columna state será el estado del mantenimiento (1 En mantenimiento, 0 No está en mantenimiento):

middelware laravel

Una vez hecho esto, iremos a nuestro middleware app/http/Middleware y añadiremos este código:

<?php

namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
use Closure;
use App\Configuration; //Recordar el modelo configuration para poder llamar a nuestra tabla

class Maintenance
 {
 /**
 * Handle an incoming request.
 *
 * @param \Illuminate\Http\Request $request
 * @param \Closure $next
 * @return mixed
 */
  public function handle($request, Closure $next)
   {
     if(Configuration::where(name, "mantenimiento")->state && !Auth::check()){
        return redirect('/mantenimiento');
      }
     return $next($request);
   }
 }

En la función handle añadimos la siguiente condición: «Si nuestra página está en modo mantenimiento y no estamos logeados, redirecciona a la ruta de mantenimiento».

Añadimos la comprobación de auth:check para comprobar si estamos logeados,en este caso damos por hecho que  solo el administrador puede logearse, si cualquier usuario pudiese registrarse a nuestra página entonces deberiamos cambiar esta condición y añadir si el usuario que esta logeado no es administrador.

Ahora iremos a nuestro archivo web.php que es donde se administran nuestra rutas y añadiremos nuestro middleware:

Route::group(['middleware' => ['maintenance']], function () {

/*Todas las rutas que esten en este grupo estaran restringidas si nuestro aplicacion esta
en mantenimiento y se restringira su paso si la pagina esta en mantenimiento.*/

 Route::get('/', function () {
   return view('welcome');
 });
 Route::get('/sobre-nosotros', function () {
   return view('about');
 });
 Route::get('/contactar', function () {
   return view('contact');
 });
});

//esta es la ruta a la que redireccinaremos si esta en mantenimiento, habría que crear la vista maintenance o como quieras llamarla.

 Route::get('/mantenimiento', function () {
   return view('maintenance');
 });

Después de esto, solo quedaría crear una vista que mostrase un mensaje tipo : «Esta página esta en mantenimiento, vuelve pronto».

De esta forma ya tendriamos nuestro middelware listo.

¿Qué es Laravel?

Aquí llegamos a Laravel, el “framework PHP para artesanos” según dicta su slogan. Laravel es un framework PHP de código abierto que intenta aprovechar las ventajas de otros Frameworks y desarrollar con las últimas versiones de PHP (entre otras muchas cosas que aporta como framework).

Laravel, ¿qué es?

Su filosofía es desarrollar código PHP de forma elegante y simple basado en un modelo MVC(Modelo-Vista-Controlador).

En su web https://laravel.com/ encontraremos una extensa y organizada documentación que hará mucho más fácil y efectiva la labor de los desarrolladores. Este framework está en constante mantenimiento y expansión por parte de sus desarrolladores lo que asegura la continuidad y seguridad del framework con actualizaciones regulares.

¿Cómo funciona Laravel? Algunas de las características:

En esta sección, nos centraremos más en el apartado técnico de Laravel y en las ventajas que nos aporta a la hora de desarrollar aplicaciones web.

Las características más notables que aporta Laravel son las siguientes:

  • Blade:  Blade es un sistema de plantillas para crear vistas en Laravel. Este permite extender plantillas creadas y secciones en otras vistas en las cuales también tendremos accesibles las variables y con posibilidad de utilizar código PHP en ellas, además,  ligado al uso de bootstrap u otro famework HTML generará resultados optimizados a los diferentes dispositivos (Móviles, Tablets, PC’s, etc..).

¿Por qué elegir Laravel?

La potencia de Laravel radica en su integración, escalabilidad y facilidad de mantenimiento respecto a otros desarrollos en lenguajes 100% nativos y por lo tanto es una opción más que a tener en cuenta a la hora de decidir usar este framework en nuestros desarrollos.

¿Cuándo utilizar Laravel? (tres puntos a destacar)

Como comentamos antes, la clave son las necesidades, por lo que elegiremos Laravel para desarrollos a medida cuando:

  • Los CMS no cubren nuestras necesidades como aplicación web.
  • Necesitamos de un desarrollo a medida ágil, seguro y con una fácil escalabilidad y mantenimiento.
  • Si además de necesitar una solución web, esta tiene que estar integrada con otras aplicaciones (Google, servicios de mailing, ERP’s, etc.).

Llegados a este punto, y tras todo lo comentado, solo nos queda reafirmar que Laravel y el desarrollo con Frameworks está cogiendo cada vez más fuerza ya que ofrecen soluciones asequibles para pequeñas empresas sin necesidad de embarcarte en grandes proyectos faraónicos.

TE INVITAMOS A USARLO!