generated from panliang/owl-admin-starter
party_cate permission
parent
f88128a370
commit
6938324dd6
|
|
@ -6,5 +6,11 @@ use Slowlyo\OwlAdmin\Controllers\AuthController as AdminAuthController;
|
|||
|
||||
class AuthController extends AdminAuthController
|
||||
{
|
||||
public function logout(): \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
|
||||
{
|
||||
Cache::forget('parte_cate_id_permission');
|
||||
$this->guard()->user()->currentAccessToken()->delete();
|
||||
|
||||
return $this->response()->successMessage();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,12 +34,7 @@ class PartyCateController extends AdminController
|
|||
|
||||
public function index()
|
||||
{
|
||||
$user = Admin::user();
|
||||
// 判断当前账户拥有的支部权限
|
||||
if (!$user->can('party_cate_all')) {
|
||||
$permissions = $user->allPermissions()->where(fn ($item) => Str::startsWith($item->slug, 'party_cate_') && $item->http_method)->pluck('http_method')->all();
|
||||
request()->offsetSet('ids', $permissions);
|
||||
}
|
||||
request()->offsetSet('ids', $this->service->catePermissions());
|
||||
if ($this->actionOfGetData()) {
|
||||
return $this->response()->success($this->service->list());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Admin\Services\PartyUserService;
|
||||
use App\Admin\Services\{PartyUserService, PartyCateService};
|
||||
use App\Models\PartyCate;
|
||||
use Slowlyo\OwlAdmin\Controllers\AdminController;
|
||||
use Slowlyo\OwlAdmin\Renderers\Form;
|
||||
|
|
@ -17,6 +17,23 @@ class PartyUserController extends AdminController
|
|||
|
||||
protected $cateOptions;
|
||||
|
||||
public function index()
|
||||
{
|
||||
if (!request()->filled('cate_id')) {
|
||||
$cateIds = PartyCateService::make()->catePermissions();
|
||||
request()->offsetSet('cate_id', $cateIds);
|
||||
}
|
||||
if ($this->actionOfGetData()) {
|
||||
return $this->response()->success($this->service->list());
|
||||
}
|
||||
|
||||
if ($this->actionOfExport()) {
|
||||
return $this->export();
|
||||
}
|
||||
|
||||
return $this->response()->success($this->list());
|
||||
}
|
||||
|
||||
public function list(): Page
|
||||
{
|
||||
$crud = $this->baseCRUD()
|
||||
|
|
@ -79,7 +96,8 @@ class PartyUserController extends AdminController
|
|||
public function getCateOptions()
|
||||
{
|
||||
if (!$this->cateOptions) {
|
||||
$this->cateOptions = PartyCate::select(['id as value', 'name as label'])->get();
|
||||
$cateIds = PartyCateService::make()->catePermissions();
|
||||
$this->cateOptions = PartyCate::select(['id as value', 'name as label'])->filter(['ids' => $cateIds])->get();
|
||||
}
|
||||
|
||||
return $this->cateOptions;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Admin\Services\UserScoreService;
|
||||
use App\Admin\Services\{UserScoreService, PartyCateService};
|
||||
use App\Enums\CheckStatus;
|
||||
use App\Exceptions\BaseException;
|
||||
use App\Models\PartyUser;
|
||||
|
|
@ -23,6 +23,23 @@ class UserScoreController extends AdminController
|
|||
|
||||
protected $cateOptions;
|
||||
|
||||
public function index()
|
||||
{
|
||||
if (!request()->filled('cate_id')) {
|
||||
$cateIds = PartyCateService::make()->catePermissions();
|
||||
request()->offsetSet('cate_id', $cateIds);
|
||||
}
|
||||
if ($this->actionOfGetData()) {
|
||||
return $this->response()->success($this->service->list());
|
||||
}
|
||||
|
||||
if ($this->actionOfExport()) {
|
||||
return $this->export();
|
||||
}
|
||||
|
||||
return $this->response()->success($this->list());
|
||||
}
|
||||
|
||||
public function list(): Page
|
||||
{
|
||||
$crud = $this->baseCRUD()
|
||||
|
|
@ -154,7 +171,8 @@ class UserScoreController extends AdminController
|
|||
public function getUserOptions()
|
||||
{
|
||||
if (!$this->userOptions) {
|
||||
$this->userOptions = PartyUser::select(['id as value', 'name as label'])->get();
|
||||
$cateIds = PartyCateService::make()->catePermissions();
|
||||
$this->userOptions = PartyUser::select(['id as value', 'name as label'])->filter(['cate' => $cateIds])->get();
|
||||
}
|
||||
|
||||
return $this->userOptions;
|
||||
|
|
@ -163,7 +181,8 @@ class UserScoreController extends AdminController
|
|||
public function getCateOptions()
|
||||
{
|
||||
if (!$this->cateOptions) {
|
||||
$this->cateOptions = PartyCate::select(['id as value', 'name as label'])->get();
|
||||
$cateIds = PartyCateService::make()->catePermissions();
|
||||
$this->cateOptions = PartyCate::select(['id as value', 'name as label'])->filter(['ids' => $cateIds])->get();
|
||||
}
|
||||
|
||||
return $this->cateOptions;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@ use App\Models\UserRank;
|
|||
use App\Models\UserScore;
|
||||
use Slowlyo\OwlAdmin\Models\AdminPermission;
|
||||
use Slowlyo\OwlAdmin\Services\AdminPermissionService;
|
||||
use Slowlyo\OwlAdmin\Admin;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
class PartyCateService extends BaseService
|
||||
{
|
||||
|
|
@ -31,17 +34,42 @@ class PartyCateService extends BaseService
|
|||
|
||||
$info = $this->modelName::create($data);
|
||||
|
||||
// 创建权限
|
||||
$parent = AdminPermission::firstOrCreate(['slug' => 'party_cate'], ['name' => '党支部']);
|
||||
$this->createPermission($info);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建权限
|
||||
*/
|
||||
public function createPermission(PartyCate $info)
|
||||
{
|
||||
$parent = AdminPermission::firstOrCreate(['slug' => 'party_cate_list'], ['name' => '党支部']);
|
||||
AdminPermissionService::make()->store([
|
||||
'slug' => 'party_cate_' . $info->id,
|
||||
'name' => $info->name,
|
||||
'parent_id' => $parent->id,
|
||||
'order' => 1,
|
||||
'order' => 2,
|
||||
'http_method' => $info->id,
|
||||
]);
|
||||
}
|
||||
|
||||
return true;
|
||||
/**
|
||||
* 当前用户拥有的支部权限 id
|
||||
*
|
||||
* @return array null: 全部权限, []: 支部id
|
||||
*/
|
||||
public function catePermissions()
|
||||
{
|
||||
$user = Admin::user();
|
||||
// 判断当前账户拥有的支部权限
|
||||
if ($user->can('party_cate_all')) {
|
||||
return null;
|
||||
}
|
||||
$permissions = Cache::get('parte_cate_id_permission', function () use ($user) {
|
||||
return $user->allPermissions()->where(fn ($item) => Str::startsWith($item->slug, 'party_cate_') && $item->http_method)->pluck('http_method')->all();
|
||||
});
|
||||
return $permissions;
|
||||
}
|
||||
|
||||
public function preDelete(array $ids)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ Route::group([
|
|||
|
||||
$router->get('login', [App\Admin\Controllers\AuthController::class, 'loginPage']);
|
||||
|
||||
$router->get('logout', [App\Admin\Controllers\AuthController::class, 'logout']);
|
||||
|
||||
$router->resource('system/settings', \App\Admin\Controllers\SettingController::class);
|
||||
|
||||
$router->resource('system/admin_roles', \App\Admin\Controllers\AdminRoleController::class);
|
||||
|
|
|
|||
|
|
@ -21,6 +21,6 @@ class PartyUserFilter extends ModelFilter
|
|||
|
||||
public function cate($id)
|
||||
{
|
||||
$this->where('cate_id', $id);
|
||||
$this->whereIn('cate_id', is_array($id) ? $id : explode(',', $id));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ class UserScoreFilter extends ModelFilter
|
|||
|
||||
public function cate($id)
|
||||
{
|
||||
$this->where('cate_id', $id);
|
||||
$this->whereIn('cate_id', is_array($id) ? $id : explode(',', $id));
|
||||
}
|
||||
|
||||
public function checkStatus($id)
|
||||
|
|
|
|||
|
|
@ -5,13 +5,14 @@ namespace App\Models;
|
|||
use Illuminate\Database\Eloquent\Model;
|
||||
use App\Traits\HasDateTimeFormatter;
|
||||
use EloquentFilter\Filterable;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
/**
|
||||
* 党支部
|
||||
*/
|
||||
class PartyCate extends Model
|
||||
{
|
||||
use HasDateTimeFormatter, Filterable;
|
||||
use HasDateTimeFormatter, Filterable, HasFactory;
|
||||
|
||||
protected $fillable = ['name', 'master_id', 'plan_id', 'remarks', 'current_score', 'score', 'scores'];
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ namespace Database\Factories;
|
|||
|
||||
use App\Models\PartyCate;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use App\Admin\Services\PartyCateService;
|
||||
|
||||
/**
|
||||
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\PartyCate>
|
||||
|
|
@ -24,4 +25,11 @@ class PartyCateFactory extends Factory
|
|||
'name' => $faker->streetName,
|
||||
];
|
||||
}
|
||||
|
||||
public function configure(): static
|
||||
{
|
||||
return $this->afterCreating(function (PartyCate $cate) {
|
||||
PartyCateService::make()->createPermission($cate);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class PartyUserSeeder extends Seeder
|
|||
{
|
||||
PartyCate::truncate();
|
||||
PartyUser::truncate();
|
||||
(new PartyCateFactory())->count(20)->create();
|
||||
PartyCate::factory()->count(20)->create();
|
||||
(new PartyUserFactory())->count(100)->create([
|
||||
'scores' => [
|
||||
'score_cate_1' => 0,
|
||||
|
|
|
|||
|
|
@ -19,9 +19,7 @@ class PermissionSeeder extends Seeder
|
|||
DB::table('admin_role_permissions')->truncate();
|
||||
$list = [
|
||||
['name' => '主页', 'slug' => 'dashboard'],
|
||||
['name' => '支部管理', 'slug' => 'party_cate', 'children' => [
|
||||
['name' => '全部', 'slug' => 'party_cate_all'],
|
||||
]],
|
||||
['name' => '支部管理', 'slug' => 'party_cate'],
|
||||
['name' => '党员管理', 'slug' => 'party_user'],
|
||||
['name' => '审核评定', 'slug' => 'user_score'],
|
||||
['name' => '信息管理', 'slug' => 'article'],
|
||||
|
|
@ -37,6 +35,9 @@ class PermissionSeeder extends Seeder
|
|||
['name' => '字典管理', 'slug' => 'keyword'],
|
||||
// ['name' => '配置管理', 'slug' => 'admin_setting'],
|
||||
]],
|
||||
['name' => '支部权限', 'slug' => 'party_cate_list', 'children' => [
|
||||
['name' => '全部', 'slug' => 'party_cate_all'],
|
||||
]],
|
||||
];
|
||||
|
||||
$this->createByTree($list);
|
||||
|
|
|
|||
Loading…
Reference in New Issue