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

pictcode / app / Model / User.php @ d932d503

履歴 | 表示 | アノテート | ダウンロード (8.022 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
            array(
23
                                'rule' => array('notBlank'),
24
                'message' => 'この項目は入力必須です'
25
                        ),
26
            array( 
27
                'rule' => 'isUnique', 
28
                'message' => '既に登録されています'
29
            ),
30
        ),
31
        'email' => array(
32
                array(
33
                                'rule' => array('notBlank'),
34
                'message' => 'メールアドレスを入力してください'
35
            ),
36
            // メールアドレスであること。
37
            'isEmail' => array( 
38
                                'rule' => 'Email',
39
                    'message' => '正しいメールアドレスを入力してください'
40
            ),
41
            array(
42
                'rule' => 'DuplicateEmailCheck', 
43
                'message' => 'このメールアドレスは既に登録されています'
44
            ), 
45
            // 一意性チェック
46
            // 'emailExists' => array( 'rule' => 'isUnique', 'message' => '既に登録されています'),
47
        ),
48
        'email_confirm' => array(
49
            array(
50
                                'rule' => array('notBlank'),
51
                'message' => 'メールアドレス(確認)を入力してください'
52
            ), 
53
            array(
54
                'rule' => 'emailConfirm', 
55
                'message' => 'メールアドレスが一致していません'
56
            ), 
57

    
58
        ),
59

    
60
        'password' => array(
61
            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
        ),
80
                '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
        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

    
112
        ),
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
    public $new_pwd_validate = array(
143

    
144
        'password' => array(
145
            array(
146
                'rule' => array('notBlank'),
147
                '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
                'rule' => array('notBlank'),
161
                'message' => 'パスワード(確認)を入力してください'
162
            ), 
163
        ),
164
    );
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
        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

    
195
    public function passwordConfirm($check){
196
        //2つのパスワードフィールドが一致する事を確認する
197
        if($this->data['User']['password'] === $this->data['User']['password_confirm']){
198
            return true;
199
        }else{
200
            return false;
201
        }
202

    
203
    }
204

    
205
    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

    
215
    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

    
238

    
239
        //メールアドレスが登録されていない、またはメールアドレスの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
        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
}