diff --git a/public/main/inc/ajax/user_manager.ajax.php b/public/main/inc/ajax/user_manager.ajax.php index 30b75105b3..5aaa50edea 100644 --- a/public/main/inc/ajax/user_manager.ajax.php +++ b/public/main/inc/ajax/user_manager.ajax.php @@ -250,6 +250,8 @@ switch ($action) { $status = isset($_REQUEST['status']) ? (int) $_REQUEST['status'] : DRH; $active = isset($_REQUEST['active']) ? (int) $_REQUEST['active'] : null; + $role = User::getRoleFromStatus($status); + $criteria = new Criteria(); $criteria ->where( @@ -260,7 +262,7 @@ switch ($action) { ) ) ->andWhere( - Criteria::expr()->eq('status', $status) + Criteria::expr()->in('roles', [$role]) ); if (null !== $active) { diff --git a/src/CoreBundle/Entity/User.php b/src/CoreBundle/Entity/User.php index 1d4faeb21c..b8852ebcc3 100644 --- a/src/CoreBundle/Entity/User.php +++ b/src/CoreBundle/Entity/User.php @@ -1757,9 +1757,9 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso return $this->hasRole('ROLE_SUPER_ADMIN'); } - public function setRoleFromStatus(int $status): void + public static function getRoleFromStatus(int $status): string { - $role = match ($status) { + return match ($status) { COURSEMANAGER => 'ROLE_TEACHER', STUDENT => 'ROLE_STUDENT', DRH => 'ROLE_RRHH', @@ -1768,6 +1768,11 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso INVITEE => 'ROLE_INVITEE', default => 'ROLE_USER', }; + } + + public function setRoleFromStatus(int $status): void + { + $role = self::getRoleFromStatus($status); $this->addRole($role); } diff --git a/tests/CoreBundle/Repository/Node/UserRepositoryTest.php b/tests/CoreBundle/Repository/Node/UserRepositoryTest.php index c164ea49a2..84b4aaf123 100644 --- a/tests/CoreBundle/Repository/Node/UserRepositoryTest.php +++ b/tests/CoreBundle/Repository/Node/UserRepositoryTest.php @@ -26,7 +26,6 @@ class UserRepositoryTest extends AbstractApiTest public function testCreateUser(): void { - self::bootKernel(); $student = $this->createUser('student'); $userRepo = self::getContainer()->get(UserRepository::class); @@ -38,6 +37,13 @@ class UserRepositoryTest extends AbstractApiTest $this->assertCount(1, $student->getRoles()); $this->assertContains('ROLE_USER', $student->getRoles()); + $this->assertSame('ROLE_TEACHER', User::getRoleFromStatus(1)); + $this->assertSame('ROLE_STUDENT', User::getRoleFromStatus(5)); + $this->assertSame('ROLE_RRHH', User::getRoleFromStatus(4)); + $this->assertSame('ROLE_SESSION_MANAGER', User::getRoleFromStatus(3)); + $this->assertSame('ROLE_STUDENT_BOSS', User::getRoleFromStatus(17)); + $this->assertSame('ROLE_INVITEE', User::getRoleFromStatus(20)); + $student->addRole('ROLE_STUDENT'); $userRepo->update($student);