Internal: Fix permission to view session by voter - refs BT#21745

pull/5576/head
Angel Fernando Quiroz Campos 1 year ago
parent 2ec2aa25cd
commit a420cc87ad
  1. 22
      src/CoreBundle/Security/Authorization/Voter/SessionVoter.php

@ -84,22 +84,26 @@ class SessionVoter extends Voter
$userIsStudent = $session->hasUserInCourse($user, $currentCourse, Session::STUDENT); $userIsStudent = $session->hasUserInCourse($user, $currentCourse, Session::STUDENT);
} }
if ($userIsGeneralCoach) { $visibilityForUser = $session->setAccessVisibilityByUser($user);
$user->addRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_SESSION_TEACHER);
} elseif ($userIsCourseCoach) { // Course-Coach access. if ($userIsStudent && Session::LIST_ONLY == $visibilityForUser) {
return false;
}
if ($userIsGeneralCoach || $userIsCourseCoach) {
$user->addRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_SESSION_TEACHER); $user->addRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_SESSION_TEACHER);
} elseif ($userIsStudent) { // Student access. } elseif ($userIsStudent) { // Student access.
$user->addRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_SESSION_STUDENT); $user->addRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_SESSION_STUDENT);
} }
if (\in_array( if (
$session->setAccessVisibilityByUser($user), ($userIsGeneralCoach || $userIsCourseCoach || $userIsStudent)
[Session::INVISIBLE, Session::LIST_ONLY] && $visibilityForUser != Session::INVISIBLE
)) { ) {
return false; return true;
} }
return true; return false;
case self::EDIT: case self::EDIT:
case self::DELETE: case self::DELETE:

Loading…
Cancel
Save