2017-11-05 14 views
2

私はcodeigniterの背景を持っています。今、私はlaravelについて学んでいます。だから、私はこの状態(例)にいる、私は複数のユーザーがいるwebappを作成しようとしている。ユーザータイプA、メニューa、メニューb &メニューc、ユーザータイプBのみアクセスできます。メニューa。ロールに基づいたLaravelメニュー?

今、私はhttps://github.com/lavary/laravel-menuを使用しています。まあ、それは2つのタイプしかない場合、私はそれを手動で書くことができます。しかし、5種類以上のユーザーがいる場合はどうなりますか?

私はcodeigniterを使用しています。私は4テーブルUsersUsersTypeMenu & MenuAccessを作成します。あなたはそれがどのように働いているのか理解していなけれ私はちょうど、クエリでそれを再生し、私はそれを表示します。

UsersType(ユーザー) - >型ID(UsersType) - > menuID属性(MenuAccess) - > menuID属性(メニュー)

私は既にGoogleを使用して、私はこのhttps://github.com/Zizaco/entrustしかし、私はそのパッケージから見ることができますを発見しました。アクションの許可のみを与える(入力、編集&削除)

私のlaravelで私のcodeigniter方法はできますか? rouotes/web.phpに表示するよりも自分のルートのプロパティを保存してください(可能であれば、私はまだ試していません)。私の英語のために申し訳ありません。

+0

何らかの権限システムが必要なように聞こえるので、例えばユーザAに許可Xがある場合、ウィジェットYを表示します。正しいですか? –

+0

@MatthewDaly yap、それのようなもの。それのためのパッケージはありますか?たぶん私はグーグルで何かを逃した – YVS1102

+0

いくつかの実装がある、またはあなたはそれを自分で簡単に実装することができます。答えでいっぱい説明します。 –

答えて

2

コメントで述べたように、何をしたいが、条件付きでコンテンツを表示する機能であるように聞こえますユーザーに特定のアクセス許可があるかどうかに基づいています。

これにはいくつかの実装があります。基本的にユーザーが行うことができるストアのアクセス許可は、ユーザーに付与できるストアのアクセス許可と、必要に応じて役割に役割を割り当てることができる役割を格納し、その役割をユーザーに与え、その役割に関連付けられたアクセス許可を自動的に付与します。

spatie/laravel-permissionがかなり良いようです。それはあまりにも異なるアクセス許可のために再利用することができることを十分に柔軟であるべきである

@if ($user->can('edit-posts')) 
<a>Edit post</a> 
@endif 

:ビューにあなたのユーザモデルを渡す場合次に、あなたはこのような何かを行うことができます。それでもやってもらわなければ、Laravel's authorization systemを使って独自の許可システムを起動するのは難しくないので、同じ方法でcan()メソッドを使用できるはずです。

+0

私はlaravel 'https:// laravel.com/docs/5.5/authorization'を使うつもりです。 – YVS1102

2

私は、Userクラスにそれ自身のアクセス許可をチェックし、ユーザーがアクセスできるメニューを含むビューを返す関数を配置します。

public function menu() 
{ 
    switch($this->role) { 
     case 'admin': 
      return view('menus.admin'); 
     [etc] 
    } 
} 

は、次にビューにだけユーザーがログインしているかどうかを確認し、メニューを表示:

@if Auth::check() 
    {{ Auth::user->menu() }} 
@endif 
+1

そう、私は多くの '部分的なメニューを作成する必要がありますか? – YVS1102

+0

それは私が推薦するものです。データベースにメニューオプションを保存するのは恐ろしいことです。 –

+1

私はあなたに同意しますが、私は時間がかかるでしょう。 +1 – YVS1102

関連する問題