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 cake-php@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to