That's pretty easy with akelos.
This is how I did it. (I'am new to Akelos-Framework but I think this way to implement authentication is ok? But anyway I know pretty less about Akelos-Framework It's fun to work with it
)
prerequisites:
a user-model with at least the following fields (name, password and e_mail). If you don't have one create a user-model
OK, You know all your controllers extends the ApplicationController (app/application_controller.php)?
place the following function into it
<?php require_once(AK_LIB_DIR.DS.'AkActionController.php'); /** * This file is application-wide controller file. You can put all * application-wide controller-related methods here. * * Add your application-wide methods in the class below, your controllers * will inherit them. * * @package ActionController * @subpackage Base */ class ApplicationController extends AkActionController { private function authentication() { if (!empty($_SESSION['time'])) { if (!$_SESSION['time'] < time() - 1800) $_SESSION['time']; } } protected function forbiddenAction() { if (!empty($_SESSION['time'])) { if ($_SESSION['time'] < time() - 1800) { $_SESSION['name'] = ''; $_SESSION['uid'] = ''; $_SESSION['time'] = ''; $this->redirectTo(array('controller' => 'home', 'action' => 'login')); } } else $this->redirectTo(array('controller' => 'home', 'action' => 'login')); } } ?>
generate a home controller
script/generate controller Home
write the following methods
<?php class HomeController extends ApplicationController { var $layout = 'forum'; var $models = 'User'; public function __construct() { $this->beforeFilter('authentication', array('forbiddenAction'=>array('except'=>array('login', 'index', 'logout')))); } public function index() { } public function login() { if(!empty($this->params['login'])){ $user = $this->User->find('first', array('conditions' => array('e_mail =?', $this->params['login']['e_mail']))); if ($user->password == $this->params['login']['password']) { $_SESSION['uid'] = $user->id; $_SESSION['name'] = $user->name; $_SESSION['time'] = time(); } } } public function logout() { $_SESSION['uid'] = ''; $_SESSION['name'] = ''; $_SESSION['time'] = ''; $this -> redirectTo(array('action' => 'index')); } } ?>
now you can write a login/logout link into your template I use the layout (my layout called app/views/layouts/forum.tpl)
{?session-name}
<?php echo $url_helper->link_to($text_helper->translate('Logout'), array('controller' => 'home', 'action' => 'logout'))?> {session-name}
{else}
<?php echo $url_helper->link_to($text_helper->translate('Login'), array('controller' => 'home', 'action' => 'login'))?>
{end}
now you're ready
don't forget place in every controller your
public function __construct() { $this->beforeFilter('authentication', array('forbiddenAction'=>array('except'=>array('index', 'listing', 'show')))); }
OK, hope this help a bit for the first steps
badPussycat