我正在使用 Laravel 4 构建一个博客应用程序,该应用程序有两种类型的用户,即管理员和普通用户。
当用户创建帐户或登录时,所有路线都有“user”前缀,如下所示:
获取用户/帖子= PostsController @ index
对于管理员,他们所有的路由都有“admin”前缀,如下所示:
GET admin / users = UsersController @ index
要以管理员身份查看用户的所有帖子,请执行以下操作:
获取admin / users /($ id)/ posts = PostsController @ index
因此,如果常规用户已登录,那么我会从会话中获取 ID ,但如果用户是管理员,那么我会从网址获取常规用户 ID。
我还必须更新视图中的链接,如下所示:
作为普通用户: link_to(“user / posts / create”,“创建帖子”)
作为管理员: link_to(“admin / users / 1 / posts / create”,“创建帖子”)
这有更好的方法吗?
答案 0 :(得分:0)
是的,所有用户都是用户。
任何要求你成为管理员的东西都应该在路线上有一个过滤器。
例如,如果只允许管理员转到user/posts/delete/{id}
,那么该路线看起来就像......
Route::post('user/posts/delete/{id}', array('before' => 'adminFilter', 'uses' => 'PostController@deletePost');
我不确定您是如何确定用户是管理员还是普通用户,但您的过滤器看起来像......
Route::filter('adminFilter', function()
{
if (!Auth::user()->isAdmin())
{
return Redirect::to('home')->with('message', 'You aren't an admin!');
}
});
您只需在isAdmin()
模型中添加User
函数,该函数描述如何判断用户是否为admin并返回true或false。