Skip to main content

Cakephp Auth login

// 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; ?> 

Comments

Popular posts from this blog

6 guaranteed steps how to create CRON JOB FUNTION in wordpress

Create Cron Job function in Wordpress plugin Step 1: Register function on plugin activate  register_activation_hook(__FILE__, 'activate_one'); Step 2: add_filter function for interval //Filter for Adding multiple intervals add_filter( 'cron_schedules', 'intervals_schedule' ); // define interval function   function intervals_schedule($schedules) {   $schedules['everyminute'] = array(    'interval' => 60, // Every 1 minutes    'display'  => __( 'Every 1 minutes' )   );   return $schedules;  } Step 3: Activate hook function   //Schedule a first action if it's not already scheduled   function activate_one() {   if (!wp_next_scheduled('wpyog_cron_action')) {    wp_schedule_event( time(), 'everyminute', 'wpyog_cron_action');   }  } Step 4: Cron hook function   //Hook into that action that'll fire after 1 minutes   add_action('wpyog_cron_action', 'execute_

How to Create a jQuery Autocomplete in Wordpress

How to Create a jquery-ui Autocomplete in wordpress. Autocomplete provides suggestions while you type into the text field. In Wordpress we fetch dynamically matched pattern. Include javascript and css files in header. Create action inside functions.php or inside plugin code. add_action('wp_head', 'custom_register_scripts'); function custom_register_scripts(){ wp_register_style( 'techsudhir_jquery_ui_css', plugin_dir_url(__FILE__) . 'css/jquery-ui.css', false,'1.0.0' ); wp_enqueue_style( 'techsudhir_jquery_ui_css' ); wp_register_script('techsudhir_jquery_ui_js',plugin_dir_url(__FILE__) . 'js/jquery-ui.js',array('jquery'),'1.1', false); wp_enqueue_script('techsudhir_jquery_ui_js'); wp_localize_script( 'techsudhir_autocomplete', 'jqueryAutocomplete', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); wp_enqueue_script( 'techsudhir_

Facebook Login

Step 1: Go on Apps & create new Apps Step 2: Enter the app name & choose category Step 3: Enter the site domain Script code <div id="fb-root"></div> <script   src="http://connect.facebook.net/en_US/all.js#appId=<?php echo '603609636351597';?>"> </script> <script>    FB.init({              appId:'<?php echo '603609636351597';?>', cookie:true,              status:true, xfbml:true           });   FB.getLoginStatus(function(response) {   }); Login function call on click function faceLogin(){  FB.login(function(response) {    if (response.authResponse) {  FB.api('/me', function(response) { $('input[id=facebook_login_fb]').val(response['id']); $('#fb_login_form').submit();  });    } else {  console.log('User cancelled login or did