From 71f5001477c3e40c9d9645225b8847e17fc0a767 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 26 Oct 2025 14:14:05 +0330 Subject: [PATCH] create new userManagement --- .../V3/Dashboard/UserManagementController.php | 245 ++++++------------ .../UserManagement/GivePermissionRequest.php | 30 +++ .../UserManagement/GiveRoleRequest.php | 30 +++ .../UserManagement/UpdateRequest.php | 3 +- app/Models/Harim.php | 2 +- app/Models/User.php | 5 +- routes/v3.php | 17 +- 7 files changed, 158 insertions(+), 174 deletions(-) create mode 100644 app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index c4f3474a..49f27396 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers\V3\Dashboard; use App\Http\Controllers\Controller; +use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest; use App\Http\Requests\V3\Dashboard\UserManagement\PermissionUpdateRequest; use App\Http\Requests\V3\Dashboard\UserManagement\StoreRequest; use App\Http\Requests\V3\Dashboard\UserManagement\UpdateRequest; @@ -25,15 +27,8 @@ use Illuminate\Support\Facades\Storage; class UserManagementController extends Controller { use ApiResponse; -// public function index() -// { -// if (Auth::user()->can('full-user-managment') || Auth::user()->can('limited-user-management')) { -// return view('version2.dashboard_pages.user_management.list'); -// } -// -// abort(403); -// } - public function indexUser(Request $request) + + public function index(Request $request) { auth()->user()->addActivityComplete(1038); @@ -88,25 +83,28 @@ class UserManagementController extends Controller public function store(StoreRequest $request): jsonResponse { - auth()->user()->addActivityComplete(1039); + $user = auth()->user(); + + $user ->addActivityComplete(1039); User::query()->create([ - 'username' => $request->username, - 'national_code' => $request->national_code, - 'password' => Hash::make($request->password), - 'province_id' => $request->province_id, - 'edarate_ostani_id' => $request->edarate_ostani_id, - 'city_id' => $request->city_id, - 'edarate_shahri_id' => $request->edarate_shahri_id, + 'username' => $request->username, + 'national_code' => $request->national_code, + 'password' => Hash::make($request->password), + 'province_id' => $request->province_id ?: null, + 'city_id' => $request->city_id ?: null, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'position' => $request->position, + 'mobile' => $request->mobile, + 'degree' => $request->degree, + 'major' => $request->major, ]); - $user = new User(); - $user->username = $request->username; - - $user->province_id = $request->province_id == 0 ? null : $request->province_id; $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - $user->city_id = $request->city_id == 0 ? null : $request->city_id; $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa ; if ($request->edarate_ostani_id != 'null') { @@ -132,8 +130,6 @@ class UserManagementController extends Controller $user->password = Hash::make($request->password); $user->national_code = $request->national_code; - $user->save(); - return $this->successResponse($user); } @@ -141,39 +137,37 @@ class UserManagementController extends Controller public function show(User $user) { $user = User::where('id', $user->id)->with(['roles', 'permissions'])->get(); - return response()->json([ - 'status' => '200', - 'message' => 'success', - 'data' => $user - ], 200); + return $this->successResponse($user); } public function update(UpdateRequest $request, User $user): JsonResponse { + auth()->user()->addActivityComplete(1040); + $user->update([ - 'username' => $request->username, - 'national_code' => $request->national_code, - 'password' => Hash::make($request->password), - 'province_id' => $request->province_id, - 'edarate_ostani_id' => $request->edarate_ostani_id, - 'city_id' => $request->city_id, - 'edarate_shahri_id' => $request->edarate_shahri_id, + 'username' => $request->username, + 'national_code' => $request->national_code, + 'password' => Hash::make($request->password), + 'province_id' => $request->province_id ?: null, + 'city_id' => $request->city_id ?: null, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'position' => $request->position, + 'mobile' => $request->mobile, + 'degree' => $request->degree, + 'major' => $request->major, ]); - $user->province_id = $request->province_id == 0 ? null : $request->province_id; $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - $user->city_id = $request->city_id == 0 ? null : $request->city_id; $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa ; - if ($request->edarate_ostani_id != "null") { + if ($request->edarate_ostani_id != 'null') { $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; $user->edarate_ostani_id = $request->edarate_ostani_id; $user->edarate_ostani_name = $temp; - - $user->edarate_shahri_id = null; - $user->edarate_shahri_name = null; - if ($request->province_id == 0) { $user->name = $temp .' '. $user->province_fa; } else { @@ -183,8 +177,7 @@ class UserManagementController extends Controller $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; $user->edarate_shahri_id = $request->edarate_shahri_id; $user->edarate_shahri_name = $temp; - $user->edarate_ostani_id = null; - $user->edarate_ostani_name = null; + if ($request->province_id == 0) { $user->name = $temp .' '. $user->province_fa; } else { @@ -192,40 +185,58 @@ class UserManagementController extends Controller } } - $user->first_name = $request->first_name; - $user->last_name = $request->last_name; - $user->position = $request->position; - $user->mobile = $request->mobile; - $user->degree = $request->degree; - $user->major = $request->major; - $user->national_code = $request->national_code; - if (!is_null($request->password)) { - $request->validate([ - 'password' => ['string'] - ]); $user->password = Hash::make($request->password); } - if (! $request->permissions == null) { + if (!is_null($request->permissions)) { $user->syncPermissions(explode(",", $request->permissions)); } - $roles = $request->only('roles'); - if (! $roles == null) { - $user->syncRoles($roles); + if ($request->filled('roles')) { + $user->syncRoles($request->roles); } $user->save(); - if (auth()->user()) { - auth()->user()->addActivityComplete(1040, $user); - } + return $this->successResponse($user); + } - return response()->json([ - 'message' => 'success', - 'data' => $user - ]); + public function destroy(User $user) + { + $user->delete(); + return $this->successResponse(); + } + + public function givePermissionsTo(GivePermissionRequest $request,User $user): JsonResponse + { + + $user->givePermissionTo($request->permissions); + + return $this->successResponse($user->load('permissions')); + } + + public function givePermissionsToRole(GivePermissionRequest $request, Role $role): JsonResponse + { + $permissionId = $request->permissions; + $role->syncPermissions($permissionId); + + return $this->successResponse($role->load('permissions')); + } + public function giveRolesToUser(GiveRoleRequest $request, User $user): JsonResponse + { + $roles = $request->roles; + + $user->assignRole($roles); + + return $this->successResponse($user->load('roles')); + } + + public function getUserPermissions(): JsonResponse + { + $userPermissions = Auth::user()->getUserPermissions(); + + return $this->successResponse($userPermissions); } public function activityReport() @@ -254,9 +265,8 @@ class UserManagementController extends Controller User::whereIn('id', $user_ids)->update([ 'confirmed' => $request->confirm ]); - return response()->json([ - 'status' => 'succeed', - ]); + return $this->successResponse(); + } public function changePassword(User $user, Request $request) @@ -266,70 +276,9 @@ class UserManagementController extends Controller ]); $user->password = Hash::make($request->password); $user->save(); - return response()->json(['message' => "password changed successfully!!!!"], 200); + return $this->successResponse(); } - public function givePermissionsTo(Request $request) - { - $request->validate([ - 'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/', - 'permission_ids' => 'required', - ]); - - $user_ids = explode(",", $request->user_ids); - $permission_ids = $request->permission_ids; - - User::whereIn('id', $user_ids)->get()->each(function ($user) use ($permission_ids) { - $user->syncPermissions($permission_ids); - }); - - return response()->json([ - 'status' => 'succeed', - 'message' => 'permissions assigned to users succussfully.' - ]); - } - - public function destroy(Request $request) - { - $request->validate([ - 'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/', - ]); - - $user_ids = explode(',', $request->user_ids); - - foreach ($user_ids as $id) { - $user = User::find($id); - - if ($user->avatar) { - if (Storage::disk('public')->exists(str_replace('storage/', '', $user->avatar))) { - Storage::disk('public')->delete(str_replace('storage/', '', $user->avatar)); - } - } - - if ($user->photo) { - if (Storage::disk('public')->exists(str_replace('storage/', '', $user->photo))) { - Storage::disk('public')->delete(str_replace('storage/', '', $user->photo)); - } - } - - $user->delete(); - } - - return response()->json([ - 'status' => 200, - 'message' => 'The users deleted succussfully.' - ]); - } - - public function getUserPermissions() - { - $userPermissions = Auth::user()->getUserPermissions(); - - return response()->json([ - 'message' => 'success', - 'data' => $userPermissions - ]); - } public function getUserSummaryReport(Request $request, User $user) { @@ -650,43 +599,15 @@ class UserManagementController extends Controller ]); } - public function showAllRoles(Request $request) - { - $roles = Role::where('for_report', 0)->get(); - - return response()->json([ - 'message' => 'success', - 'data' => $roles - ]); - } - - public function deleteRole(Request $request, $id) - { - if (auth()->user()) { - auth()->user()->addActivityComplete(1045); - } - $role = Role::find($id)->delete(); - - return response()->json([ - 'message' => 'success', - 'data' => 1 - ]); - } public function changeUserEnabeld(User $user) { if (Auth::user()->checkUserHasPermission('full-user-management')) { $user->enabled = !$user->enabled; - $user->save(); - return response()->json([ - 'message' => 'success' - ], 200); + return $this->successResponse($user); } elseif (Auth::user()->checkUserHasPermission('limited-user-management') && Auth::user()->province_id == $user->province_id) { $user->enabled = !$user->enabled; - $user->save(); - return response()->json([ - 'message' => 'success' - ], 200); + return $this->successResponse(); } else { return response()->json([ 'message' => 'Forbidden' diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php new file mode 100644 index 00000000..9688af47 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'permissions' => 'array', + 'permissions.*' => 'integer|exists:permissions,id' + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php new file mode 100644 index 00000000..b31b77c9 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'roles' => 'array', + 'roles.*' => 'integer|exists:permissions,id' + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index d831991c..7cf11e76 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\UserManagement; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; @@ -18,7 +19,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Models/Harim.php b/app/Models/Harim.php index 96bc4cc2..8e68d219 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -17,7 +17,7 @@ class Harim extends Model return $this->hasMany(HarimHistory::class); } - protected function polygon(): Attribute + protected function primaryArea(): Attribute { return Attribute::make( get: fn($value) => json_decode($value) diff --git a/app/Models/User.php b/app/Models/User.php index fd7d404d..f640db88 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -26,7 +26,10 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', 'email', 'major', 'password', 'username', 'first_name', 'last_name', 'position', 'mobile', 'province_id', 'city_id', 'confirmed', 'enabled', 'avatar', 'city_fa', 'province_fa', 'degree' + 'name', 'email', 'major', 'password', 'username', 'first_name', 'last_name', 'position', 'mobile', 'province_id', 'city_id', 'confirmed', 'enabled', 'avatar', 'city_fa', 'province_fa', 'degree', + 'national_code', + 'edarate_ostani_id', + 'edarate_shahri_id' ]; /** diff --git a/routes/v3.php b/routes/v3.php index e53bbf69..3e66d40b 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -587,7 +587,14 @@ Route::prefix('user_management') ->controller(UserManagementController::class) ->group(function () { // Route::get('/', 'index')->name('index'); - Route::get('/index_user', 'indexUser')->name('indexUser'); + Route::get('/', 'index')->name('index'); + Route::post('/', 'store')->name('store'); + Route::get('/{user}', 'show')->name('show'); + Route::post('/{user}', 'update')->name('update'); + Route::delete('/{user}', 'destroy')->name('destroy'); + Route::post('/give_permissions_to', 'givePermissionsTo')->name('givePermissionsTo'); + Route::post('/give_permissions_to_role', 'givePermissionsToRole')->name('givePermissionsToRole'); + Route::post('/give_roles_to_user','giveRolesToUser')->name('giveRolesToUser'); Route::get('/activity_report', 'activityReport')->name('activityReport'); Route::get('/userActivityLogs', 'userActivityLogs')->name('userActivityLogs'); Route::post('/change_confirmed_status', 'changeConfirmedStatus')->name('changeConfirmedStatus'); @@ -597,16 +604,8 @@ Route::prefix('user_management') Route::get('/print_group', 'printGroup')->name('printGroup'); Route::get('/user_permission', 'userPermission')->name('userPermission'); Route::get('/assign_permission', 'assignPermission')->name('assignPermission'); - Route::get('/show_all_roles', 'showAllRoles')->name('showAllRoles'); Route::post('/change_user_enabeld','changeUserEnabeld')->name('changeUserEnabeld'); - Route::post('/','store')->name('store'); - Route::post('/create_role','createRole')->name('createRole'); - Route::post('/edit_role','editRole')->name('editRole'); - Route::get('/{user}', 'show')->name('show'); - Route::post('/{user}', 'update')->name('update'); - Route::delete('/{user}', 'destroy')->name('destroy'); Route::post('/change_password/{user}', 'changePassword')->name('changePassword'); - Route::post('delete-role/{id}', 'deleteRole')->name('deleteRole'); }); Route::prefix('role') ->name('role.')