From b001f7ecd850d74889b231df58e7482f7447b2b7 Mon Sep 17 00:00:00 2001 From: "aurian.jault" Date: Wed, 12 Jun 2024 14:06:31 +0200 Subject: [PATCH] Adding roles and redirect on logout --- config/packages/security.yaml | 8 +++--- migrations/Version20240612112105.php | 35 +++++++++++++++++++++++ src/Controller/RegistrationController.php | 1 + src/Entity/Profil.php | 12 ++++---- src/Repository/TagsRepository.php | 2 +- 5 files changed, 47 insertions(+), 11 deletions(-) create mode 100644 migrations/Version20240612112105.php diff --git a/config/packages/security.yaml b/config/packages/security.yaml index 288ddbd..73a0545 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -22,8 +22,7 @@ security: enable_csrf: true logout: path: app_logout - # where to redirect after logout - # target: app_any_route + target: /login # activate different ways to authenticate # https://symfony.com/doc/current/security.html#the-firewall @@ -34,8 +33,9 @@ security: # Easy way to control access for large sections of your site # Note: Only the *first* access control that matches will be used access_control: - # - { path: ^/admin, roles: ROLE_ADMIN } - # - { path: ^/profile, roles: ROLE_USER } + #- { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY } + #- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } + #- { path: ^/logout, role: ROLE_USER} when@test: security: diff --git a/migrations/Version20240612112105.php b/migrations/Version20240612112105.php new file mode 100644 index 0000000..451d975 --- /dev/null +++ b/migrations/Version20240612112105.php @@ -0,0 +1,35 @@ +addSql('ALTER TABLE profil ADD COLUMN roles CLOB DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE TEMPORARY TABLE __temp__profil AS SELECT id, name, description, password FROM profil'); + $this->addSql('DROP TABLE profil'); + $this->addSql('CREATE TABLE profil (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR(255) DEFAULT NULL, description VARCHAR(255) DEFAULT NULL, password VARCHAR(255) DEFAULT NULL)'); + $this->addSql('INSERT INTO profil (id, name, description, password) SELECT id, name, description, password FROM __temp__profil'); + $this->addSql('DROP TABLE __temp__profil'); + } +} diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php index 8c26f0b..e0138c4 100644 --- a/src/Controller/RegistrationController.php +++ b/src/Controller/RegistrationController.php @@ -29,6 +29,7 @@ class RegistrationController extends AbstractController $form->get('plainPassword')->getData() ) ); + $user->setRoles(['ROLE_USER']); $entityManager->persist($user); $entityManager->flush(); diff --git a/src/Entity/Profil.php b/src/Entity/Profil.php index 4647d0e..18a493d 100644 --- a/src/Entity/Profil.php +++ b/src/Entity/Profil.php @@ -19,6 +19,7 @@ class Profil implements UserInterface, PasswordAuthenticatedUserInterface #[ORM\Column] private ?int $id = null; + #[ORM\Column(type: 'json', nullable: true)] private array $roles = []; #[ORM\Column(length: 255, nullable: true)] @@ -184,7 +185,7 @@ class Profil implements UserInterface, PasswordAuthenticatedUserInterface { $roles = $this->roles; // guarantee every user at least has ROLE_USER - $roles[] = 'ROLE_USER'; + // $roles[] = 'ROLE_USER'; return array_unique($roles); } @@ -192,17 +193,16 @@ class Profil implements UserInterface, PasswordAuthenticatedUserInterface public function setRoles(array $roles): self { $this->roles = $roles; - return $this; } - public function eraseCredentials(): void + public function getUserIdentifier(): string { - // TODO: Implement eraseCredentials() method. + return $this->name; } - public function getUserIdentifier(): string + public function eraseCredentials(): void { - return $this->name; + // TODO: Implement eraseCredentials() method. } } diff --git a/src/Repository/TagsRepository.php b/src/Repository/TagsRepository.php index 5116b48..01f3452 100644 --- a/src/Repository/TagsRepository.php +++ b/src/Repository/TagsRepository.php @@ -9,7 +9,7 @@ use Doctrine\Persistence\ManagerRegistry; /** * @extends ServiceEntityRepository */ -class agsRepository extends ServiceEntityRepository +class TagsRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) {