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

pictcode / app / Model / User.php @ 0a142321

履歴 | 表示 | アノテート | ダウンロード (7.913 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
                if($num > 0){
186
            return false;        //登録済み                
187
                } else{
188
            return true;        //未登録        
189
                }
190
        }
191

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

    
200
    }
201

    
202
    public function emailConfirm($check){
203
        //2つのパスワードフィールドが一致する事を確認する
204
        if($this->data['User']['email'] === $this->data['User']['email_confirm']){
205
            return true;
206
        }else{
207
            return false;
208
        }
209

    
210
    }
211

    
212
    public function activationHash() {
213
        // ユーザIDの有無確認
214
        
215
        if (!isset($this->id)) {
216
            return false;
217
        }
218
        // 更新日時をハッシュ化
219
        // return Security::hash( $user_id['User']['updated'], 'md5', true);
220
        return Security::hash( $this->field('updated'), 'md5', true);
221
    }
222
    public function getActivationHash($id) {
223
        // ユーザIDの有無確認
224
        $query = array('conditions' => array('User.id' => $id));
225
        $user_id = $this->find('first',$query);
226
        if (!isset($user_id['User']['id'])) {
227
        // if (!isset($this->id)) {
228
            return false;
229
        }
230
        // 更新日時をハッシュ化
231
        return Security::hash( $user_id['User']['updated'], 'md5', true);
232
        // return Security::hash( $this->field('updated'), 'md5', true);
233
    }
234

    
235

    
236
        //メールアドレスが登録されていない、またはメールアドレスのstatusが1ではない場合、エラーを出す
237
        public function NotExistEmailCheck(){
238
                $query = array('conditions' => array('User.email' => $this->data['User']['email'],'User.status' => 1));
239
                $num = $this->find('count',$query);
240
                if($num > 0){
241
            return true;        //未登録
242
                } else{
243
            return false;        //登録済み
244
                }
245
        }
246

    
247
        public function beforeSave($options = array()) {
248
            if (isset($this->data[$this->alias]['password'])) {
249
                $passwordHasher = new BlowfishPasswordHasher();
250
                $this->data[$this->alias]['password'] = $passwordHasher->hash(
251
                    $this->data[$this->alias]['password']
252
                );
253
            }
254
            return true;
255
        }
256

    
257

    
258
}