Example #1
0
 /**
  * @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;
             }
         }
     }
 }