// Define Auth Component in AppController class AppController extends Controller { public $components = array( 'Session', 'Auth' => array( 'loginRedirect' => array( 'controller' => 'users', // Redirect URL after login action 'action' => 'index'), 'logoutRedirect' => array( 'controller' => 'users', // Redirect URL after logout action 'action' => 'login'), 'authError' =>'', 'authenticate' => array( 'Form' => array( 'fields' => array('username' => 'email') // By default Auth components takes username ) ) ) ); } // Define Login & logout function in UsersController class UsersController extends AppController { public function beforeFilter() { parent::beforeFilter(); // Allow users to register and logout. $this->Auth->allow('login','add', 'logout'); } //login functionality here public function login() { if ($this->request->is('post')) { if ($this->Auth->login()) { $this->redirect($this->Auth->redirectUrl()); // Redirect to login URL } else { $this->Session->setFlash(__('Invalid username or password')); } } } //Logout function here public function logout() { return $this->redirect($this->Auth->logout()); }
//add User function public function add() { if ($this->request->is('post')) { $this->User->create(); $this->User->save($user) } } } // User Model for save functionality class User extends AppModel { public function beforeSave($options = array()) { if (isset($this->data[$this->alias]['password'])) { $passwordHasher = new SimplePasswordHasher(); $this->data[$this->alias]['password'] = $passwordHasher->hash( $this->data[$this->alias]['password'] ); } return true; } }
// Remember me functionality in login function
function login() { if ($this->Auth->user()) { if (!empty($this->data['User']['remember_me'])) { $cookie = array(); $cookie['username'] = $this->data['User']['username']; $cookie['password'] = $this->data['User']['password']; $this->Cookie->write('Auth.User', $cookie, true, '+2 weeks'); unset($this->data['User']['remember_me']); } $this->redirect($this->Auth->redirect()); } if (empty($this->data)) { $cookie = $this->Cookie->read('Auth.User'); if (!is_null($cookie)) { if ($this->Auth->login($cookie)) { // Clear auth message, just in case we use it. $this->Session->delete('Message.auth'); $this->redirect($this->Auth->redirect()); } } } }
// Multiple Auth access in same application
// Configure the prefix in core file
Configure::write('Routing.prefixes', array('admin','member','user')); App::uses('Controller', 'Controller'); class AppController extends Controller { public $components = array('Security','Cookie','Session','Auth','RequestHandler'); public $helpers = array('Cache','Html','Session','Form'); function beforeFilter() { if ($this->request->prefix == 'admin') { $this->layout = 'admin'; AuthComponent::$sessionKey = 'Auth.Admin'; $this->Auth->loginAction = array('controller'=>'administrators','action'=>'login'); $this->Auth->loginRedirect = array('controller'=>'administrators','action'=>'index'); $this->Auth->logoutRedirect = array('controller'=>'administrators','action'=>'login'); $this->Auth->authenticate = array( 'Form' => array( 'userModel' => 'User', // Defines the model ) ); $this->Auth->allow('login'); } else if ($this->request->prefix == 'user') { AuthComponent::$sessionKey = 'Auth.Phys'; $this->Auth->loginAction = array('controller'=>'users','action'=>'login'); $this->Auth->logoutRedirect = '/'; $this->Auth->authenticate = array( 'Form' => array( 'userModel' => 'Physician', ) ); } } public function isAuthorized($user){ // You can have various extra checks in here, if needed. return true; }}
//Create helper to check user login or not
<? class AccessHelper extends Helper{ var $helpers = array("Session"); function isLoggedin(){ App::import('Component', 'Auth'); $auth = new AuthComponent(); $auth->Session = $this->Session; $user = $auth->user(); return !empty($user); } ?>
var $helpers = array('Access'); //Call it in controller
Now check in view
<? if($access->isLoggedin()): ?><? echo $html->link('delete', '/posts/delete/'.$post['Post']['id'], NULL, 'Are you sure?'); ?><? endif; ?>
No comments:
Post a Comment