Dunno why but I can't post in the original thread.
original thread=> " new auth component in cake 1.2 "
http://groups.google.com/group/cake-php/browse_frm/thread/f2d0143c2e59ce2b/30126ff7024d152c?lnk=gst&q=auth&rnum=2#30126ff7024d152c
My 2 cents about the new Auth component (Cake 1.2.0.5146alpha)
It stores encrypted passwords in the DB when you add/edit a new user.
Let's start with the users controller:
-----------------------------------------------------------------------------------------------------
users_controller.php
-----------------------------------------------------------------------------------------------------
<?php
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('Html', 'Form', 'Session');
var $components = array('Auth', 'Session');
function beforeFilter()
{
//actions we allow without authentication, you can also put
them in the app_controller.php
$this->Auth->allow('index', 'register', 'login', 'logout');
}
function login()
{
//user already logged in?
//checking if session has been written
$user_id = $this->Auth->user('id');
if (!empty($user_id) && $this->Session->valid())
{
$this->Session->setFlash('You are already logged in');
$this->redirect(array('action'=>''), null, true);
}
else
{
if(!empty($this->data))
{
//calling login validation validLogin() in model
if($this->User->validLogin($this->data))
{
if($this->Auth->login($this->User->user))
{
$this->Session->setFlash('You have
successfully logged in');
$this->redirect(array('action'=>''), null,
true);
}
else
{
$this->set('password', null);
$this->set('auth_msg', 'Please try again');
}
}
}
else
{
$this->set('auth_msg', 'Please enter your username and
password');
}
}
}
function logout()
{
$this->Session->destroy('user');
$this->Session->setFlash('You\'ve successfully logged out.');
$this->redirect(array('action'=>'login'), null, true);
}
-----------------------------------------------------------------------------------------------------
MODEL-> user.php
the model has just a particular function (see below) that you must add
-----------------------------------------------------------------------------------------------------
function validLogin($data)
{
$user = $this->find(array('username' => $data['User']
['username'], 'password' => ($data['User']['password'])), array('id',
'username', 'password'));
if(!empty($user)){
$this->user = $user['User'];
return TRUE;
}
else {
return FALSE;
}
}
-----------------------------------------------------------------------------------------------------
DB table users
-----------------------------------------------------------------------------------------------------
CREATE TABLE `users` (
`id` int(10) NOT NULL auto_increment,
`username` varchar(250) NOT NULL default '',
`password` varchar(50) NOT NULL,
`name` varchar(255) default NULL,
`email` varchar(250) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-----------------------------------------------------------------------------------------------------
VIEW->login.ctp
-----------------------------------------------------------------------------------------------------
<h1>Log In:</h1>
<?= isset($auth_msg) ? $auth_msg: ''?>
<?php e($form->create('User', array('action'=>'login')));?>
<?php echo $form->input('username');?>
<?php echo $form->input('password',
array('value'=>''));?>
<div class="submit"><input type="submit" value="Login" /></div>
<?php echo $form->end();?>
-----------------------------------------------------------------------------------------------------
Enjoy and let me know if you have better ways for authentication.
Dan
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---