リビジョン 8b8631af
app/Controller/AppController.php | ||
---|---|---|
50 | 50 |
'logoutRedirect' => array( |
51 | 51 |
'controller' => 'users', |
52 | 52 |
'action' => 'login', |
53 |
'home' |
|
54 | 53 |
), |
55 | 54 |
'authenticate' => array( |
56 | 55 |
'Form' => array( |
app/Controller/UsersController.php | ||
---|---|---|
10 | 10 |
|
11 | 11 |
public $layout = 'procedure'; |
12 | 12 |
public $name = 'users'; |
13 |
public $uses = array('User'); |
|
13 | 14 |
|
14 | 15 |
public function beforeFilter() { |
15 | 16 |
parent::beforeFilter(); |
16 |
$this->Auth->allow('register','activate','confirm','sent'); |
|
17 |
$this->Auth->allow('register','activate','confirm','sent','login');
|
|
17 | 18 |
} |
18 | 19 |
|
19 | 20 |
/** |
... | ... | |
88 | 89 |
$this->set('register',$this->Session->read('register')); |
89 | 90 |
$name = $this->Session->read('register.User.login_id'); |
90 | 91 |
$mail = $this->Session->read('register.User.email'); |
91 |
// ユーザアクティベート(本登録)用URLの作成 |
|
92 |
// ユーザアクティベート(本登録)用URLの作成 DSはスラッシュの意味
|
|
92 | 93 |
$url = |
93 | 94 |
DS . 'users' . // コントローラ |
94 | 95 |
DS . 'activate' . // アクション |
... | ... | |
102 | 103 |
$Email->emailFormat('text'); |
103 | 104 |
$Email->template('user_register'); |
104 | 105 |
$Email->viewVars(array('name'=>$name,'comment'=>$comment)); |
105 |
$Email->from($mail);
|
|
106 |
$Email->to('hasegawa@i-hearts.jp');
|
|
106 |
$Email->from('hasegawa@i-hearts.jp');
|
|
107 |
$Email->to($mail);
|
|
107 | 108 |
$Email->subject('[PICT CODE]問い合わせ'); |
108 | 109 |
$Email->send(); |
109 | 110 |
} |
app/Model/User.php | ||
---|---|---|
19 | 19 |
*/ |
20 | 20 |
public $validate = array( |
21 | 21 |
'login_id' => array( |
22 |
'notBlank' => array( |
|
23 | 22 |
'rule' => array('notBlank'), |
24 |
//'message' => 'Your custom message here', |
|
25 |
//'allowEmpty' => false, |
|
26 |
//'required' => false, |
|
27 |
//'last' => false, // Stop validation after this rule |
|
28 |
//'on' => 'create', // Limit validation to 'create' or 'update' operations |
|
23 |
'message' => 'この項目は入力必須です' |
|
29 | 24 |
), |
30 |
), |
|
31 | 25 |
'email' => array( |
26 |
array( |
|
27 |
'rule' => array('notBlank'), |
|
28 |
'message' => 'メールアドレスを入力してください' |
|
29 |
), |
|
32 | 30 |
// メールアドレスであること。 |
33 |
'validEmail' => array( 'rule' => array( 'email', true), 'message' => 'アドレスを入力して下さい'), |
|
31 |
'isEmail' => array( |
|
32 |
'rule' => 'Email', |
|
33 |
'message' => '正しいメールアドレスを入力してください' |
|
34 |
), |
|
35 |
array( |
|
36 |
'rule' => 'DuplicateEmailCheck', |
|
37 |
'message' => 'このメールアドレスは既に登録されています' |
|
38 |
), |
|
34 | 39 |
// 一意性チェック |
35 | 40 |
// 'emailExists' => array( 'rule' => 'isUnique', 'message' => '既に登録されています'), |
36 | 41 |
), |
37 | 42 |
'password' => array( |
38 |
// パスワード・確認用パスワードの一致 |
|
39 |
'match' => array( 'rule' => array( 'confirmPassword', 'password_confirm'), 'message' => '一致しません'), |
|
43 |
array( |
|
44 |
'rule' => array('notBlank'), |
|
45 |
'message' => 'パスワードを入力してください' |
|
46 |
), |
|
47 |
array( |
|
48 |
'rule' => array('minLength', 8), |
|
49 |
'message' => 'パスワードは8文字以上入力してください', |
|
50 |
), |
|
51 |
array( |
|
52 |
'rule' => 'passwordConfirm', |
|
53 |
'message' => 'パスワードが一致していません' |
|
54 |
), |
|
55 |
), |
|
56 |
'password_confirm' => array( |
|
57 |
array( |
|
58 |
'rule' => array('notBlank'), |
|
59 |
'message' => 'パスワード(確認)を入力してください' |
|
60 |
), |
|
40 | 61 |
), |
41 |
// 'password' => array( |
|
42 |
// 'notBlank' => array( |
|
43 |
// 'rule' => array('notBlank'), |
|
44 |
// //'message' => 'Your custom message here', |
|
45 |
// //'allowEmpty' => false, |
|
46 |
// //'required' => false, |
|
47 |
// //'last' => false, // Stop validation after this rule |
|
48 |
// //'on' => 'create', // Limit validation to 'create' or 'update' operations |
|
49 |
// ), |
|
50 |
// ), |
|
51 | 62 |
'status' => array( |
52 | 63 |
'numeric' => array( |
53 | 64 |
'rule' => array('numeric'), |
... | ... | |
61 | 72 |
); |
62 | 73 |
|
63 | 74 |
|
75 |
public function DuplicateEmailCheck(){ |
|
76 |
$query = array('conditions' => array('User.email' => $this->data['User']['email'],'User.status' => 1)); |
|
77 |
$num = $this->find('count',$query); |
|
78 |
//$this->log($recodes); |
|
79 |
//var_dump($num); |
|
80 |
//exit; |
|
81 |
if($num > 0){ |
|
82 |
return false; //登録済み |
|
83 |
} else{ |
|
84 |
return true; //未登録 |
|
85 |
} |
|
86 |
} |
|
64 | 87 |
|
65 |
public function confirmPassword( $field, $password_confirm) { |
|
66 |
if ($field['password'] === $this->data[$this->name][$password_confirm]) { |
|
88 |
public function passwordConfirm($check){ |
|
89 |
//2つのパスワードフィールドが一致する事を確認する |
|
90 |
if($this->data['User']['password'] === $this->data['User']['password_confirm']){ |
|
67 | 91 |
// パスワードハッシュ化 |
68 |
$this->data[$this->name]['password'] = Security::hash( $plain, 'sha512', true);
|
|
92 |
$this->data[$this->name]['password'] = Security::hash( $password, 'sha512', true);
|
|
69 | 93 |
return true; |
94 |
}else{ |
|
95 |
return false; |
|
70 | 96 |
} |
97 |
|
|
71 | 98 |
} |
72 | 99 |
|
100 |
|
|
73 | 101 |
public function getActivationHash() { |
74 | 102 |
// ユーザIDの有無確認 |
75 | 103 |
if (!isset($this->id)) { |
app/View/Layouts/procedure.ctp | ||
---|---|---|
44 | 44 |
<header> |
45 | 45 |
<a href="/top/index"><img class="header_button left" type="button" src="/img/btn_header_004.png" alt=""></a> |
46 | 46 |
<img class="center" src="/img/header_title.png" alt="Pict Code"> |
47 |
<a href=""><img class="header_button right" type="button" src="/img/btn_header_014.png" alt=""></a> |
|
47 |
<a href="/users/logout"><img class="header_button right" type="button" src="/img/btn_header_014.png" alt=""></a>
|
|
48 | 48 |
</header> |
49 | 49 |
|
50 | 50 |
|
app/View/users/activate.ctp | ||
---|---|---|
13 | 13 |
<section> |
14 | 14 |
<h3>登録が完了しました!</h3> |
15 | 15 |
<p>この度は、PictCodeにご登録いただき誠にありがとうございます。<br>PictCodeは、これからIT技術を担っていくお子様達に、プログラミングを楽しんでもらうと同時に、プログラムを組む上で必要な「計画性」と「組織性」、そして「想像力」を育むツールでもあります。プログラミングにおいて、この無限大の可能性を持つツールを用いる事で、お子様の想像力を最大限に発揮させ、さらには世界を代表するような逸材に育てていきましょう!</p> |
16 |
</section> |
|
17 |
|
|
18 |
|
|
19 |
<?php |
|
20 |
echo $this->Session->flash(); |
|
21 |
echo $this->Html->link( 'ログイン画面へ', '/users/login'); |
|
22 |
?> |
|
16 |
</section> |
|
23 | 17 |
</div> |
24 | 18 |
<section class="button_area01"> |
25 |
<a href="index.html"><p class="button btn_top02"></p></a>
|
|
19 |
<a href="/top/index"><p class="button btn_top02"></p></a>
|
|
26 | 20 |
</section> |
27 | 21 |
</article> |
28 | 22 |
</main> |
app/View/users/confirm.ctp | ||
---|---|---|
25 | 25 |
</section> |
26 | 26 |
</div> |
27 | 27 |
<section class="button_area01"> |
28 |
<a href="register.html"><p class="button btn_alter01"></p></a>
|
|
28 |
<a href="javascript:history.back();"><p class="button btn_alter01"></p></a>
|
|
29 | 29 |
<a href="/users/sent"><p class="button btn_register"></p></a> |
30 | 30 |
</section> |
31 | 31 |
</article> |
app/View/users/login.ctp | ||
---|---|---|
8 | 8 |
<p class="">ほぞんデータを かんりするためには、ニックネームと パスワードを 入力して ログインする ひつようが あります。 入力に まちがいがないように 注意してください。</p> |
9 | 9 |
<?php echo $this->Form->create('User',array( |
10 | 10 |
'div' => false, |
11 |
'type'=>'post', |
|
11 |
'novalidate' => true, |
|
12 |
'inputDefaults' => array( |
|
13 |
'before' => '<dt>', |
|
14 |
'between' => '</dt><dd>', |
|
15 |
'after' => '</dd>', |
|
16 |
'div' => false |
|
17 |
) |
|
12 | 18 |
)); ?> |
13 | 19 |
<fieldset> |
14 | 20 |
<section> |
15 | 21 |
<dl> |
16 | 22 |
<?php |
17 |
echo |
|
18 |
'<dt><label for="">ニックネーム</label></dt> |
|
19 |
<dd>'; |
|
20 |
echo $this->Form->text('login_id', |
|
23 |
echo $this->Form->input('login_id', |
|
21 | 24 |
array( 'type' => 'text', |
25 |
'label' => 'ニックネーム', |
|
22 | 26 |
'placeholder'=>'ニックネーム' |
23 | 27 |
)); |
24 |
echo |
|
25 |
'</dd> |
|
26 |
<dt><label for="">パスワード</label></dt> |
|
27 |
<dd>'; |
|
28 |
echo $this->Form->text('password', |
|
28 |
echo $this->Form->input('password', |
|
29 | 29 |
array( 'placeholder'=>'パスワード', |
30 |
'label' => 'パスワード', |
|
30 | 31 |
'maxlength' => '50', |
31 | 32 |
'type' => 'password' |
32 | 33 |
)); |
33 |
echo |
|
34 |
'</dd>'; |
|
35 | 34 |
?> |
36 | 35 |
</dl> |
37 | 36 |
</section> |
38 |
</fieldset> |
|
39 |
<?php $this->Form->submit('送信する',array('class'=>'btn btn-info')); ?> |
|
40 |
<?php $this->Form->end(); ?> |
|
41 |
|
|
42 |
<?php echo $this->Flash->render('auth'); ?> |
|
43 |
|
|
37 |
</fieldset> |
|
38 |
<?php echo $this->Session->flash(); ?> |
|
44 | 39 |
<section> |
45 | 40 |
<p>ニックネームや パスワードを 忘れたばあいには お父さんや お母さんに 相談して、<br><a href="reminder.html"><span class="link_reminder">コチラ</span></a>を クリックして パスワードを 再はっこうしてもらってね!</p> |
46 | 41 |
</section> |
47 | 42 |
<section class="button_area01"> |
48 | 43 |
<a href="/top/index"><p class="button btn_back02"></p></a> |
49 |
<a href="login_top"><p class="button btn_login"></p></a> |
|
44 |
<?php echo $this->Form->submit('',array('class'=>'button btn_check01')); ?> |
|
45 |
<?php echo $this->Form->end(); ?> |
|
50 | 46 |
</section> |
51 | 47 |
</article> |
52 | 48 |
</main> |
app/View/users/register.ctp | ||
---|---|---|
13 | 13 |
<div id="contents"> |
14 | 14 |
<?php echo $this->Form->create('User',array( |
15 | 15 |
'div' => false, |
16 |
'type'=>'post', |
|
17 |
//action'=>'register', |
|
16 |
'novalidate' => true, |
|
17 |
'inputDefaults' => array( |
|
18 |
'before' => '<dt>', |
|
19 |
'between' => '</dt><dd>', |
|
20 |
'after' => '</dd>', |
|
21 |
'div' => false |
|
22 |
) |
|
18 | 23 |
)); ?> |
19 | 24 |
<fieldset> |
20 | 25 |
<section> |
21 | 26 |
<dl> |
22 | 27 |
<?php |
23 |
echo |
|
24 |
'<dt><label for="">ニックネーム</label></dt> |
|
25 |
<dd>'; |
|
26 |
echo $this->Form->text('login_id', |
|
28 |
echo $this->Form->input('login_id', |
|
27 | 29 |
array( 'type' => 'text', |
30 |
'label' => 'ニックネーム', |
|
28 | 31 |
'placeholder'=>'ニックネーム' |
29 | 32 |
)); |
30 |
echo |
|
31 |
'</dd> |
|
32 |
<dt><label for="">パスワード</label></dt> |
|
33 |
<dd>'; |
|
34 |
echo $this->Form->text('password', |
|
33 |
echo $this->Form->input('password', |
|
35 | 34 |
array( 'placeholder'=>'パスワード', |
35 |
'label' => 'パスワード', |
|
36 | 36 |
'maxlength' => '50', |
37 | 37 |
'type' => 'password' |
38 | 38 |
)); |
39 |
echo |
|
40 |
'</dd> |
|
41 |
<dt><label for="">パスワード(確認用)</label></dt> |
|
42 |
<dd>'; |
|
43 |
echo $this->Form->text('password_confirm', |
|
39 |
echo $this->Form->input('password_confirm', |
|
44 | 40 |
array( 'placeholder'=>'パスワード(確認用)', |
41 |
'label' => 'パスワード(確認用)', |
|
45 | 42 |
'maxlength' => '50', |
46 | 43 |
'type' => 'password' |
47 | 44 |
)); |
48 |
echo |
|
49 |
'</dd> |
|
50 |
<dt><label for="">メールアドレス</label></dt> |
|
51 |
<dd>'; |
|
52 |
echo $this->Form->text( 'email', array('placeholder'=>'メールアドレス', |
|
45 |
echo $this->Form->input( 'email', |
|
46 |
array('placeholder'=>'メールアドレス', |
|
47 |
'label' => 'メールアドレス', |
|
53 | 48 |
'maxlength' => '255', |
54 | 49 |
'type' => 'email')); |
55 | 50 |
|
56 | 51 |
|
57 |
$this->Form->input('user_flg',1); |
|
58 |
$this->Form->input('status',1); |
|
52 |
echo $this->Form->input('user_flg', |
|
53 |
array( 'type' => 'hidden', |
|
54 |
'value' => 0, |
|
55 |
)); |
|
56 |
echo $this->Form->input('status', |
|
57 |
array( 'type' => 'hidden', |
|
58 |
'value' => 0, |
|
59 |
)); |
|
59 | 60 |
?> |
60 | 61 |
</dl> |
61 | 62 |
</section> |
62 | 63 |
</fieldset> |
63 |
<?php $this->Form->submit('送信する',array('class'=>'btn btn-info')); ?> |
|
64 |
<?php $this->Form->end(); ?> |
|
65 |
<?php //echo $this->Form->end(__('Submit')); ?> |
|
66 |
<?php //echo $this->Form->end('Register'); ?> |
|
67 |
<?php //echo $this->Form->end(); ?> |
|
68 | 64 |
</div> |
69 | 65 |
<section class="button_area01"> |
70 | 66 |
<a href="javascript:history.back();"> |
71 | 67 |
<p class="button btn_back01"></p> |
72 | 68 |
</a> |
73 |
<a href="/users/confirm"> |
|
69 |
<?php echo $this->Form->submit('',array('class'=>'button btn_check01')); ?> |
|
70 |
<?php echo $this->Form->end(); ?> |
|
71 |
<!-- <a href="/users/confirm"> |
|
74 | 72 |
<p class="button btn_check01"></p> |
75 | 73 |
</a> |
76 |
</section> |
|
74 |
--> </section>
|
|
77 | 75 |
</article> |
78 | 76 |
</main> |
79 | 77 |
|
app/webroot/css/main.css | ||
---|---|---|
570 | 570 |
font-size: 24px; |
571 | 571 |
} |
572 | 572 |
|
573 |
article.register dl dd span{ |
|
574 |
margin:0px 0 0 120px; |
|
575 |
font-size: 14px; |
|
576 |
} |
|
577 |
|
|
573 | 578 |
article.register dl dd p { |
574 | 579 |
margin:9px 0 0 0px; |
575 | 580 |
padding: 3px 0 3px 120px; |
... | ... | |
603 | 608 |
border: 1px solid #1abc9c; |
604 | 609 |
} |
605 | 610 |
|
611 |
div.submit input { |
|
612 |
border: none; |
|
613 |
} |
|
614 |
|
|
615 |
|
|
606 | 616 |
|
607 | 617 |
/* Contact Form */ |
608 | 618 |
|
... | ... | |
966 | 976 |
article.admin section.save_data ul li a:hover { |
967 | 977 |
display: block; |
968 | 978 |
box-shadow:none; |
969 |
} |
|
979 |
} |
他の形式にエクスポート: Unified diff