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

pictcode / app / Model / User.php @ 16e57cae

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

1 d6c3d8de root
<?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 16e57cae hasse
            array(
23 d6c3d8de root
                                'rule' => array('notBlank'),
24 8b8631af hasse
                'message' => 'この項目は入力必須です'
25 d6c3d8de root
                        ),
26 16e57cae hasse
            array( 
27
                'rule' => 'isUnique', 
28
                'message' => '既に登録されています'
29
            ),
30
        ),
31 04e657a7 root
        'email' => array(
32 8b8631af hasse
                array(
33
                                'rule' => array('notBlank'),
34
                'message' => 'メールアドレスを入力してください'
35
            ),
36 04e657a7 root
            // メールアドレスであること。
37 8b8631af hasse
            'isEmail' => array( 
38
                                'rule' => 'Email',
39
                    'message' => '正しいメールアドレスを入力してください'
40
            ),
41
            array(
42
                'rule' => 'DuplicateEmailCheck', 
43
                'message' => 'このメールアドレスは既に登録されています'
44
            ), 
45 04e657a7 root
            // 一意性チェック
46
            // 'emailExists' => array( 'rule' => 'isUnique', 'message' => '既に登録されています'),
47
        ),
48 67acbfb5 hasse
        'email_confirm' => array(
49
            array(
50
                                'rule' => array('notBlank'),
51
                'message' => 'メールアドレス(確認)を入力してください'
52
            ), 
53
            array(
54
                'rule' => 'emailConfirm', 
55
                'message' => 'メールアドレスが一致していません'
56
            ), 
57
58
        ),
59
60 04e657a7 root
        'password' => array(
61 8b8631af hasse
            array(
62
                                'rule' => array('notBlank'),
63
                'message' => 'パスワードを入力してください'
64
            ), 
65
            array(
66
                'rule' => array('minLength', 8), 
67
                'message' => 'パスワードは8文字以上入力してください', 
68
            ),
69
            array(
70
                'rule' => 'passwordConfirm', 
71
                'message' => 'パスワードが一致していません'
72
            ), 
73
        ),
74
        'password_confirm' => array(
75
            array(
76
                                'rule' => array('notBlank'),
77
                'message' => 'パスワード(確認)を入力してください'
78
            ), 
79 04e657a7 root
        ),
80 d6c3d8de root
                'status' => array(
81
                        'numeric' => array(
82
                                'rule' => array('numeric'),
83
                                //'message' => 'Your custom message here',
84
                                //'allowEmpty' => false,
85
                                //'required' => false,
86
                                //'last' => false, // Stop validation after this rule
87
                                //'on' => 'create', // Limit validation to 'create' or 'update' operations
88
                        ),
89
                ),
90
        );
91
92 67acbfb5 hasse
        public $reset_pwd_validate = array(
93
        'email' => array(
94
                array(
95
                                'rule' => array('notBlank'),
96
                'message' => 'メールアドレスを入力してください'
97
            ),
98
            // メールアドレスであること。
99
            'isEmail' => array( 
100
                                'rule' => 'Email',
101
                    'message' => '正しいメールアドレスを入力してください'
102
            ),
103
            array(
104
                'rule' => 'emailConfirm', 
105
                'message' => 'メールアドレスが一致していません'
106
            ), 
107
            array(
108
                'rule' => 'NotExistEmailCheck', 
109
                'message' => 'このメールアドレスは登録されていません'
110
            ), 
111 d6c3d8de root
112 67acbfb5 hasse
        ),
113
        'email_confirm' => array(
114
            array(
115
                                'rule' => array('notBlank'),
116
                'message' => 'メールアドレス(確認)を入力してください'
117
            ), 
118
119
        ),
120
121
        'password' => array(
122
            array(
123
                                'rule' => array('notBlank'),
124
                'message' => 'パスワードを入力してください'
125
            ), 
126
            array(
127
                'rule' => array('minLength', 8), 
128
                'message' => 'パスワードは8文字以上入力してください', 
129
            ),
130
            array(
131
                'rule' => 'passwordConfirm', 
132
                'message' => 'パスワードが一致していません'
133
            ), 
134
        ),
135
        'password_confirm' => array(
136
            array(
137
                                'rule' => array('notBlank'),
138
                'message' => 'パスワード(確認)を入力してください'
139
            ), 
140
        ),
141
        );
