Laravel5で社内専用サイト(6-4)

さて、前回までで基本的なデータベースは完成しました。尚、UserとRoleの関連づけは本サイトでは、ご紹介していませんが、そんなに難しくないと思いますので、各自で作成してください。※Userの修正ページでロールのリストからRole_idを選択するように作成すればいいと思います。

まず、ACL(アクセスコントロールリスト)ですが、認証のauthも兼ねて作成するのも1つですが、authとは、別で作成する方法を考えてみたいと思います。ですので、アクセス制限するページには、$this->middleware(‘auth’)の後に、$this->middleware(‘acl’)と入力します。

こうすれば、$this->middleware(‘acl’,[‘only’=>[‘getDelete’,’postDelete’]])とすることで、削除用のメソッド以外には、一般的なログインユーザーがアクセスすることができるようになります。

この投稿の続きを読む »

タグ

2015年8月20日 | コメント/トラックバック(0) |

カテゴリー:Laravel

Laravel5で社内専用サイト(6-3)

前回は、ロールとパーミッションのデータをいくつか入力してみました。今回は、このロールとパーミッションを関連づけしたいと思います。

ロールとパーミッションの関連づけ

ロールの詳細ページから、パーミッションの許可(allow)の設定を行いたいと思います。getViewを下記のように作成します。

app/Http/ControllersAuth/AclController.php

//ロールの詳細
 public function getView($role_id)
 {
 $role=Role::find($role_id);
 //ユーザーが取得しているパーミッションのリスト
 $lists=$role->permissions->lists('id');
 //全パーミッションから取得済みパーミッションを除外して取得
 $permissions=Permission::whereNotIn('id',$lists)->get();
 return view('acl.view',compact('role','permissions'));
 }

この投稿の続きを読む »

タグ

2015年8月19日 | コメント/トラックバック(0) |

カテゴリー:Laravel

Laravel5で社内専用サイト(6-2)

前回、テーブルとモデルを作成しましたので、本日は、それらのテーブルにデータを入力してみたいと思います。まず最初にAclコントローラを作成します。

ACLコントローラの作成

AclController.phpを作成するために、コマンドプロンプトに下記のように入力します。

php artisan make:controller Auth\AclController

これで、app/Http/Controllers/Authフォルダ内にAclController.phpが生成されます。

ルーターにAclControllerを登録します。

app/Http/routes.php

Route::controller('acl','Auth\AclController');

それでは、まず最初に、AclControllerで使用するモデルをuse演算子で追加します。

この投稿の続きを読む »

タグ

2015年8月18日 | コメント/トラックバック(0) |

カテゴリー:Laravel

Laravel5で社内専用サイト(6-1)

ACL(アクセスコントロールリスト)に関しては、パッケージを使おうと思ったのですが、私の環境が悪いのか、思うように動かないので、勉強がてら、自分で作ってみたいと思います。

ACLの基本設計

ACLを作るに当たり、下記のような基本設計を考えてみました。

  1. 全ユーザーからアクセスできるコントローラには、デフォルトのMiddleware(Authenticate.php)を使用する
  2. アクセス制限するコントローラには、新しいMiddleware(WinAcl.php)を使用する
  3. アクセス許可(permission)は、アクションメソッドごとに作成する
    ※セキュリティの関係で、いったんコントローラごとアクセス制限して、許可するアクションメソッドを登録します。
  4. テーブルは、roles、permissions、permission_roleの3つを追加作成する
    ※role_userテーブルも作成して、userがroleを複数持てるようにする方法もあるが、社内サイトなので、そこまでは必要ないと思い、role_userは今回作成しません。必要になれば、後から作成したいと思います。
  5. usersテーブルに、role_idフィールドを追加する
  6. adminロールは、全てのアクションメソッドにアクセスできるようにする

この投稿の続きを読む »

タグ

2015年8月17日 | コメント/トラックバック(0) |

カテゴリー:Laravel

