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

スキャフォールドを元に、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