1: <?php
2:
3: App::uses('AppModel', 'Model');
4:
5: class AuthenticationUser extends AppModel {
6:
7: private static $settings;
8:
9: public static function configure($settings) {
10: self::$settings = $settings;
11: }
12:
13: public $useTable = false;
14:
15: public function findByUsername($username) {
16: return $this->_findBy(self::$settings['usernameField'], $username);
17: }
18:
19: public function findByEmail($email) {
20: return $this->_findBy(self::$settings['emailField'], $email);
21: }
22:
23: public function findById($id) {
24: $model = ClassRegistry::init(self::$settings['userModel']);
25: return $this->_findBy($model->primaryKey, $id);
26: }
27:
28: public function changePassword($id, $password) {
29: $model = ClassRegistry::init(self::$settings['userModel']);
30: $user = $model->find(
31: 'first', array(
32: 'conditions' => array(
33: "{$model->alias}.{$model->primaryKey}" => $id
34: )
35: ));
36: $user[$model->alias][self::$settings['passwordField']] = $password;
37: return $model->save($user);
38: }
39:
40: private function _findBy($field, $value) {
41: $model = ClassRegistry::init(self::$settings['userModel']);
42: $result = $model->find(
43: 'first', array(
44: 'conditions' => array(
45: "{$model->alias}.$field" => $value
46: )
47: ));
48: return $this->_toAuthenticationUser($result);
49: }
50:
51: private function _toAuthenticationUser($user) {
52: if (empty($user)) {
53: return false;
54: } else {
55: $model = ClassRegistry::init(self::$settings['userModel']);
56: return array(
57: $this->alias => array(
58: 'id' => $user[$model->alias][$model->primaryKey],
59: 'username' => $user[$model->alias][self::$settings['usernameField']],
60: 'email' => $user[$model->alias][self::$settings['emailField']],
61: 'active' => $user[$model->alias][self::$settings['activeField']],
62: 'password' => $user[$model->alias][self::$settings['passwordField']],
63: )
64: );
65: }
66: }
67:
68: }