統計
| ブランチ: | リビジョン:

pictcode / app / Model / User.php @ 67acbfb5

履歴 | 表示 | アノテート | ダウンロード (6.811 KB)

1
<?php
2
App::uses('AppModel', 'Model');
3
App::uses('BlowfishPasswordHasher', 'Controller/Component/Auth');
4

    
5

    
6
/**
7
 * User Model
8
 *
9
 * @property Login $Login
10
 * @property Program $Program
11
 */
12
class User extends AppModel {
13

    
14

    
15
/**
16
 * Validation rules
17
 *
18
 * @var array
19
 */
20
        public $validate = array(
21
                'login_id' => array(
22
                                'rule' => array('notBlank'),
23
                'message' => 'この項目は入力必須です'
24
                        ),
25
        'email' => array(
26
                array(
27
                                'rule' => array('notBlank'),
28
                'message' => 'メールアドレスを入力してください'
29
            ),
30
            // メールアドレスであること。
31
            'isEmail' => array( 
32
                                'rule' => 'Email',
33
                    'message' => '正しいメールアドレスを入力してください'
34
            ),
35
            array(
36
                'rule' => 'DuplicateEmailCheck', 
37
                'message' => 'このメールアドレスは既に登録されています'
38
            ), 
39
            // 一意性チェック
40
            // 'emailExists' => array( 'rule' => 'isUnique', 'message' => '既に登録されています'),
41
        ),
42
        'email_confirm' => array(
43
            array(
44
                                'rule' => array('notBlank'),
45
                'message' => 'メールアドレス(確認)を入力してください'
46
            ), 
47
            array(
48
                'rule' => 'emailConfirm', 
49
                'message' => 'メールアドレスが一致していません'
50
            ), 
51

    
52
        ),
53

    
54
        'password' => array(
55
            array(
56
                                'rule' => array('notBlank'),
57
                'message' => 'パスワードを入力してください'
58
            ), 
59
            array(
60
                'rule' => array('minLength', 8), 
61
                'message' => 'パスワードは8文字以上入力してください', 
62
            ),
63
            array(
64
                'rule' => 'passwordConfirm', 
65
                'message' => 'パスワードが一致していません'
66
            ), 
67
        ),
68
        'password_confirm' => array(
69
            array(
70
                                'rule' => array('notBlank'),
71
                'message' => 'パスワード(確認)を入力してください'
72
            ), 
73
        ),
74
                'status' => array(
75
                        'numeric' => array(
76
                                'rule' => array('numeric'),
77
                                //'message' => 'Your custom message here',
78
                                //'allowEmpty' => false,
79
                                //'required' => false,
80
                                //'last' => false, // Stop validation after this rule
81
                                //'on' => 'create', // Limit validation to 'create' or 'update' operations
82
                        ),
83
                ),
84
        );
85

    
86
        public $reset_pwd_validate = array(
87
        'email' => array(
88
                array(
89
                                'rule' => array('notBlank'),
90
                'message' => 'メールアドレスを入力してください'
91
            ),
92
            // メールアドレスであること。
93
            'isEmail' => array( 
94
                                'rule' => 'Email',
95
                    'message' => '正しいメールアドレスを入力してください'
96
            ),
97
            array(
98
                'rule' => 'emailConfirm', 
99
                'message' => 'メールアドレスが一致していません'
100
            ), 
101
            array(
102
                'rule' => 'NotExistEmailCheck', 
103
                'message' => 'このメールアドレスは登録されていません'
104
            ), 
105

    
106
        ),
107
        'email_confirm' => array(
108
            array(
109
                                'rule' => array('notBlank'),
110
                'message' => 'メールアドレス(確認)を入力してください'
111
            ), 
112

    
113
        ),
114

    
115
        'password' => array(
116
            array(
117
                                'rule' => array('notBlank'),
118
                'message' => 'パスワードを入力してください'
119
            ), 
120
            array(
121
                'rule' => array('minLength', 8), 
122
                'message' => 'パスワードは8文字以上入力してください', 
123
            ),
124
            array(
125
                'rule' => 'passwordConfirm', 
126
                'message' => 'パスワードが一致していません'
127
            ), 
128
        ),
129
        'password_confirm' => array(
130
            array(
131
                                'rule' => array('notBlank'),
132
                'message' => 'パスワード(確認)を入力してください'
133
            ), 
134
        ),
135
        );
136
        public $new_pwd_validate = array(
137

    
138
        'password' => array(
139
            array(
140
                                'rule' => array('notBlank'),
141
                'message' => 'パスワードを入力してください'
142
            ), 
143
            array(
144
                'rule' => array('minLength', 8), 
145
                'message' => 'パスワードは8文字以上入力してください', 
146
            ),
147
            array(
148
                'rule' => 'passwordConfirm', 
149
                'message' => 'パスワードが一致していません'
150
            ), 
151
        ),
152
        'password_confirm' => array(
153
            array(
154
                                'rule' => array('notBlank'),
155
                'message' => 'パスワード(確認)を入力してください'
156
            ), 
157
        ),
158
        );
159
        public function DuplicateEmailCheck(){
160
                $query = array('conditions' => array('User.email' => $this->data['User']['email'],'User.status' => 1));
161
                $num = $this->find('count',$query);
162
                //$this->log($recodes);
163
                //var_dump($num);
164
                //exit;
165
                if($num > 0){
166
            return false;        //登録済み                
167
                } else{
168
            return true;        //未登録        
169
                }
170
        }
171

    
172
    public function passwordConfirm($check){
173
        //2つのパスワードフィールドが一致する事を確認する
174
        if($this->data['User']['password'] === $this->data['User']['password_confirm']){
175
            return true;
176
        }else{
177
            return false;
178
        }
179

    
180
    }
181

    
182
    public function emailConfirm($check){
183
        //2つのパスワードフィールドが一致する事を確認する
184
        if($this->data['User']['email'] === $this->data['User']['email_confirm']){
185
            return true;
186
        }else{
187
            return false;
188
        }
189

    
190
    }
191

    
192
        public function getActivationHash() {
193
            // ユーザIDの有無確認
194
            if (!isset($this->id)) {
195
                return false;
196
            }
197
            // 更新日時をハッシュ化
198
            return Security::hash( $this->field('updated'), 'md5', true);
199
        }
200

    
201

    
202
        //メールアドレスが登録されていない、またはメールアドレスのstatusが1ではない場合、エラーを出す
203
        public function NotExistEmailCheck(){
204
                $query = array('conditions' => array('User.email' => $this->data['User']['email'],'User.status' => 1));
205
                $num = $this->find('count',$query);
206
                //$this->log($recodes);
207
                //var_dump($num);
208
                //exit;
209
                if($num > 0){
210
            return true;        //未登録
211
                } else{
212
            return false;        //登録済み
213
                }
214
        }
215

    
216
        public function beforeSave($options = array()) {
217
            if (isset($this->data[$this->alias]['password'])) {
218
                $passwordHasher = new BlowfishPasswordHasher();
219
                $this->data[$this->alias]['password'] = $passwordHasher->hash(
220
                    $this->data[$this->alias]['password']
221
                );
222
            }
223
            return true;
224
        }
225

    
226

    
227
}