complete Complete User Request Submission section RAD-1

This commit is contained in:
2026-01-03 19:14:30 +03:30
commit 7137ec5792
393 changed files with 152602 additions and 0 deletions
@@ -0,0 +1,113 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\SettingProfileRequest;
use App\Http\Resources\Admin\SessionsIndexResource;
use App\Models\Medium;
use App\Models\Session;
use App\Models\User;
use App\Services\FileStorageService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Inertia\Inertia;
class SettingUserController extends Controller
{
protected FileStorageService $fileStorageService;
public function __construct(FileStorageService $fileStorageService)
{
$this->fileStorageService = $fileStorageService;
}
public function profile()
{
return Inertia::admin('Settings/User/Profile', []);
}
public function updateData(SettingProfileRequest $request , User $user)
{
if (Auth::id() !== $request->route('user')->id) {
abort(403);
}
$user->update($request->validated());
return response($user, 200);
}
public function uploadAvatar(Request $request){
$request->validate([
'file' => 'required|mimes:png,jpg,jpeg,gif|max:10240'
]);
$user = Auth::user();
if (!empty($user->profile_url)) {
if ($file = Medium::where('url', $user->profile_url)->first()) {
$this->fileStorageService->deleteMedium($file);
}
}
$file = $request->file('file');
$fileRecord = $this->fileStorageService->storeFile($file, 'public', 'profile');
$user->update(['profile_url' => $fileRecord->url]);
return response(['profile_url' => $fileRecord->url], 200);
}
public function security()
{
return Inertia::admin('Settings/User/Security', []);
}
public function sessions()
{
$userSessions = Session::where('user_id', Auth::id())->get();
$sessions = SessionsIndexResource::collection($userSessions)->toArray(request());
return Inertia::admin('Settings/User/Sessions', compact('sessions'));
}
public function deleteSession(Session $session){
$state = Session::where([
'id' => $session->id,
'user_id' => Auth::id(),
])->delete();
if ($state){
session()->flash('success', 'نشست مورد نظر حذف شد');
return response(null, 200);
}else{
session()->flash('error', 'نشست مورد نظر یافت نشد!');
return response(null, 400);
}
}
public function bulkDelete(Request $request)
{
Session::whereIn('id', $request->ids)->delete();
session()->flash('success', 'نشست های مورد نظر با موفقیت حذف شدند.');
return response(null, 200);
}
public function changePassword(Request $request)
{
$fields = $request->validate([
'password' => 'required|min:8',
'newPassword' => 'required|min:8|confirmed',
]);
$user = Auth::user();
if (!Hash::check($fields['password'], $user->password)){
return response()->json([
'message' => 'پسورد فعلی نادرست است'
], 401);
}
$user->update([
'password' => Hash::make($fields['newPassword']),
]);
session()->flash('success', 'تغییر کلمه عبور با موفقیت انجام شد.');
return response(null, 200);
}
}