Как добавить роль пользователю с помощью FOSUserBundle в Symfony 3

Роль пользователя — это предопределенная роль, которая позволяет пользователям выполнять различные действия в вашем приложении. При работе с разрешениями пользователя (не упомянутыми здесь) необходимо учитывать множество моментов, чтобы упростить это для пользователя и разработчика. реализация ролей полезна (и в основном требуется) особенность пользовательской системы.

В этой статье вы узнаете, как добавлять роли пользователю с помощью FOSUserBundle в Symfony 3.

С доктриной

Вы можете добавить роль пользователю, используя addRole метод пользовательского объекта.

getDoctrine()->getManager();
// Search for the UserEntity, retrieve the repository
$userRepository = $em->getRepository("myBundle\Entity\User");
// or $userRepository = $em->getRepository("myBundle:User");
$user = $userRepository->findOneBy(["username" => "AnyUsername"]);
// Add the role that you want !
$user->addRole("ROLE_ADMIN");
// Save changes in the database
$em->persist($user);
$em->flush();
}
}    

С помощью fos_user.user_manager

Вы можете создать пользователя, используя менеджер пользователей fos, сервис, который можно получить из контейнера ($this->get('serviceName') в контроллере или $container->get('') в любом другом месте с контейнером в контексте).

get('fos_user.user_manager');
// Use findUserby, findUserByUsername() findUserByEmail() findUserByUsernameOrEmail, findUserByConfirmationToken($token) or findUsers()
$user = $userManager->findUserBy(['id' => 1]);
// Add the role that you want !
$user->addRole("ROLE_ADMIN");
// Update user roles
$userManager->updateUser($user);
}
}

В пользовательском классе

Вы также можете установить роль в конструкторе класса User Entity при каждой регистрации пользователя:

addRole("ROLE_ADMIN");
}
}

Контекст $this будет конкретно BaseUser.

С помощью инструментов командной строки FOSUserBundle

По умолчанию приложение Symfony, которое реализует FOSUserBundle, автоматически получит доступ к инструментам командной строки этого пакета. Эти инструменты предоставляют полезную команду, которая позволяет вам добавить роль пользователю, fos:user:promote команда. Эта команда позволяет добавить роль пользователю или сделать его супер администратором:

php bin/console fos:user:promote username ROLE_ADMIN

Повеселись !

Ссылка на основную публикацию
Adblock
detector