123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Filters\AdminUserFilter;
- use App\Http\Requests\AdminUserProfileRequest;
- use App\Http\Requests\AdminUserRequest;
- use App\Http\Resources\AdminUserResource;
- use App\Models\AdminRole;
- use App\Models\AdminUser;
- use App\Utils\Admin;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Log;
- class AdminUserController extends AdminBaseController
- {
- public function user()
- {
- $user = Admin::user();
- return $this->ok(
- AdminUserResource::make($user)
- ->gatherAllPermissions()
- ->onlyRolePermissionSlugs()
- );
- }
- public function areaAdmin()
- {
- $areaAdmin = AdminUser::getAreaAdmin();
- if (count($areaAdmin) !== 0) {
- $data = [];
- foreach ($areaAdmin as $v) {
- $data[] = [
- 'id' => $v->id,
- 'name' => $v->name];
- }
- }
- $administrator = AdminUser::getAAdmin();
- foreach ($administrator as $v) {
- $data[] = [
- 'id' => $v->id,
- 'name' => $v->name];
- }
- return $this->ok($data);
- }
- public function editUser()
- {
- $user = Admin::user();
- $user->load(['roles', 'permissions']);
- return $this->ok(AdminUserResource::make($user));
- }
- public function updateUser(AdminUserProfileRequest $request)
- {
- $inputs = $request->validated();
- Admin::user()->updateUser($inputs);
- return $this->callAction('user', [])->setStatusCode(201);
- }
- public function index(AdminUserFilter $filter)
- {
- $id = Admin::user()->id;
- if (Admin::isAdministrator()) {
- $users = AdminUser::query()
- ->filter($filter)
- ->where('type', AdminUser::TYPE_ADMIN)
- ->with(['roles', 'permissions', 'areas'])
- ->orderByDesc('id')
- ->paginate();
- } elseif (Admin::isNormalAdministrator()) {
- $users = AdminUser::query()
- ->filter($filter)
- ->where('type', AdminUser::TYPE_ADMIN)
- ->where('id', '>', 1)
- ->where('id', '!=', $id)
- ->whereHas('roles', function ($q) {
- $q->where('slug', '!=', AdminRole::ADMINISTROTOR);
- })
- ->with(['roles', 'permissions', 'areas'])
- ->orderByDesc('id')
- ->paginate();
- } else {
- $users = AdminUser::query()
- ->filter($filter)
- ->where('type', AdminUser::TYPE_ADMIN)
- ->whereHas('roles', function ($q) {
- $q->where('slug', '!=', AdminRole::ADMINISTROTOR);
- })
- ->with(['roles', 'permissions', 'areas'])
- ->where('id', '!=', $id)
- ->where('pid', $id)
- ->orderByDesc('id')
- ->paginate();
- }
- return $this->ok(AdminUserResource::collection($users));
- }
- public function store(AdminUserRequest $request, AdminUser $user)
- {
- $id = Admin::user()->id;
- $inputs = $request->validated();
- $inputs['pid'] = $id;
- $user = $user::createUser($inputs);
- if (!empty($q = $request->post('roles', []))) {
- $user->roles()->attach($q);
- }
- if (!empty($q = $request->post('areas', []))) {
- $user->areas()->attach($q);
- }
- if (!empty($q = $request->post('permissions', []))) {
- $user->permissions()->attach($q);
- }
- return $this->created(AdminUserResource::make($user));
- }
- public function show(AdminUser $adminUser)
- {
- $adminUser->load(['roles', 'permissions']);
- return $this->ok(AdminUserResource::make($adminUser));
- }
- public function update(AdminUserRequest $request, AdminUser $adminUser)
- {
- $inputs = $request->validated();
- //Log::info($inputs);
- $adminUser->updateUser($inputs);
- if (isset($inputs['roles'])) {
- $adminUser->roles()->sync($inputs['roles']);
- }
- if (isset($inputs['areas'])) {
- $adminUser->areas()->sync($inputs['areas']);
- }
- if (isset($inputs['permissions'])) {
- $adminUser->permissions()->sync($inputs['permissions']);
- }
- return $this->created(AdminUserResource::make($adminUser));
- }
- public function destroy(AdminUser $adminUser)
- {
- $adminUser->delete();
- return $this->noContent();
- }
- public function edit(AdminUser $adminUser)
- {
- $adminUser->load(['roles', 'permissions', 'areas']);
- return $this->ok(AdminUserResource::make($adminUser)->onlyRolePermissionIds());
- }
- }
|