ラスタ

ラスタ

(0 件のコメント, 47 件の投稿)

猪野浩史。有限会社ラスタファクトリ代表取締役。
コーディングから会社経営まで、何でもやります。
1980年代、Z80のハンドアセンブルに始まり、その後C、C++、VB、Java、PHP、C#などを遍歴。C以前はTinyPASCAL、GAME、TL/1、FORM、FORTHなんてのも使いました(謎?)。
そんなわけで、TK-80の頃からいろいろと弄り回して現在に至っています。
お仕事は、黎明期のPCゲームからコンシューマーゲームを経て電機メーカーでファームやドライバやユーティリティーを書き、現在はWEBでスマホでソーシャルな感じの路線です。
詳しくはこちらをご覧ください。

ラスタ による投稿
 

認証 その3 SimpleAuthのユーザ管理画面を作る

0

前の記事では認証画面の表示とユーザ管理テーブルのスキャフォールドまでで、ユーザデータの操作はできませんでした。

スキャフォールドを元に、Authクラスでユーザデータを操作するようにコードを変更してみます。

新規追加のための変更

 

最初にビューを変更します。

last_login、login_hashは新規ユーザ追加や変更時に入力する必要はありませんから削除しましょう。

また、profile_fieldsもとりあえず必要ないので削除します。

fuel/app/views/admin/user/_form.phpから以下の部分を削除します。

グループは管理者をデフォルトにすることにします。

同じくfuel/app/views/admin/user/_form.phpから以下の部分を削除します。

 

次に、モデルのvalidateメソッドから上記で削除した項目の検証を削除します。

削除後、fuel/app/classes/model/user.phpのvalidateメソッドは以下のようになります。

 

最後に、コントローラがusersテーブルにデータを追加している部分を、Auth::user_createを実行するように書き換えます。 fuel/app/classes/controller/admin/user.phpのaction_createメソッドから以下の記述を削除し、

以下のコードで置き換えます。

 

それでは早速Add new Userしてみましょう。

新規ユーザを追加

Username、Password、Emailを入力してSaveします。

 

追加されている

ユーザfuelが追加されました。 ログアウトしてfuelでログインしてみます。

ユーザfuelでログイン

ログイン成功

ログインできました。うまくいったようです。

 

編集のための変更

 

SimpleAuthはユーザ名の変更が出来ません。

また、パスワードを変更するには新しいパスワードと共に元のパスワードが必要な仕様になっています。

このため、新規追加の入力フォームは流用できませんから、新しく作ることにします。

変更する項目はメールアドレスとパスワードとし、メールアドレスは変更されていれば上書き、パスワードは古いパスワードと新しいパスワードの両方が入力されたとき変更するようにします。

 

fuel/app/views/admin/user/_form.phpをコピーして_form_edit.phpを作り、編集フォームのための変更を行います。

Usernameの部分を削除し、Old PasswordとNew Passwordを追加します。

パスワードの初期状態はどちらも空にしておきます。

fuel/app/views/admin/user/edit.phpで表示するフォームを_form_edit.phpに変更します。

上記のコードは、見出しにユーザ名を表示するようにしています。

 

次に、モデルに入力の検証コードを追加します。

fuel/app/classes/model/user.phpにvalidate_editメソッドを追加します。

 

続いてコントローラを変更します。

fuel/app/classes/coltroller/user.phpのaction_editメソッドから以下の部分を削除します。

削除した部分を以下のコードで置き換えます。

モデルの編集フォーム検証メソッドを呼び出している部分をvalidateからvalidate_editに変更します。

 

それでは動作を確認しましょう。 ユーザadminでログインします。

ユーザ一覧

ユーザfuelをEditします。

まずはメールアドレスを変更してみます。

fuel@example.comをmail@example.comに変更します。

ユーザfuelのメールアドレスを変更

メールアドレスが変更された

mail@example.comに変更されました。 次にパスワードを変更してみます。

パスワードを変更

一旦ログアウトして、ユーザfuelの新しいパスワードでログインします。

ログイン成功

ログイン出来ました。

これでユーザのメールアドレスとパスワードの変更ができるようになりました。

 

削除のための変更

 

このままでもユーザの削除はできるのですが、せっかくなので削除もAuthクラスを使うように変更しましょう。

 

コントローラの削除処理を変更します。

fuel/app/classes/controller/admin/user.phpのaction_deleteメソッドの以下の部分を

以下のコードで置き換えます。

 

ユーザadminでログインしてユーザfuelをDeleteします。

確認ダイアログでOKをクリックします。

fuelphp-simpleauth-014

ユーザfuelが削除されました。

fuelphp-simpleauth-015

WordPressのMystiqueテーマ

0

当サイトはWordPressで構築しているわけですが、テーマはMystiqueというものを使っています。

このMystiqueをアップデートしたら、テーマ設定画面でJavaScriptがエラーを吐いて画面構成をデフォルトから変更できなくなってしまいました。

