我们希望能够做一个功能,这个功能是给admin_user加一个viewself字段,当访问文章管理功能时,如果开启此字段,只展示admin用户自己的文章。
首先我们在数据库中给admin_user添加一个字段
新建一个Model继承Administrator,添加自己的字段
app\Models\CustomAdministrator.php
<?php
namespace App\Models;
use Encore\Admin\Auth\Database\Administrator;
class CustomAdministrator extends Administrator
{
public function __construct( array $attributes = [] ) {
parent::__construct( $attributes );
array_push( $this->fillable, 'viewself' );
}
}
新建一个controller 继承 UserController
app\Admin\Controllers\CustomUserController.php
<?php
namespace App\Admin\Controllers;
use Encore\Admin\Controllers\UserController;
class CustomUserController extends UserController {
protected function grid() {
$g = parent::grid();
//$g->column( 'viewself', '只看自己' );
$states = [
'on' => ['text' => 'YES'],
'off' => ['text' => 'NO'],
];
$g->viewself()->switch($states);
return $g;
}
public function form() {
$f = parent::form();
$f->switch( 'viewself','只看自己' );
return $f;
}
}
覆盖原来的adminuser的路由器
$router->resource( 'auth/users', CustomUserController::class );
重新访问
http://localhost:8000/admin/a...
就可以了
还未完哦!
来到文章管理,我们还要为文章添加控制显示,让开启viewself的用户只能查看自己的文章
来到:app\Admin\Controllers\PostsController.php
protected function grid()
{
$grid = new Grid(new Posts);
//获取自己权限下的内容
$username = Admin::user()->viewself;
if($username == 1){
$grid->model()->where ('author_id', '=', Admin::user()->id);
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。