// app/Model/User.php
class User extends AppModel {
public $validate = array(
'username' => array(
'length' => array(
'rule' => array('minLength', 5),
'message' => '5文字以上入力してください',
),
'alphanum' => array(
'rule' => 'alphanumeric',
'message' => '英数字のみ入力してください',
),
'unique' => array(
'rule' => 'isUnique',
'message' => '他のユーザに既に使われています',
),
),
'email' => array(
'email' => array(
'rule' => 'email',
'message' => '不適切なメールアドレスです',
),
'unique' => array(
'rule' => 'isUnique',
'message' => '他のユーザに既に使われています',
),
),
'password' => array(
'empty' => array(
'rule' => 'notBlank',
'message' => '必ず入力してください',
),
),
'password_confirm' => array(
'compare' => array(
'rule' => array('password_match', 'password'),
'message' => 'パスワードが一致しません',
),
'length' => array(
'rule' => array('between', 6, 20),
'message' => '6文字以上20文字以下のパスワードを入力してください',
),
'empty' => array(
'rule' => 'notBlank',
'message' => '必ず入力してください',
),
),
);
//--------------------------------------------------------------------------
// ヘルパー関数
// パスワードと確認入力が一致するかチェックする
public function password_match($field, $password) {
return ($field['password_confirm'] === $this->data[$this->name][$password]);
}
// 本登録用のリンクに含めるハッシュを生成する
public function getActivationHash() {
if (!isset($this->id)) {
return false;
} else {
return Security::hash($this->field('modified'), 'md5', true);
}
}
//--------------------------------------------------------------------------
// コールバック関数
// データが保存される前に実行される
public function beforeSave($options = array()) {
// 平文パスワードをハッシュ化
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
}
return true;
}
}