jueves, 26 de abril de 2018

Crear un blog personal con Laravel - Parte 4

   



Crea Un Blog Personal Con Laravel 5.6

Creando un área solo para miembros

Como saben, nuestro sistema de blog está basado en miembros. Por eso, necesitamos que algunas áreas solo sean accesibles por miembros, para agregar nuevas publicaciones al blog. Tenemos dos métodos diferentes para hacer esto. El primero es el método de filtro de ruta, que elaboraremos en los próximos capítulos. El segundo es la verificación de autorización basada en plantilla. Este método es una forma más efectiva de entender el uso de la clase Auth con el sistema de plantillas Blade.

Con la clase Auth podemos verificar el estado de autorización de un visitante con solo una línea de código:

Auth::check();

La función check(), que se basa en la clase Auth, siempre devuelve verdadero o falso. Entonces, eso significa que podemos usar fácilmente la función en una declaración if/else en nuestro código. Como sabrá en capítulos anteriores, con el sistema de plantillas blade pudimos usar ese tipo de declaración PHP en los archivos de plantilla.

Antes de crear los archivos de plantilla, necesitamos escribir nuestras rutas. Necesitamos cuatro rutas para nuestra aplicación. Estos son:

  • Una ruta de inicio de sesión para procesar las solicitudes de inicio de sesión.
  • Una nueva ruta de publicación para procesar nuevas solicitudes de publicaciones
  • Una ruta de administrador para mostrar un nuevo formulario de publicación y un formulario de inicio de sesión
  • Una ruta de índice para publicar publicaciones.
El enrutamiento con nombre es otra característica sorprendente del marco de Laravel para un desarrollo rápido. Las rutas con nombre permiten hacer referencia a las rutas al generar redirecciones o URL de manera más cómoda. Puede especificar un nombre para una ruta de la siguiente manera:


Route::get('todos/articulos', function () {
    //
})->name('articulos');


También puede especificar nombres de ruta para los controladores:


Route::get('todos/articulos', 'ArticulosController@showArticulos')->name('todosarticulos');


Gracias a las rutas nombradas, podemos crear fácilmente URLs para nuestra aplicación:


<?php

//URLS DE NUESTRA APLICACION
Route::get('/', 'ArticuloController@getIndex')->name('index');
Route::get('/admin', 'ArticuloController@getAdmin')->name('area_admin');
Route::post('/add', 'ArticuloController@crearArticulo')->name('crear_nuevo_articulo');
Route::post('/login', 'UserController@postLogin')->name('login');
Route::get('/logout', 'UserController@getLogout')->name('logout');


Ahora necesitamos escribir el código para el controlador y las plantillas de nuestra aplicación. Primero, podemos comenzar a codificar desde nuestra área de administración. Vamos a crear un archivo en resources/views/ con el nombre agregarArticulo.blade.php. Nuestra plantilla de administrador debe ser similar a la siguiente:

agregarUnaVista-laravel



<html>

<head>
    <title>Mi Primer Blog</title>
    <link rel="stylesheet" type="text/css" href="/assets/css/style.css">
    
</head>

<body>
    @if(Auth::check())
    <section>
        <div >
            <h1>Bienvenidos al area de Administracion, {{Auth::user()->name}} 
            </h1>
            <form name="crearArticulo" method="POST" action="{{URL::route('crear_nuevo_articulo')}}">
                {{ csrf_field() }}
                <p>
                    <input type="text" name="titulo" placeholder="Titulo del articulo" value="" />
                </p>
                <p>
                    <textarea name="contenido" placeholder="Contenido del articulo"></textarea>
                </p>
                <p>
                    <input type="submit" name="submit" />
                </p>
            </form>
        </div>
    </section>
    @else
    <section>
        <div class="login">
            <h1>Login</h1>
            <form name="login" method="POST" action="{{URL::route('login')}}">
                {{ csrf_field() }}
                <p>
                    <input type="text" name="email" value="" placeholder="Email">
                </p>
                <p>
                    <input type="password" name="password" value="" placeholder="Password">
                </p>
                <p class="submit">
                    <input type="submit" name="commit" value="Login">
                </p>
            </form>
        </div>
    </section>
    @endif
</body>

</html>



Como puede ver en el código, usamos if/else  para verificar las credenciales de inicio de sesión de un usuario. Sabemos desde el comienzo de esta sección que usamos la función Auth::check() para verificar el estado de inicio de sesión de un usuario. Además, hemos utilizado un nuevo método para obtener el nombre del usuario que ha iniciado sesión actualmente:

Auth::user()->name;

Podemos obtener cualquier información sobre el usuario actual con el método user:

Auth::user()->id; 
Auth::user()->email;

El código de la plantilla primero verifica el estado de inicio de sesión del visitante. Si el visitante se ha conectado, la plantilla muestra un nuevo formulario de publicación; de lo contrario, muestra un formulario de inicio de sesión.

Ahora tenemos que codificar el lado del controlador de nuestra aplicación de blog. Comencemos desde nuestro controlador de usuario. Crea un archivo en la carpeta app/controller/, que se nombre UserContoller.php (Podemos usar artisan para crear el controlador, como la imagen siguiente). El código final del controlador debe ser el siguiente:

crear controlador usuario para el blog laravel


<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use App\User;
class UserController extends Controller
{
//
public function postLogin()
{
Auth::attempt(array('email' => Input::get('email'),'password' => Input::get('password')));
return redirect()->route('area_admin');
}
public function getLogout()
{
Auth::logout();
return Redirect::route('index');
}
}

El controlador tiene dos funciones: la primera es la función postLogin(). Esta función básicamente verifica los datos del formulario publicado para el inicio de sesión del usuario y luego redirige al visitante a la ruta crear_nuevo_articulo para mostrar el nuevo formulario de publicación. La segunda función procesa la solicitud de desconexión y redirige a la ruta index.


Indice del mini curso



Cesar GI

About Cesar GI

Lo que me importa es poder enseñar lo poco que se, por que asi como yo aprendo leyendo gracias a las personas que comparten sus conocimiento yo tambien quiero ayudar a la comunidad en español aportando lo poco que he aprendido hasta el momento.