这个简单的功能不需要数据库表
roles
,也不需要使用
ACL。你只需添加额外的
tinyInteger
类型的
status
列,并为其添加数字,例如:
将以下代码添加到你的
User.php
中即可使其生效。
public function isDisabled ()
{
return $this->statusCheck();
}
public function isVisitor ()
{
return $this->statusCheck(1);
}
public function isAdmin ()
{
return $this->statusCheck(2);
}
protected function statusCheck ($status = 0)
{
return $this->status === $status ? true : false;
}
如果要在 blade
模板中进行检查,可以添加以下内容:
@if(Auth::user()->isDisabled())
You are not Active
@elseif(Auth::user()->isVisitor())
Welcome to example.com
@elseif(Auth::user()->isAdmin())
Welcome Admin
@endif
此外,您可以创建 Blade 自定义指令,将此代码粘贴到
app/providers/AppServiceProvider.php
的
boot()
方法中。
Blade::directive('isAdmin', function() {
return "<?php if(Auth::user()->isAdmin()): ?>";
});
Blade::directive('endisAdmin', function() {
return "<?php endif; ?>";
});
Blade::directive('isVisitor', function() {
return "<?php if(Auth::user()->isVisitor()): ?>";
});
Blade::directive('endisVisitor', function() {
return "<?php endif; ?>";
});
Blade::directive('isDisabled', function() {
return "<?php if(Auth::user()->isDisabled()): ?>";
});
Blade::directive('endisDisabled', function() {
return "<?php endif; ?>";
});
要调用此功能,您需要在
Blade视图
中编写以下代码:
@isAdmin()
Welcome Admin
@endisAdmin
@isVisitor()
Welcome to example.com
@endisVisitor
@isDisabled()
Your are not active
@endisDisabled
简单来说, Laravel 提供了多种解决问题的方法,它只取决于你的需求和应用程序结构。