Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/autentificacion/ejemplo»
De WikiEducator
Línea 53: | Línea 53: | ||
php artisan migrate | php artisan migrate | ||
*Y observamos como nos ha creado la tabla con los campos deseados. | *Y observamos como nos ha creado la tabla con los campos deseados. | ||
− | *Ahora poblamos la tabla | + | *Ahora poblamos la tabla de usuarios y tocaremos un modelo para hacerlo |
+ | ==Creando el modelo=== | ||
+ | *Si vamos a la carpeta de models, vemos que existe un modelo creado llamado '''''users'''''. Este modelo se ha creado por que está asociado a la clase Auth que a continuación comentaremos. Para personalizar un poco todo y entender mejor el proceso vamos a modificar este modelo y llamarle '''''Usuario''''' y a la tabla asociada al modelo usuarios | ||
+ | *Esto lo hacemos cambiando en el nombre del fichero | ||
+ | /app/Models/User.php lo cambiamos a /app/Models/Usuario.php | ||
+ | *Dentro del fichero donde ponía | ||
+ | <source lang=php> | ||
+ | ... | ||
+ | class User extends Eloquent ... | ||
+ | ... | ||
+ | protected $table = 'users'; | ||
+ | .. | ||
+ | </source> | ||
+ | *Ponemos | ||
+ | <source lang=php> | ||
+ | ... | ||
+ | |||
+ | class Ususario extends Eloquent ... | ||
+ | ... | ||
+ | protected $table = 'usuarios'; | ||
+ | ... | ||
+ | </source> | ||
+ | |||
+ | *Ahora que ya tenemos el modelo Usuario con su tabla, que previamente hemos creado vamos a poblarla | ||
+ | ===Poblando la tabla=== | ||
+ | *Para ello como ya sabemos en la carpeta seed, cremos una nuevo clase que extienda de Seeder; por ejemplo la llamamos PoblarUsuariosSeeders, y usando el modelo dentro del método run, creamos un nuevo registros | ||
+ | *OBservamos que usamos la clase Hash para cifrar el contenido de la password | ||
+ | <source lang=php> | ||
+ | class PoblarUsuariosSeeders extends Seeder { | ||
+ | //put your code here | ||
+ | public function run() | ||
+ | { //Usando el modelo creamos un nuevo registro. Tambien se puede hacer con el método save | ||
+ | Usuario::create(array( | ||
+ | 'usuario' => 'manolo', | ||
+ | 'email' => 'admin@admin.com', | ||
+ | 'password' => Hash::make('manolo') // Hash::make() nos va generar una cadena con nuestra contraseña encriptada | ||
+ | } | ||
+ | } | ||
+ | *Para llamar a este método modificamos el método run de la clase '''''DataBaseSeeder.php | ||
+ | <source lang=php | ||
+ | ... | ||
+ | public function run() | ||
+ | { | ||
+ | Eloquent::unguard(); | ||
+ | $this->call('DatosUsuarios'); //Esta es la línea que añadimos | ||
+ | } | ||
+ | ... | ||
+ | </source> | ||
+ | *Ahora ejecutando desde la consola con artisan tendremos el nuevo registro creado | ||
+ | php artisan db | ||
+ | *Verificamos que tenemos el registro creado | ||
+ | ===Auth.php=== | ||
+ | Como hemos modificao el modelo, vamos a indicar a la clase de autentificación cual es el modelo que usaremos para autentificar usuarios que sera '''''Usuario''''' | ||
+ | <source lang=php> | ||
+ | ... | ||
+ | |||
+ | 'model' => 'Usuario', | ||
+ | ... | ||
+ | 'table' => 'usuarios', | ||
+ | </source> | ||
+ | *De momento no tocamos la gestion de como recordar la password | ||
+ | ===Preparando las rutas=== | ||
+ | *Para este ejemplo vamos a tener la siguiente sitiación | ||
+ | *Un usuario solo puede acceder al sitio web si previamente se ha identificado | ||
+ | *Para identificarse usaremos el login que tenemos de la tienda | ||
+ | *Una vez logueado le daremos la opción de desloguearse | ||
+ | *No lo hemos visto anteriormente pero es muy intuitivo, y es el tema de los filtros | ||
+ | *En este caso le estamos diciendo que existen ciertas rutas que solo cargará si el usuario previamente se ha identificado | ||
+ | *Con solo hacer esto no tenemos que validar el usuario ante ninguna acción. | ||
+ | *El código es tan sencillo como | ||
+ | <source lang=php> | ||
+ | Route::get('/', ['before'=>'auth'] | ||
+ | </source> | ||
+ | <source lang=php><?php | ||
+ | |||
+ | // Nos mostrará el formulario de login. | ||
+ | Route::get('login', 'AuthController@showLogin'); | ||
+ | |||
+ | // Validamos los datos de inicio de sesión. | ||
+ | Route::post('login', 'AuthController@postLogin'); | ||
+ | |||
+ | // Nos indica que las rutas que están dentro de él sólo serán mostradas si antes el usuario se ha autenticado. | ||
+ | Route::group(array('before' => 'auth'), function() | ||
+ | { | ||
+ | // Esta será nuestra ruta de bienvenida. | ||
+ | Route::get('/', function() | ||
+ | { | ||
+ | return View::make('hello'); | ||
+ | }); | ||
+ | // Esta ruta nos servirá para cerrar sesión. | ||
+ | Route::get('logout', 'AuthController@logOut'); | ||
+ | }); | ||
+ | |||
+ | </source> | ||
*Usaremos el formulario usado para la tienda | *Usaremos el formulario usado para la tienda | ||
*Para ello usaremos tienda.css. Este fichero lo debemos copiar en la carpeta | *Para ello usaremos tienda.css. Este fichero lo debemos copiar en la carpeta | ||
/public/css/tienda.css | /public/css/tienda.css | ||
+ | *Creando los controladores | ||
+ | php artisan controller:make Autentificacion | ||
+ | php artisan controller:make Accion | ||
+ | *Incluimos los métodos especificados en el router.php dentro de los controladores |
Revisión de 19:04 11 feb 2015
- A continuación vamos a realizar un sistema de logín donde vemos todos los conceptos
- Crearemos el proyecto indicando todos los pasos
Creando el proyecto
- Creamos un proyecto nuevo
composer create-project laravel/laravel=4.2 autentificacion
- Configuramos la base de datos para crear en ella la tabla de usuarios
- Realizamos la siguiente configuración
'seguridad' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'tienda', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ),
- Creamos las tablas con migration
php artisan migration:make tablaUsuarios php artisan migration
- Editamos el fichero que ha creado la migración y añadimos los campos que necesitamos en el método up
... public function up(){ Schema::create('usuarios', function($table){ $table->increments('id'); $table->string('password'); $table->string('email'); $table->string('usuario'); $table->timestamps(); $tabla->rememberToken(); }); } public function down(){ Shema::drop('usuarios'); } *Ahora ejecutamos la migración para que se cree la tabla php artisan migrate *Ahora añadimos el campo para poder recordar el usuario conectado php artisan migrate:make tablaUsuarios2 *Cargamos lo que queremos que se ejecute en el método up del nuevo fichero creado <source lang=php> .... Schema::table('usuarios', function($tabla){ $tabla->rememberToken(); });
- Ejecutamos la migracion
php artisan migrate
- Y observamos como nos ha creado la tabla con los campos deseados.
- Ahora poblamos la tabla de usuarios y tocaremos un modelo para hacerlo
Creando el modelo=
- Si vamos a la carpeta de models, vemos que existe un modelo creado llamado users. Este modelo se ha creado por que está asociado a la clase Auth que a continuación comentaremos. Para personalizar un poco todo y entender mejor el proceso vamos a modificar este modelo y llamarle Usuario y a la tabla asociada al modelo usuarios
- Esto lo hacemos cambiando en el nombre del fichero
/app/Models/User.php lo cambiamos a /app/Models/Usuario.php
- Dentro del fichero donde ponía
... class User extends Eloquent ... ... protected $table = 'users'; ..
- Ponemos
... class Ususario extends Eloquent ... ... protected $table = 'usuarios'; ...
- Ahora que ya tenemos el modelo Usuario con su tabla, que previamente hemos creado vamos a poblarla
Poblando la tabla
- Para ello como ya sabemos en la carpeta seed, cremos una nuevo clase que extienda de Seeder; por ejemplo la llamamos PoblarUsuariosSeeders, y usando el modelo dentro del método run, creamos un nuevo registros
- OBservamos que usamos la clase Hash para cifrar el contenido de la password
class PoblarUsuariosSeeders extends Seeder { //put your code here public function run() { //Usando el modelo creamos un nuevo registro. Tambien se puede hacer con el método save Usuario::create(array( 'usuario' => 'manolo', 'email' => 'admin@admin.com', 'password' => Hash::make('manolo') // Hash::make() nos va generar una cadena con nuestra contraseña encriptada } } *Para llamar a este método modificamos el método run de la clase '''''DataBaseSeeder.php <source lang=php ... public function run() { Eloquent::unguard(); $this->call('DatosUsuarios'); //Esta es la línea que añadimos } ...
- Ahora ejecutando desde la consola con artisan tendremos el nuevo registro creado
php artisan db
- Verificamos que tenemos el registro creado
Auth.php
Como hemos modificao el modelo, vamos a indicar a la clase de autentificación cual es el modelo que usaremos para autentificar usuarios que sera Usuario
... 'model' => 'Usuario', ... 'table' => 'usuarios',
- De momento no tocamos la gestion de como recordar la password
Preparando las rutas
- Para este ejemplo vamos a tener la siguiente sitiación
- Un usuario solo puede acceder al sitio web si previamente se ha identificado
- Para identificarse usaremos el login que tenemos de la tienda
- Una vez logueado le daremos la opción de desloguearse
- No lo hemos visto anteriormente pero es muy intuitivo, y es el tema de los filtros
- En este caso le estamos diciendo que existen ciertas rutas que solo cargará si el usuario previamente se ha identificado
- Con solo hacer esto no tenemos que validar el usuario ante ninguna acción.
- El código es tan sencillo como
Route::get('/', ['before'=>'auth']
<?php // Nos mostrará el formulario de login. Route::get('login', 'AuthController@showLogin'); // Validamos los datos de inicio de sesión. Route::post('login', 'AuthController@postLogin'); // Nos indica que las rutas que están dentro de él sólo serán mostradas si antes el usuario se ha autenticado. Route::group(array('before' => 'auth'), function() { // Esta será nuestra ruta de bienvenida. Route::get('/', function() { return View::make('hello'); }); // Esta ruta nos servirá para cerrar sesión. Route::get('logout', 'AuthController@logOut'); });
- Usaremos el formulario usado para la tienda
- Para ello usaremos tienda.css. Este fichero lo debemos copiar en la carpeta
/public/css/tienda.css
- Creando los controladores
php artisan controller:make Autentificacion php artisan controller:make Accion
- Incluimos los métodos especificados en el router.php dentro de los controladores