/**
  * Perform an authentication check on this request
  */
 protected function checkAuthentication($action)
 {
     $id = $this->request->getControllerName();
     $restricted = $this->controller_map->isRestricted($id, $action);
     $requires_login = $this->controller_map->requiresLogin($id, $action);
     // get user from session
     $user = $this->request->getUser();
     // this action requires authentication
     if ($restricted || $requires_login) {
         $redirect_to_login = false;
         // this action requires a logged-in user, but user is not logged-in
         if ($requires_login && !$user->isAuthenticated()) {
             $redirect_to_login = true;
         } elseif ($restricted && !$user->isAuthenticated() && !$user->isInLocalIpRange()) {
             $redirect_to_login = true;
         }
         // redirect to login page
         if ($redirect_to_login == true) {
             return $this->redirectToLogin();
         }
     }
 }