Un rol de usuario es un rol predefinido que permite a los usuarios ejecutar diferentes actividades en su aplicación. Hay muchos puntos que manejar cuando trabaja con permisos de usuario (no se mencionan aquí), para que sea más fácil para el usuario y para el desarrollador, la implementación de Roles es una característica útil (y básicamente requerida) de un Usuario. sistema .
En este artículo, aprenderá cómo agregar roles a un usuario usando FOSUserBundle en Symfony 3.
Con doctrine
Puede agregar un rol a un usuario utilizando el addRole
método del objeto de usuario.
<?php
namespace ourcodeworld\adminBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class AdminController extends Controller
{
public function indexAction()
{
// Recuperar administrador de entidad de doctrine
$em = $this->getDoctrine()->getManager();
// Busque UserEntity, recupere el repositorio
$userRepository = $em->getRepository("myBundle\Entity\User");
// o $userRepository = $em->getRepository("myBundle:User");
$user = $userRepository->findOneBy(["username" => "AnyUsername"]);
// ¡Agregue el rol que desee!
$user->addRole("ROLE_ADMIN");
// Guardar cambios en la base de datos
$em->persist($user);
$em->flush();
}
}
Con fos_user.user_manager
Puede crear un usuario utilizando el administrador de usuarios de fos, servicio que se puede recuperar del contenedor ( $this->get('serviceName')
en un controlador o $container->get('')
en cualquier otro lugar con el contenedor en contexto).
<?php
namespace ourcodeworld\adminBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class AdminController extends Controller
{
public function indexAction()
{
$userManager = $this->get('fos_user.user_manager');
// Utilice findUserby, findUserByUsername () findUserByEmail () findUserByUsernameOrEmail, findUserByConfirmationToken ($ token) o findUsers ()
$user = $userManager->findUserBy(['id' => 1]);
// ¡Agregue el rol que desee!
$user->addRole("ROLE_ADMIN");
// Actualizar roles de usuario
$userManager->updateUser($user);
}
}
En la clase de usuario
También puede establecer el rol en el constructor de la clase de entidad de usuario cada vez que se registra un usuario:
<?php
// src/Acme/UserBundle/Entity/User.php
namespace myBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
public function __construct()
{
parent::__construct();
// Agregar rol
$this->addRole("ROLE_ADMIN");
}
}
El contexto de $this
será específicamente el usuario base.
Con las herramientas de línea de comandos de FOSUserBundle
Por defecto, una aplicación Symfony que implemente FOSUserBundle, automáticamente tendrá acceso a las herramientas de línea de comandos de este paquete. Estas herramientas proporcionan un comando útil que le permite agregar un rol a un usuario, el fos:user:promote
comando. Este comando le permite agregar un rol a un usuario o convertir al usuario en un superadministrador:
php bin/console fos:user:promote username ROLE_ADMIN
Que te diviertas ❤️!
Conviertete en un programador más sociable