114 lines
3.4 KiB
PHP
114 lines
3.4 KiB
PHP
<?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);
|
|
}
|
|
|
|
}
|