0
votes

I am unable to get the Auth component to login once passed credentials in a post method.

I am using CakePHP2.*

I am trying to write a web service.

Please below the code i have written to configure the Auth component in the AppController and below that the UserController for the User model

class AppController extends Controller {

public $components = array(
    'DebugKit.Toolbar',
    'Session',
    'Auth' => array(
        'loginRedirect' => array('controller' => 'user', 'action' => 'view'),
        'logoutRedirect' => array('controller' => 'user', 'action' => 'home'),
        'authenticate' => array('Form' => array('fields' => array('username'=>'username','password'=>'password'))),            
        'userScope'=> array('User.active_yn' => 1),             
        'userModel'=>'User',
        'loginAction'=>array('controller' => 'user', 'action' => 'login'),
        'autoRedirect'=>true,
        'authError'=>'You dont have access to that area. Please login first.',
        'loginError'=>'Username or password entered is incorrect. Please try again.',
        'authorize' => array('Controller') // Added this line
    )
);

public function isAuthorized($user) {
    // Admin can access every action
    if (isset($user['active_yn']) && $user['active_yn'] === 1) { //admin
        return true;
    }

    // Default deny
    return false;
}

public function beforeFilter() { }

}

class UserController extends AppController {

public $helpers = array('Html', 'Form', 'Session');
public $components = array('Session');    
public $validate = array(
        'email' => array('rule' => 'notEmpty')
);

public function index() {
    $this->set('User', $this->User->find('all'));
}

public function view($id = null) {

    if (!$id) {
        throw new NotFoundException(__('Invalid User'));
    }

    $User = $this->User->findById($id);
    if (!$User) {
        throw new NotFoundException(__('Invalid User'));
    }
    $this->set('User', $User);
} 


public function login() {


    if ($this->request->is('post')) {

        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirect());
        }
        $this->Session->setFlash(__('Invalid username or password, try again'));
    }

    $this->set('request', $this->request->data);

}


public function logout() {
    return $this->redirect($this->Auth->logout());
}


public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('view','login','logout');
}

}

1
follow this tutorialAnil kumar

1 Answers

0
votes

Your controller names in the Auth configuration need to be in plural