Reputation: 1853
I understand how to allow certain controller actions for non-logged in users. But, I can't find any documentation on how to allow access to specific pages. The controller is pages and the action is display. But, I don't want to allow the user to see all pages, just the about page.
So, what is the correct way to allow guests access to some, but not all, pages?
Upvotes: 5
Views: 3112
Reputation: 3499
In CakePHP 3.x you can accomplish your goal by specifying the full action in the PagesController
beforeFilter
action:
public function beforeFilter(Event $event) {
parent::beforeFilter($event);
$this->Auth->allow(
['controller' => 'pages', 'action' => 'display', 'about']
);
}
Upvotes: 1
Reputation: 1678
I'm afraid you can't do that using the standard functions that AuthComponent
gives you. You have to create your own logic for that in the pages_controller
's display
action.
Something like (pseudo-code style)
# in app/controllers/pages_controller.php
var $allowedPages = array('one', 'two');
function display($page) {
if(in_array($page, $allowedPages) || $this->User->loggedin) {
$this->render($page);
} else {
$this->render('not_allowed');
}
}
Upvotes: 4