2016-08-11 3 views
0

설명서를 읽었을 때 내가해야 할 일에 대해 많이 알게되었습니다. 이 패키지를 설치했습니다. CentaurLaravel의 센티넬 사용

본질적으로 Sentinel의 확장이므로, 동일한 방식으로 작동해야합니다. 설치 및 설정이 완료되면 사용자와 역할을 만들 수 있습니다. 이것은 괜찮습니다. 그래서 내 레이아웃보기에서 클라이언트 인덱스 페이지에 대한 링크를 제공합니다. 모든 사람들이 이것을보고 모든 체크를하지 않기를 바랍니다.

<li class="{{ Request::is('clients*') ? 'active' : '' }}"><a href="{{ route('clients.index') }}">Clients</a></li> 

사용자 및 역할 컨트롤러를 보면 사용 권한을 명시한 ClientsController에 생성자가 필요하다고 가정했습니다. 이것은 내가 가진 것입니다.

public function __construct(AuthManager $authManager) 
{ 
    // Middleware 
    $this->middleware('sentinel.auth'); 
    $this->middleware('sentinel.access:users.view', ['only' => ['index', 'show']]); 
    $this->middleware('sentinel.role:administrator'); 

    // Dependency Injection 
    $this->roleRepository = app()->make('sentinel.roles'); 
    $this->authManager = $authManager; 
} 

달성하려는 것은 사용자가 클라이언트 만 볼 수 있도록하는 것이며 관리자는이를 업데이트 할 수 있습니다. 내 편집 역할보기 내에서 확인란을 추가했습니다.

<div class="checkbox"> 
    <label> 
     <input type="checkbox" name="permissions[clients.update]" value="1" {{ $role->hasAccess('clients.update') ? 'checked' : '' }}> 
     clients.update 
    </label> 
</div> 
<div class="checkbox"> 
    <label> 
     <input type="checkbox" name="permissions[clients.view]" value="1" {{ $role->hasAccess('clients.view') ? 'checked' : '' }}> 
     clients.view 
    </label> 
</div> 

관리자가 클라이언트를보고 업데이트 할 수 있습니다. 나는 일반 사용자로 시스템에 로그인 할 때 그러나, 나는 센티넬 새로운 모델을 만들 그래서 때 내가

Error: You do not have permission to do that. 

를 참조 클라이언트 링크를 클릭하면 확실히 사용자/역할 권한을 부여하는 과정은 무엇인가 행위?

감사합니다 다음

답변

1

먼저 create the role, attach the role to the user. 제공된 링크에서

그래서 빠른 예 : 귀하의 경우

$role = Sentinel::getRoleRepository()->createModel()->create([ 
    'name' => 'Subscribers', 
    'slug' => 'subscribers', 
]); 

$user = Sentinel::findById(1); 

// use this for lookup where you don't already have a role handy 
$role = Sentinel::findRoleByName('Subscribers'); 

$role->users()->attach($user); 

, 아마도 다음과 같은 역할 권한 같은 :

$role->permissions = [ 
    "admin.view" => true, 
    "admin.update" => true 
    "user.view" => true, 
    "user.update" => false 
]; 
$role->save(); 

다음 확인 권한과 한 가지의 사용자 유형 ... 이것은 관리자를 업데이트하려는 관리자의 예입니다.

if (Sentinel::inRole('admin') and $user->hasAccess(['admin.update']) { 
    // 
} 

오랫동안 Sentinel을 사용하지 않으면 inRole 검사를 생략 할 수 있습니다.

+0

해당 부분을 이해합니다. 내 문제는 이것입니다. 나는 두 가지 역할을한다. 관리자 및 사용자. 각 역할에 사용자를 할당했습니다. 이것은 종자 파일 내에서 일을 설정할 때 수행되었습니다. 나는 이제 새로운 모델, 클라이언트를 가지고있다. 어떻게 든 관리자 만 클라이언트를 업데이트 할 수 있으며 사용자는 볼 수만 있다고 명시해야합니다. 우리는 이것을 어떻게 처리 할 것인가? –

관련 문제