슈퍼 유저가 특정 영역에 액세스 할 수있는 영역을 말할 수있는 섹션을 만드는 중입니다. 사용자가 액세스 할 수없는 경우 링크가 표시되지 않는 문제가 있습니다.laravel ACL 섹션 만들기
예를 들어 : 최고 관리자이며 그 사용자가 모든 것을 액세스 할 수있는 사용자가 있습니다. 따라서 새 사용자가 생성되고 사용자는 일반 사용자라고하며 일반 사용자는 사용 가능하고 편집 만 할 수있는 그룹 목록에만 액세스 할 수 있지만 새 그룹을 삭제하거나 추가 할 수는 없습니다.
이 예에서는 삭제하고 그룹 링크를 추가하지 않아도됩니다.
코드가 상당히 많아서 관련성이 있다고 생각하는 부분을 넣었습니다. 다른 것을 올려 주시면 알려주세요.
이
이이이이 index.blade.php 내 그룹 내 필터Route::filter("auth", function() {
if (Auth::guest()) {
return Redirect::route("user/login");
} else {
foreach (Auth::user()->groups as $group) {
foreach ($group->resources as $resource) {
$current = Route::currentRouteName();
if ($resource->name === $current) {
return;
}
}
}
return Redirect::route("user/login");
}
});
Route::filter("auth.basic", function() {
return Auth::basic();
});
내 도우미
<?php
if (!function_exists("allowed"))
{
function allowed($route)
{
if (Auth::check())
{
foreach (Auth::user()->groups as $group)
{
foreach ($group->resources as $resource)
{
if ($resource->name == $route)
{
return true;
}
}
}
}
return false;
}
}
내 routes.php
Route::group(["before" => "guest"], function() {
$resources = Resource::where("secure", "=", false)->get();
foreach ($resources as $resource) {
Route::any($resource->pattern, [
"as" => $resource->name,
"uses" => $resource->target
]);
}
});
Route::group(["before" => "auth"], function() {
$resources = Resource::where("secure", "=", true)->get();
foreach ($resources as $resource) {
Route::any($resource->pattern, [
"as" => $resource->name,
"uses" => $resource->target
]);
}
});
입니다
@extends("layout")
@section("content")
@if(count($groups))
<table>
<tr>
<th>name</th>
<th> </th>
</tr>
@foreach($groups as $group)
<tr>
<td>
{{ $group->name }}
</td>
<td>
<a href="{{ URL::route("group/edit") }}?id={{ $group->id }}">edit</a>
<a href="{{ URL::route("group/delete") }}?id={{ $group->id }}" class="confirm" data-confirm="Are you sure you want to delete this group?">delete</a>
</td>
</tr>
@endforeach
</table>
@else
<p>There are no groups.</p>
@endif
<a href="{{ URL::route("group/add") }}">add group</a>
@stop
@section("footer")
@parent
<script src="/js/jquery.js"></script>
<script src="/js/layout.js"></script>
@stop
허용에 $ 경로가 Laravel 루트 인스턴스 – Niks
@Niks은 다음과 같습니다 : 저도 같은 문제에 봉착
는 & 난에서 그것의 생각 라우팅이되면 당신은 현재 경로의 인스턴스를 얻을 수 있습니다 이미 함. 따라서 URL에 허용 된 경로를 확인하거나 Laravel 경로 인스턴스를 수동으로 만들어야합니다. – mauvm