/** * @param string $attribute * @param Course $course * @param User $user * @return bool */ protected function isGranted($attribute, $course, $user = null) { // make sure there is a user object (i.e. that the user is logged in) if (!$user instanceof UserInterface) { return false; } $authChecker = $this->container->get('security.authorization_checker'); // Admins have access to everything if ($authChecker->isGranted('ROLE_ADMIN')) { dump('Im admin'); // return true; } // Is an active course if (!$course->isActive()) { dump('Course is not active'); return false; } switch ($attribute) { case self::VIEW: // "Open to the world" no need to check if user is registered if ($course->isPublic()) { dump('Course is public'); return true; } // User is subscribed in the course no matter if is teacher/student if ($course->hasUser($user)) { dump('User is subscribed in course'); $user->addRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_STUDENT); return true; } break; case self::EDIT: case self::DELETE: // Only teacher can edit stuff if ($course->hasTeacher($user)) { $user->addRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_TEACHER); return true; } break; } dump("You dont have access to this course!!"); 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; } } } }