complete Complete User Request Submission section RAD-1
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user