Laravel5で社内専用サイト(5)

前回は、登録ユーザーの承認(アクティベート)処理を行いましたが、今日は、登録ユーザーがパスワードを忘れた場合の、パスワード再発行処理を作成してみたいと思います。

パスワードの再発行処理は、前回作成した登録ユーザーの承認処理とほとんど同じですので、そんなに難しくないと思います。

  1. ログイン画面のリンクからパスワード再発行用のページへ移動
  2. メールアドレスを入力すれば、登録ユーザー宛に再発行ページのリンクが記載されたメールが届く
  3. 新規パスワードを入力すれば、ログインできる
  4. 例外として、アクティベートされていないユーザーからの再発行申請は、却下します。

この投稿の続きを読む »

タグ

2015年8月13日 | コメント/トラックバック(0) |

カテゴリー:未分類 Laravel

Laravel5で社内専用サイト(4)

前回までは、社内サイトへアクセスするためのユーザー作成とログイン処理を作成しましたが、一般的な会員制のサイトと違い、誰でも登録するわけにはいきません。そこで、社員登録用の処理を下記のように一工夫する必要があります。

  1. ユーザー登録を行ったら、Admin宛てに承認用のメールを送信する。
  2. Adminが送られてきたメールの承認処理を行えば、本人宛に登録処理済みのメールを送信する。
  3. 登録ユーザーは、そこのリンクをクリックすれば、アクティベートされる。
  4. 未承認のデータが蓄積されるのを防ぐために、未承認データは削除します。

ユーザー登録申請

それでは、まず最初にpostCreateメソッドを下記のように修正します。

この投稿の続きを読む »

タグ

2015年8月12日 | コメント/トラックバック(0) |

カテゴリー:Laravel

Laravel5で社内専用サイト(3)

前回は、新規ユーザーの作成までを行いました。本日は、新規作成したユーザーでログインするためのログインフォームを作成したいと思います。

AuthControllerに、下記を追加します。

app/Http/Controllers/Auth/AuthController.php

public function getLogin()
 {
 return view('login');
 }
 
 public function postLogin(Request $request)
 {
 //バリデーション
 $val=$this->validator($request->all());
 if($val->fails()){
 return redirect()->back()->withInput()
 ->withWarning('ユーザー名かパスワードが違います');
 }
 //認証手続き
 Auth::attempt([
 'name'=>$request->name,
 'password'=>$request->password
 ],$request->remember_me);
 return redirect()->to('home/index');
 }

この投稿の続きを読む »

タグ

2015年8月11日 | コメント/トラックバック(0) |

カテゴリー:Laravel

Laravel5で社内専用サイト(2)

社内専用サイトですので、外部からのアクセスを制限しなければなりません。そこで、今日から認証およびアクセス制限のプログラムを作成していきたいと思います。作成するといってもLaravel5には、デフォルトで認証機能が付属しています。その認証機能を使用して作成していきます。

メッセージの日本語化

その前に、コメントやエラーメッセージを日本語化したいと思います。川瀬裕久氏から日本語変換のパッケージを提供していただいていますので、それを使用させていただきたいと思います。

この投稿の続きを読む »

タグ

2015年8月10日 | コメント/トラックバック(0) |

カテゴリー:Laravel

Laravel5で社内専用サイト(1)

今日から、Laravel5で社内専用サイトを少しずつ作成していきたいと思います。以下のような開発環境で作成していきます。

  1. ローカル開発環境(XAMPP)
  2. ローカル環境のエディタ(NetBeans)
  3. 実行環境(レンタルVPSサーバー:CentOS7.0)
  4. 実行環境とのSSH接続(Tera Term)

Laravel5のインストール

実行環境に、Tera Termでアクセスしたら、コマンドプロンプトで下記のように入力します。

この投稿の続きを読む »

タグ

2015年8月6日 | コメント/トラックバック(0) |

カテゴリー:Laravel

このページの先頭へ