FuelPHP 1.7.2のブログチュートリアル②

昨日のブログチュートリアルは単にブログの記事表示や新規作成、削除のみでユーザ認証機能はありませんでした。

今日のチュートリアルではユーザ認証機能のあるページを作成します。

【注意】このチュートリアルはアプリ作成の最短の手順を示したものであり、セキュリティ上必要な設定や機能が省略されています。実際にアプリを運用する場合は、『はじめてのフレームワークとしてのFuelPHP第2版(3) 実践編』などを参考に必要なセキュリティ上の設定や機能をすべて実装されることをお薦めします。

FuelPHP 1.7.2のインストール設定

http://fuelphp.com/の「Download v1.7.2 now!」より、fuelphp-1.7.2.zipをダウンロードし展開します。

config.phpの設定

FuelPHPの設定ファイルfuel/app/config/config.phpを変更し、FuelPHPのORMパッケージとAuthパッケージを使えるようにします。

--- a/fuel/app/config/config.php
+++ b/fuel/app/config/config.php
@@ -258,7 +258,7 @@ return array(
        /**************************************************************************/
        /* Always Load                                                            */
        /**************************************************************************/
-       // 'always_load'  => array(
+       'always_load'  => array(

                /**
                 * These packages are loaded on Fuel's startup.
@@ -271,9 +271,10 @@ return array(
                 *     array('auth'     => PKGPATH.'auth/')
                 * );
                 */
-               // 'packages'  => array(
-               //      //'orm',
-               // ),
+               'packages'  => array(
+                       'orm',
+                       'auth',
+               ),

                /**
                 * These modules are always loaded on Fuel's startup. You can specify them
@@ -309,6 +310,6 @@ return array(
                 * If you don't want the lang in a group use null as groupname.
                 */
                // 'language'  => array(),
-       // ),
+       ),

 );

配列のキーalways_loadpackagesormが有効になるように、コメント記号//を削除し、ormの下にauthを追加します。

auth.phpの設定

Authパッケージの設定ファイルfuel/packages/auth/config/auth.phpをfuel/app/config/にコピーし、driverをOrmauthに変更します。

--- fuel/packages/auth/config/auth.php  2014-07-22 18:23:20.000000000 +0900
+++ fuel/app/config/auth.php    2014-07-23 20:07:04.125328123 +0900
@@ -22,7 +22,7 @@
  */

 return array(
-   'driver' => 'Simpleauth',
+   'driver' => 'Ormauth',
    'verify_multiple_logins' => false,
    'salt' => 'put_your_salt_here',
    'iterations' => 10000,

データベースの準備

MySQL にデータベースを作成します。

> CREATE DATABASE `fuel_blog` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

fuel/app/config/development/db.phpを変更し、FuelPHPからデータベースにアクセスできるようにします。

return array(
    'default' => array(
        'connection'  => array(
            'dsn'        => 'mysql:host=localhost;dbname=fuel_blog',
            'username'   => 'root',
            'password'   => '',
        ),
    ),
);

ブログの作成

FuelPHPのoil generateコマンドによりコードを自動生成します。

$ php oil generate admin post title:varchar[50] body:text

以下のファイルが生成されました。

【注意】生成された全てのコードに目を通し、問題がないか確認することをお薦めします。

fuel/app/classes/controller/admin.php
fuel/app/classes/controller/admin/post.php
fuel/app/classes/controller/base.php
fuel/app/classes/model/post.php
fuel/app/migrations/001_create_posts.php
fuel/app/views/admin/dashboard.php
fuel/app/views/admin/login.php
fuel/app/views/admin/post/_form.php
fuel/app/views/admin/post/create.php
fuel/app/views/admin/post/edit.php
fuel/app/views/admin/post/index.php
fuel/app/views/admin/post/view.php
fuel/app/views/admin/template.php
fuel/app/views/template.php

マイグレーションを実行し、データベースにテーブルを作成します。

$ php oil refine migrate

これで以下のテーブルが作成されました。

CREATE TABLE IF NOT EXISTS `posts` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(50) NOT NULL,
  `body` text NOT NULL,
  `created_at` int(11) DEFAULT NULL,
  `updated_at` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

マイグレーションで、Authパッケージで必要なテーブルを作成します。

$ php oil refine migrate --packages=auth

Webサーバの起動

PHP 5.4以降のビルトインWebサーバを起動します。

$ php oil server

ブラウザからhttp://localhost:8000/admin/postにアクセスすると、ログインページにリダイレクトされます。

デフォルトの管理者ユーザでログインできます。

  ユーザ名:admin
パスワード:admin

http://localhost:8000/admin/postにアクセスすると、記事の一覧が表示され、記事の追加、削除、編集ができます。

スクリーンショット

次回:FuelPHP 1.7.2のブログチュートリアル③

Date: 2014/07/25

Tags: fuelphp, database