123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Filters\AdminRoleFilter;
- use App\Http\Requests\AdminRoleRequest;
- use App\Http\Resources\AdminRoleResource;
- use App\Models\AdminMerchant;
- use App\Models\AdminRole;
- use App\Utils\Admin;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\Log;
- class AdminRoleController extends Controller
- {
- public function store(AdminRoleRequest $request, AdminRole $model)
- {
- $id = Admin::user()->id;
- $inputs = $request->validated();
- $inputs['admin_id'] = $id;
- if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) {
- $inputs['merchant_id'] = AdminMerchant::getMchId();
- } else {
- $inputs['merchant_id'] = Admin::user()->merchant_id;
- }
- $inputs['slug'] = $inputs['slug'] . '_sh_' . $inputs['merchant_id']; // 拼接上商户id
- $orWhere = ['slug' => $inputs['slug']];
- $data = AdminRole::query()
- ->where('name', $inputs['name'])
- ->where(function ($query) use ($orWhere) {
- $query->orWhere($orWhere);
- })->first();
- if ($data) return $this->error('标识不能重复');
- if (!Admin::user()->isRole(AdminRole::ADMINISTROTOR) and in_array($inputs['slug'], [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN])) {
- // 控制不能添加 技术管理员标识,商户端标识
- return $this->error('添加路由权限不足,请联系服务商');
- }
- $role = $model->create($inputs);
- if (!empty($perms = $inputs['permissions'] ?? [])) {
- $role->permissions()->attach($perms);
- }
- // 添加菜单权限
- if (!empty($vue_routers = $inputs['menu'] ?? [])) {
- $vue_routers = setlist(object_array($vue_routers));
- $role->vue_routers()->attach(array_column($vue_routers, 'id'));
- }
- return $this->created(AdminRoleResource::make($role));
- }
- public function edit(AdminRole $adminRole)
- {
- $adminRole->load(['permissions', 'vue_routers']);
- return $this->ok(AdminRoleResource::make($adminRole));
- }
- public function update(AdminRoleRequest $request, AdminRole $adminRole)
- {
- $inputs = $request->validated();
- //Log::info(json_encode($inputs));
- $adminRole->update($inputs);
- if (isset($inputs['permissions'])) {
- $adminRole->permissions()->sync($inputs['permissions']);
- }
- //更新菜单权限
- if (!empty($inputs['menu'])) {
- $vue_routeres = setlist(object_array($inputs['menu']));
- // Log::info($vue_routeres);
- // $vue_routeres = $inputs['vue_routers'];
- $adminRole->vue_routers()->sync(array_column($vue_routeres, 'id'));
- }
- return $this->created(AdminRoleResource::make($adminRole));
- }
- public function destroy(AdminRole $adminRole)
- {
- $adminRole->delete();
- return $this->noContent();
- }
- // 权限列表 if (Admin::user()->isRole('administrator')) {
- public function index(Request $request, AdminRoleFilter $filter)
- {
- $id = Admin::user()->id;
- $userQuery = $roles = AdminRole::query()->with(['permissions'])->filter($filter);
- // if (Admin::isAdministrator()) {
- if (Admin::user()->isRole(AdminRole::ADMINISTROTOR)) {
- // 技术管理员 不限制权限
- $userQuery->where('admin_id', $id);
- } else if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) {
- //查看当前
- $userQuery->where('merchant_id', AdminMerchant::getMchId());
- $userQuery->whereNotIn('slug', [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN]);
- }
- // else if (Admin::user()->isRole(AdminRole::NORMALADMINISTRATOR)) {
- // //超级管理员
- // $userQuery->where('merchant_id', Admin::user()->merchant_id);
- // $userQuery->whereNotIn('slug', [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN, AdminRole::NORMALADMINISTRATOR]);
- // }
- else {
- $userQuery->where('admin_id', $id);
- }
- $userQuery->orderBy('order');
- $roles = $request->get('all') ? $userQuery->get() : $userQuery->paginate();
- return $this->ok(AdminRoleResource::collection($roles));
- }
- }
|