/** * @param string $attribute * @param Session $session * @param User $user * @return bool */ protected function isGranted($attribute, $session, $user = null) { // make sure there is a user object (i.e. that the user is logged in) if (!$user instanceof UserInterface) { return false; } // Checks if the current user was set up $course = $session->getCurrentCourse(); if ($course == false) { return false; } $authChecker = $this->container->get('security.authorization_checker'); // Admins have access to everything if ($authChecker->isGranted('ROLE_ADMIN')) { // return true; } if (!$session->isActive()) { return false; } switch ($attribute) { case self::VIEW: if (!$session->hasUserInCourse($user, $course)) { $user->addRole('ROLE_CURRENT_SESSION_COURSE_STUDENT'); return true; } break; case self::EDIT: case self::DELETE: if (!$session->hasCoachInCourseWithStatus($user, $course)) { $user->addRole('ROLE_CURRENT_SESSION_COURSE_TEACHER'); return true; } break; } dump("You dont have access to this session!!"); return false; }
/** * @param $status * @param User $user * @param Course $course * @param Session $session */ private function addUserInCourse($status, User $user, Course $course, Session $session) { if ($session->isActive() && $user->getIsActive() && $course->isActive()) { if ($session->hasCourse($course)) { switch ($status) { case Session::DRH: if ($user->hasRole('ROLE_RRHH')) { $session->addUserInSession(Session::DRH, $user); } break; case Session::STUDENT: $session->addUserInSession(Session::STUDENT, $user); $session->addUserInCourse(Session::STUDENT, $user, $course); break; case Session::COACH: if ($user->hasRole('ROLE_TEACHER')) { $session->addUserInCourse(Session::COACH, $user, $course); } break; } } } }