CakePHPでAuthコンポーネントを利用して会員認証を実装する方法

CakePHPで会員制サイトを作り始めました。Authコンポーネントは使ったことがなかったので、備忘録代わりに流れを書いておきます。

データベースにusersテーブルを作成する

フィールドはid, username, password, modified, createdを作成

app/controller/app_controller.php

すべてのコントローラでAuthコンポーネントを使うためにAppControllerを定義します。

<?php
class AppController extends Controller{
    var $components = array('Auth');
}

app/controllers/users_controller.php

アクションを定義します。実装が空ですが、Authコンポーネントがなんとかしてくれます。

<?php
class UsersController extends AppController{
    var $name = 'Users';
    
    function login(){
        //empty for auth component
    }
    
    function logout(){
        $this->redirect($this->Auth->logout());
    }
}

app/views/users/login.ctp

ビューを実装します。

<?php
if  ($session->check('Message.auth')) {
    $session->flash('auth');
}

echo $form->create('User', array('action' => 'login'));
echo $form->input('username');
echo $form->input('password');
echo $form->end('Login');

ここまでで、/users/loginにアクセスすればログイン画面は表示できます。
次は、新規登録画面です。

app/models/user.php

Userモデルを定義していなかったので作成します。

<?php
class User extends AppModel{
    var $name = 'User';
}

app/controllers/users_controller.php

コントローラに追加してください。

<?php
function register(){
    //debug('register');
    if(isset($this->data)){
        //debug('found data');

        if($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])){
            $this->User->create();
            $this->User->save($this->data);
            
            $this->flash("ユーザー" . $this->data['User']['username'] . 'を登録しました', '/users/login');
        }else{
            //パスワードと確認用パスワードが一致しなかった場合
            $this->flash('パスワードと確認用パスワードが一致していません', '/users/register');
        }
    }
}

app/views/users/register.ctp

<?php
echo $form->create('User');
echo $form->input('username');
echo $form->input('password');
echo $form->input('password_confirm', array('type' => 'password'));
echo $form->end('Register');

とりあえず、これで動作するかと思います。
次はvalidationを行おうかと思います。
なにか不備がありましたら、コメント欄によろしくお願いします。