我们希望能够做一个功能,这个功能是给admin_user加一个viewself字段,当访问文章管理功能时,如果开启此字段,只展示admin用户自己的文章。
首先我们在数据库中给admin_user添加一个字段
新建一个Model继承Administrator,添加自己的字段
app\Models\CustomAdministrator.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?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的路由器
1 |
$router->resource( 'auth/users', CustomUserController::class ); |
重新访问
http://localhost:8000/admin/auth/users
就可以了
还未完哦!
来到文章管理,我们还要为文章添加控制显示,让开启viewself的用户只能查看自己的文章
来到:app\Admin\Controllers\PostsController.php
1 2 3 4 5 6 7 8 9 10 11 12 |
protected function grid() { $grid = new Grid(new Posts); //获取自己权限下的内容 $username = Admin::user()->viewself; if($username == 1){ $grid->model()->where ('author_id', '=', Admin::user()->id); } //获取自己权限下的内容 |
完成测试一下八