Logo Studenta

06_Crear un comando para agregar usuarios

¡Estudia con miles de materiales!

Vista previa del material en texto

Curso Avanzado de PHP
ArtículoCrear un comando para agregar usuarios
Hector Benitez
27 de Diciembre de 2018
Como lo platicamos anteriormente, hasta este momento hemos dejado sin validación nuestra sección para crear usuarios, esto es muy conveniente en este punto porque estamos desarrollando nuestra app, pero no queremos dejar esta sección pública cuando subamos nuestra app a producción.
Vamos a continuar practicando nuestras habilidades y crearemos el comando app:create-user
Creando el comando
Debemos crear una clase nueva que en este caso yo llamaré CreateUserCommand y que debe extender de Symfony\Component\Console\Command\Command, despues de eso, vamos a agregar la propiedad estática $defaultName con el valor ‘app:create-user’; y crearemos los métodos configure y execute, aunque por ahora los dejaremos vacíos.
<<?php
namespace App\Commands;
use App\Models\User;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class CreateUserCommand extends Command
{
 protected static $defaultName = 'app:create-user';
 protected function configure()
 {
 	// Aquí va la configuración
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
	// Aquí va el código del comando
 }
}>
Configuración del comando
Ahora que ya tenemos nuestro comando vamos a pasar a agregar la configuración, para esto vamos a indicar que necesitamos un parámetro requerido que será el email del usuario.
<$this->addArgument('email', InputArgument::REQUIRED, 'The email of the user.');>
Ejecución del comando
Una vez que tenemos la configuración, es momento de ejecutar nuestro comando, para esto lo único que vamos a hacer es leer el argumento requerido y de ahi crearemos un usuario con un password default:
<$output->writeln([
 'User Creator',
 '============',
 '',
]);
$user = new User();
$user->email = $input->getArgument('email');
$user->password = password_hash('UnPassMuySeguro', PASSWORD_DEFAULT);
$user->save();
$output->writeln('Done.');>
Registro del comando
Para finalizar, lo único que necesitamos es registrar nuestro comando en el archivo console.php y ya estará listo para ser utilizado por nuestros usuarios.
$application->add(new \App\Commands\CreateUserCommand());
Conclusión
Así se debe ver el archivo final:
<<?php
namespace App\Commands;
use App\Models\User;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class CreateUserCommand extends Command
{
 protected static $defaultName = 'app:create-user';
 protected function configure()
 {
 $this
 ->addArgument('email', InputArgument::REQUIRED, 'The email of the user.')
 ;
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
 $output->writeln([
 'User Creator',
 '============',
 '',
 ]);
 $user = new User();
 $user->email = $input->getArgument('email');
 $user->password = password_hash('UnPassMuySeguro', PASSWORD_DEFAULT);
 $user->save();
 $output->writeln('Done.');
 }
}
>
¿Ves cuán fácil fue? con todo lo que aprendiste hasta este momento crear comandos será una tarea simple pero a la vez muy util para tus aplicaciones, digamos que los comandos son acciones que solo podrán ser ejecutadas por alguien que tenga acceso de consola a nuestra aplicación, por lo que estas acciones a la vez son muy seguras.
Como paso siguiente y para que sigas practicando, te propongo los siguientes retos:
· Agrega el parámetro opcional password y úsalo en caso de que el usuario lo ponga, en caso de que no lo encuentres entonces usa el default.
· Crea en la aplicación una sección para poder cambiar el password dentro del área de administración.
Con lo que sabes hasta ahora, ambas tareas serán muy sencillas para ti y te permitirán reforzar tus conocimientos.
Reportar un problema
Security

Continuar navegando