create new userManagement

This commit is contained in:
2025-10-26 14:14:05 +03:30
parent c76098e879
commit 71f5001477
7 changed files with 158 additions and 174 deletions

View File

@@ -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'