気に入っていたテーマなので、どうにかならないものかと調べてみたら、Mystiqueのサポートページに対策が投稿されていたのでメモっておきます。

wp-content/themes/mystique/atom-hooks.phpの

if(!ATOM_DEV_MODE && $app->options('optimize')){

という部分を

if(!ATOM_DEV_MODE || $app->options('optimize')){

に変更することで解消しました。

WordPress3.5とMystique3.3.2で起こる現象で、jquery.atomとjquery最新版の互換性の問題のようです。

MySQLにリモート接続できない

0

たまに新規サーバーを建てたりすると、ローカルでしかmysqlに接続できなくて焦ったりします。

これはmy.cnfのbind-addressがデフォルトで127.0.0.1になっているためで、このままでは127.0.0.1へのアクセスしかlistenしてくれず、リモートから接続しようとしても知らんぷりでログさえ残らず原因不明に苦しむわけです。

このbind-addressを、192.168.1.などにしておけばローカルネットワーク限定でlistenするようになります。

それでもサーバーのセグメントを引っ越したときにまた同じ現象にハマったりするので、いっそのこと0.0.0.0にしてしまえばその後の変更も不要になります。

ubuntuのApacheドキュメントルート

0

ubuntuの場合、CentOSと違ってDocumentRootをhttpd.confに書いてもうまく行きません。

というのも、ubuntuではhttpd.confの内容を/etc/apache2/sites-enabled下のファイルで上書きするようになっていて、デフォルトでは/etc/apache2/sites-enabled/000-defaultにDocumentRootが書かれているからです。

/etc/apache2/sites-enabled/000-defaultの内容を変更することで、DocumentRootが通るようになります。

 

 

認証 その2 SimpleAuthの認証画面を試す

0

oil g adminコマンドを使うとスキャフォールドと認証画面を一気に生成することができます。

ここでは、認証用ユーザ管理テーブルのスキャフォールドと認証画面をまとめて作ってみます。

 

まず、ユーザ管理テーブルのスキャフォールドを生成します。

FuelPHP 1.5ではfuel/packages/auth/exampleにSimpleAuth用のマイグレーションファイルがありますが、ここではoil g adminを使うことが目的なので、oilコマンドでマイグレーションを生成します。

$ oil g admin user username:varchar[50] password:varchar[255] group:int:default[1] email:varchar[255] last_login:varchar[25] login_hash:varchar[255] profile_fields:text

マイグレーションをデータベースに反映させます。

$ oil r migrate

テーブルが出来たら、ユーザーを新規追加します。

oilコマンドでテストコンソールを開き、Authパッケージのcreate_userメソッドを実行します。

$ oil c

Fuel 1.4 - PHP 5.3.10-1ubuntu3.5 (cli) (Jan 18 2013 23:39:11) [Linux]
>>> Auth::create_user('admin', 'pass', 'admin@example.com', 100)
1
>>>

create_userメソッドの引数は、ユーザ名、パスワード、メールアドレスのほか、グループIDが必須です。

ここで指定している値100は、simpleauth.phpで設定している管理者グループのIDです。

成功すると追加されたレコードのidが表示されます。成功したらCtrl+Cでコンソールを終了します。

 

これだけで完了です。

public/adminをブラウザで開いてみましょう。

SimpleAuth認証画面

認証画面が表示されます。

さきほど新規追加したユーザでログインします。

管理画面ダッシュボード

ダッシュボードが表示されます。

上部のリンクUserをクリックするとスキャフォールドで作成されたUsersテーブル管理画面が表示されます。

スキャフォールドによる管理画面

 

以上でSimpleAuthの認証画面を確認できました。

ただし、この例ではAuth::create_userの処理を入れていないので、このスキャフォールドを使った新規ユーザ追加や変更はできません。

 

追補

いろいろやっているうちに、ログインすると310リダイレクトループエラーになるようになってしまったときは、マイグレーションをやり直すと解消します

認証 その1 SimpleAuthのシンプルな設定

0

Authパッケージを使うと、ユーザ認証(Authentication)と認可(Authorization)のインターフェースを利用できます。

ここでは実装サンプルとして添付されているSimpleAuthを試してみます。

 

まずはfuel/app/config/config.phpにauthパッケージを読み込む記述を追加します。

 

次にfuel/packages/auth/config/auth.phpとfuel/packages/auth/config/simpleauth.phpをfuel/app/configディレクトリにコピーします。

 

auth.phpではAuthドライバの設定を行います。これはこのままで構いません。

simpleauth.phpではSimpleAuthの設定を行います。ユーザにアクセス権限を与えるためにグループIDの設定が必要ですが、コメントアウトされているので、これを外します。

以上でとりあえずSimpleAuthを動かす設定ができました。

 

データベースを使う その5 スキャフォールド生成

0

スキャフォールドは足場という意味で、これを生成することでORMの機能に加えてテーブル管理のコントローラとビューまでコマンドひとつで出来てしまうという、恐ろしく便利なものです。

 

さっそく試してみましょう。

ここではnameフィールドとageフィールドを持つuserテーブルを作成することとします。

$ oil g scaffold user name:varchar[32] age:int

fuel/app/classes/model/user/phpから見ていきます。

ORMパッケージのModelを継承しているのはORMモデル生成の場合と同様ですが、validateメソッドが追加されています。このメソッドはコントローラから呼び出され、データのバリデーション条件を返します。

また、マイグレーションファイルもモデル生成時と同じくfuel/app/migrationsディレクトリに生成されています。

 

次に、fuel/app/classes/controller/user.phpを見てみましょう。

メソッド 処理内容
action_index 一覧表示
action_view 個別データ表示
action_create 新規追加
action_edit 変更
action_delete 削除

action_createとaction_editでは、入力されたデータがモデルのvalidateから得た規定に合っているかを確認しています。

fuel/app/views/userディレクトリにはビューのコードが生成されています。

template.php ページのテンプレート
_form.php 入力フォーム
index.php  一覧表示
view.php 個別表示
create.php 新規追加
edit.php 変更

コードが生成されているのを確認したらデータベースに反映させます。

$ oil r migrate

 

それではページを表示してみましょう。ブラウザでpublic/usersを開きます。

データなし

データ一覧ページが表示されます。

まだデータはありません。

 

Addボタンをクリックすると新規追加ページが表示されます。

データを入力

データを入力したらSaveボタンをクリックします。

データが追加されている

データ一覧ページに戻ります。

入力したデータが追加されています。

 

次にViewをクリックしてデータを表示してみます。

選択したデータを表示

選択したデータが表示されます。

 

Editをクリックしてデータを変更してみます。

データを変更する

変更してSaveボタンをクリックすると、再び一覧ページが表示されます。

データが変更されている

変更が反映されているのがわかります。

 

最後にDeleteをクリックして削除してみます。

データが削除されている

一覧が表示され、データは削除されています。

 

このように、スキャフォールドを使うことで簡単にデータベースアプリケーションの基本機能を構築することができます。

データベースを使う その2 フィールド型

0

データベースを使うにはoilコマンドのマイグレーション機能とモデル生成機能を利用します。

oilコマンドで使用できるフィールド型は以下のとおりです。

フィールドの書式はフィールド名:フィールド型です。

string[n]
varchar[n]
int[n]
enum[value1, value2]
decimal[n n]
float[n n]
text
blob
datetime
date
timestamp
time

データベースを使う その6 マイグレーション

0

oilコマンドでデータベースをいろいろと変更してみましょう。

これらのコマンドはfuel/migrationsディレクトリにマイグレーションファイルを生成します。

マイグレーションファイルを実際にデータベースに反映させるにはoil r migrateを実行します。

マイグレーションによる変更はデータベースに対してのみ有効です。oil g modelで生成したコードのテーブルやフィールドには反映されません。

 

テーブル作成

書式:

oil g migration create_テーブル名 フィールド [フィールド] ...

例:

$ oil generate migration create_users name:text email:string[50] password:string[125]

 

テーブル名変更

書式:

oil g migration rename_table_テーブル名_to_新しいテーブル名

例:

$ oil generate migration rename_table_users_to_accounts

 

フィールド追加

書式:

oil g migration add_フィールド名_to_テーブル名 フィールド

例:

$ oil generate migration add_bio_to_accounts bio:text

 

フィールド名変更

書式:

oil generate migration rename_field_フィールド名_to_新しいフィールド名_in_テーブル名

例:

$ oil generate migration rename_field_name_to_username_in_accounts

 

テーブル削除

書式:

oil generate migration drop_テーブル名

例:

$ oil generate migration drop_accounts

データベースを使う その4 CRUDモデル生成

0

oilコマンドでCRUDモデル(Create、Retrieve、Update、Deleteの機能を持ったModel_Crudクラス)のコードを自動生成してみます。

 

CRUDモデルはORMモデルほど強力ではありませんが、機能が絞られているぶん、簡単なアプリケーション手軽に作るのに向いています。

oilコマンドに--crudオプションを付ける以外は、ORMモデルと同じ方法で生成できます。ORMモデル生成の記事も参照してください。

 

ここでは、varchar[32]のnameカラムを持つuserテーブルを生成します(テーブルの命名には少し注意が必要です)。

$ oil g model user name:varchar[32] --crud

上記のコマンドを実行すると、fuel/app/classes/model/user.phpファイルが生成されます。

oilコマンドは$ oil createで作成したディレクトリで実行することに注意してください。

idはoilによって自動的に付加されます。

 

fuel/migrationsディレクトリにはusersテーブルをcreateする001_create_users.phpが生成されます。

ORMモデルと違って、CRUDモデルはオブザーバー機能を持たないため、テーブルにはcreate_atとupdate_atが付加されません。

 

モデルとマイグレーションを生成したら、データベースに反映させましょう。

$ oil r migrateを実行すると、データベースにテーブルが作成されます。

 

ラスタ のRSSフィード
ページのトップへ