If you have recently migrated your CakePHP application from 1.x version to 2.x version, you might have noticed that there is a lot of changes required. In this simple tutorial, we talk about how to migrate Auth component from 1.x to 2.x, hope you will find it useful.
Auth component is rewritten in CakePHP 2.x from ground. It has greatly improvement. Meanwhile a lot of changes need to be done in the way of using it. In this tutorial, we cover the migration guide in a very simple and generic perspective. You are strongly recommended to read the official cookbook before doing migration.
Normally Auth component is included in the application level, which is the AppController class. Before CakePHP 2.x. AppController.php is located at the directory of "app/app_controller.php". However in CakePHP 2.x, the directory is changed to "app/Controller/AppController.php". So please pay particular attention to the directory's change of the AppController.php file. Otherwise, you may end up finding that Auth component does not restrict user's access, and it does not give any error message either.
In CakePHP 2.x, Auth component is introduced with three types of authentication handlers. So the way of setting its variables is changed, now you need to set the variables using its authentication handler as the array key. Basically if you have set variables for Auth component, you will have to rewrite it again. For more information about its variables, take a look at the cookbook.
If you were enjoying the ease of login() magic function, which basically does all the underline process of logging an user into your system. Too bad for you, because in CakePHP 2.x, you will have to manually log user in using login() function, and redirect user to his home page. This change is due to the confusion of login() function. So now in your UsersController.php login() function, you will have to manually do the login and redirection as below:
class UsersController extends AppController {
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
}
}
}
}
Hopefully this simple tutorial helped you with your development. If you like our post, please follow us on Twitter and help spread the word. We need your support to continue. If you have questions or find our mistakes in above tutorial, do leave a comment below to let us know.