(前回の続き)
ダッシュボードの実装
ダッシュボードはログイン直後に表示されるページ。ここではサンプルとして、ログアウトとパスワード変更のためのリンクを載せておく。
<?php /*app/View/Users/dashboard.ctp*/ ?> <h2>ダッシュボード</h2> <?php debug($loggedin); ?> <?php echo $this->Html->link('パスワード変更', array('controller' => 'users', 'action' => 'password')); ?> <br /> <?php echo $this->Html->link('ログアウト', array('controller' => 'users', 'action' => 'logout')); ?>
パスワード変更機能の実装
まずはビューを実装。
<?php /*app/View/Users/password.ctp*/ ?> <h2>パスワード変更</h2> ユーザ名: <?php echo $this->Form->value('User.username'); ?> <?php echo $this->Form->create('User'); echo $this->Form->input('id'); echo $this->Form->input('password', array('label' => '新しいパスワード', 'value' => '')); echo $this->Form->end('更新'); ?>
そしてアクションを実装。
// app/Controller/UsersController.php ... class UsersController extends AppController { .... // パスワード変更 public function password() { $id = $this->Auth->user('id'); $this->User->id = $id; if (!$this->User->exists()) { throw new NotFoundException('不適切なユーザ'); } if ($this->request->is('post') || $this->request->is('put')) { debug($this->request->data); if ($this->User->save($this->request->data)) { $this->Session->setFlash('パスワードが更新されました。'); $this->redirect(array('action' => 'dashboard')); } else { $this->Session->setFlash('パスワードが更新できませんでした'); } } $this->request->data = $this->User->read(null, $id); } .... }
これにて完成
全ソース (GitHub)
https://github.com/84kure/cakephp2-sample-auth