Development - Authorization
The ApPHP framework contains a special mechanism, which allows a developer to relatively easily implement
a registration and authorization system (login with a password) for both frontend and backend (website)
users. The data of registered users are stored by the CHttpSession core class, and the framework
CAuth helper provides a convenient interface to define controllers and actions accessible by registered
users, check access rights of visitors, store and retrieve required information of registered user, etc.
For easiest way to store a data of logged user, we recommend to use a following way:
$session = A::app()->getSession();
$session->set('loggedIn', true);
$session->set('loggedId', $userId); /* $userId - user ID retrieved from database */
Using CAuth
helper you may perform a check for the whole Controller of just an Action,
whether user can access them or not.
Here an example for check of authorized access for whole Controller:
class AuthorsController extends CController
{
public function __construct()
{
parent::__construct();
// block access to this controller for not-logged users
CAuth::handleLogin();
}
// other code here...
}
Here an example for check of authorized access for specified Action:
class AuthorsController extends CController
{
public function indexAction()
{
// your code here...
}
public function editProfileAction()
{
// block access to this action for not-logged users
CAuth::handleLogin();
// other code here...
}
public function loginAction()
{
// redirect logged in authors to the specified location
CAuth::handleLoggedIn('authors/index');
// other code here...
}
}
Following methods allow to retrieve an important data about logged user:
(please check framework/helpers/CAuth.php
for more information)
// returns ID of logged user
CAuth::getLoggedId();
// checks if user is logged in and returns a result as a boolean
CAuth::isLoggedIn();
Below you may see a simple example of how to check login form submission data:
$this->_view->username = A::app()->getRequest()->getPost('username');
$this->_view->password = A::app()->getRequest()->getPost('password');
$model = new Login();
if($model->login($this->_view->username, $this->_view->password)){
$this->redirect('authors/index');
}else{
$msg = 'Wrong username or password! Please re-enter.';
$msgType = 'error';
$this->_view->errorField = 'username';
}