that validates a password confirmation and password strength, without
extending the Auth component or any other trickery.
I wanted some feedback. First, should I be using value=>'' on the
password and password2 form elements? If I don't it seems to fill in
those boxes with the hash and plaintext password (respectively).
Second, how do my validation functions look? They're my first attempt
at custom validation. They seem to work OK.
Here's my register view:
<h1>Register</h1>
<?php
echo $form->create('User', array('action' => 'register'));
echo $form->input('username');
echo $form->input('password', array('value'=>''));
echo $form->input('password2', array('label'=>'Repeat Password',
'type'=>'password', 'value'=>''));
echo $form->input('first_name');
echo $form->input('last_name');
echo $form->input('email');
echo $form->end('Register');
?>
Here's my user model:
<?php
App::import(array('Security'));
class User extends AppModel {
var $validate = array(
'email' => 'email',
'first_name' => array(
'rule' => array('minLength', 1)
),
'last_name' => array(
'rule' => array('minLength', 1)
),
'username' => array(
'rule' => array('minLength', 4)
),
'password' => array(
'rule' => array('CheckPassword'),
'message' => 'At least 6 characters'
),
'password2' => array(
'rule' => array('CheckPasswordMatch'),
'message' => 'Passwords did not match'
)
);
function CheckPassword($data) {
if(!isset($this->data['User']['password2']))
return true; //Only confirm password strength if we're collecting a
new password (i.e. password2 is set).
return strlen($this->data['User']['password2']) >= 6;
}
function CheckPasswordMatch($data) {
return $this->data['User']['password'] == Security::hash($this-
>data['User']['password2'], null, true);
}
}
?>
And my user controller:
<?php
class UsersController extends AppController {
var $components = array('Auth');
function beforeFilter() {
$this->Auth->allow('register');
}
/**
* The AuthComponent provides the needed functionality
* for login, so you can leave this function blank.
*/
function login() {
}
function logout() {
$this->redirect($this->Auth->logout());
}
function register() {
if($this->data) {
if ($this->User->save($this->data)) {
$this->flash('Your account has been created.', '/users/login');
}
}
}
}
?>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---
No comments:
Post a Comment