142 16e57cae hasse
    public $new_pwd_validate = array(
143 67acbfb5 hasse
144
        'password' => array(
145
            array(
146 16e57cae hasse
                'rule' => array('notBlank'),
147 67acbfb5 hasse
                'message' => 'パスワードを入力してください'
148
            ), 
149
            array(
150
                'rule' => array('minLength', 8), 
151
                'message' => 'パスワードは8文字以上入力してください', 
152
            ),
153
            array(
154
                'rule' => 'passwordConfirm', 
155
                'message' => 'パスワードが一致していません'
156
            ), 
157
        ),
158
        'password_confirm' => array(
159
            array(
160 16e57cae hasse
                'rule' => array('notBlank'),
161 67acbfb5 hasse
                'message' => 'パスワード(確認)を入力してください'
162
            ), 
163
        ),
164 16e57cae hasse
    );
165
    public $reset_pwd_comp_mail_validate = array(
166
167
        'password' => array(
168
            array(
169
                'rule' => array('notBlank'),
170
                'message' => 'パスワードを入力してください'
171
            ), 
172
            array(
173
                'rule' => array('minLength', 8), 
174
                'message' => 'パスワードは8文字以上入力してください', 
175
            ),
176
        ),
177
    );
178
179
180
181
182 8b8631af hasse
        public function DuplicateEmailCheck(){
183
                $query = array('conditions' => array('User.email' => $this->data['User']['email'],'User.status' => 1));
184
                $num = $this->find('count',$query);
185
                //$this->log($recodes);
186
                //var_dump($num);
187
                //exit;
188
                if($num > 0){
189
            return false;        //登録済み                
190
                } else{
191
            return true;        //未登録        
192
                }
193
        }
194 04e657a7 root
195 8b8631af hasse
    public function passwordConfirm($check){
196
        //2つのパスワードフィールドが一致する事を確認する
197
        if($this->data['User']['password'] === $this->data['User']['password_confirm']){
198 04e657a7 root
            return true;
199 8b8631af hasse
        }else{
200
            return false;
201 04e657a7 root
        }
202 8b8631af hasse
203 04e657a7 root
    }
204
205 67acbfb5 hasse
    public function emailConfirm($check){
206
        //2つのパスワードフィールドが一致する事を確認する
207
        if($this->data['User']['email'] === $this->data['User']['email_confirm']){
208
            return true;
209
        }else{
210
            return false;
211
        }
212
213
    }
214 8b8631af hasse
215 16e57cae hasse
    public function activationHash() {
216
        // ユーザIDの有無確認
217
        
218
        if (!isset($this->id)) {
219
            return false;
220
        }
221
        // 更新日時をハッシュ化
222
        // return Security::hash( $user_id['User']['updated'], 'md5', true);
223
        return Security::hash( $this->field('updated'), 'md5', true);
224
    }
225
    public function getActivationHash($id) {
226
        // ユーザIDの有無確認
227
        $query = array('conditions' => array('User.id' => $id));
228
        $user_id = $this->find('first',$query);
229
        if (!isset($user_id['User']['id'])) {
230
        // if (!isset($this->id)) {
231
            return false;
232
        }
233
        // 更新日時をハッシュ化
234
        return Security::hash( $user_id['User']['updated'], 'md5', true);
235
        // return Security::hash( $this->field('updated'), 'md5', true);
236
    }
237 04e657a7 root
238
239 67acbfb5 hasse
        //メールアドレスが登録されていない、またはメールアドレスのstatusが1ではない場合、エラーを出す
240
        public function NotExistEmailCheck(){
241
                $query = array('conditions' => array('User.email' => $this->data['User']['email'],'User.status' => 1));
242
                $num = $this->find('count',$query);
243
                //$this->log($recodes);
244
                //var_dump($num);
245
                //exit;
246
                if($num > 0){
247
            return true;        //未登録
248
                } else{
249
            return false;        //登録済み
250
                }
251
        }
252
253 d6c3d8de root
        public function beforeSave($options = array()) {
254
            if (isset($this->data[$this->alias]['password'])) {
255
                $passwordHasher = new BlowfishPasswordHasher();
256
                $this->data[$this->alias]['password'] = $passwordHasher->hash(
257
                    $this->data[$this->alias]['password']
258
                );
259
            }
260
            return true;
261
        }
262
263
264
}