创建laravel ACL节
我正忙着创建一个部分,超级管理员可以说什么用户可以访问特定的区域。 我遇到的问题是,如果用户无法访问链接,链接就不在那里 例如:我有一个超级管理员用户,该用户可以访问所有内容。因此,将创建一个新用户,该用户称为普通用户,普通用户只能访问可用的组列表,并且只能进行编辑,但不能删除或添加新组 因此,对于这个例子,我需要删除和添加组链接不存在 我有相当多的代码,所以我只提出我认为是相关的。 如果你还有什么需要我帮忙的,请告诉我 这是我的routes.php创建laravel ACL节,laravel,laravel-4,acl,Laravel,Laravel 4,Acl,我正忙着创建一个部分,超级管理员可以说什么用户可以访问特定的区域。 我遇到的问题是,如果用户无法访问链接,链接就不在那里 例如:我有一个超级管理员用户,该用户可以访问所有内容。因此,将创建一个新用户,该用户称为普通用户,普通用户只能访问可用的组列表,并且只能进行编辑,但不能删除或添加新组 因此,对于这个例子,我需要删除和添加组链接不存在 我有相当多的代码,所以我只提出我认为是相关的。 如果你还有什么需要我帮忙的,请告诉我 这是我的routes.php Route::group(["before"
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
]);
}
});
这是我的助手
<?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;
}
}
这是我的组index.blade.php
@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
@扩展(“布局”)
@第节(“内容”)
@如果(计数($组))
名称
@foreach($组作为$组)
{{$group->name}
@endforeach
@否则
没有组。
@恩迪夫
@停止
@节(“页脚”)
@母公司
@停止
是否允许助手中的$route
参数为Laravel route实例?或者仅仅是当前的URL
对于后者,您可以在routes.php中执行类似操作:
if (allowed(Request::url())) {
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
]);
}
});
}
如果您使用的是Laravel4.2,请尝试恢复默认过滤器,它应该可以工作
我也有同样的问题,我相信它来自:
Route::filter('auth', function()
允许的$route是Laravel路由instance@Niks:您只能在完成路由后获取当前路由实例。所以,您要么必须检查URL允许,要么必须手动创建一个Laravel路由实例。
Route::filter('auth', function()