/
alexey92
/
test
Обзор
Документация
Войти
/
alexey92
/
test
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/Http/Controllers/ProfileController.php
189 строк
6 KB
alexeylavrentev
new test
07 ноя 2024, 14:33
07 ноя 2024, 14:33
8de66b9
Код
Авторство
О чём код?
<?php namespace App\Http\Controllers; use App\Http\Requests\ProfileUpdateRequest; use App\Models\Post; use App\Models\User; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Redirect; use Illuminate\Support\Facades\Validator; use Inertia\Inertia; use Inertia\Response; class ProfileController extends Controller { public function index(Request $request, $id) { // Проверка существования пользователя $user = User::findOrFail($id); $posts = $user->posts()->with(['user', 'photos'])->orderByDesc('created_at')->take(15)->get(); return Inertia::render('Profile/Profile', [ 'user' => $user, 'posts' => $posts, ]); } public function getPosts(Request $request, $id) { $user = User::findOrFail($id); if (!$user) { abort(404, 'Пользователь не найден'); } $posts = $user->posts()->with(['user', 'photos'])->orderByDesc('created_at')->paginate(10); return response()->json([ 'posts' => [ 'data' => $posts->items(), 'current_page' => $posts->currentPage(), 'last_page' => $posts->lastPage(), ], ]); } /** * Display the user's profile form. */ public function edit(Request $request): Response { return Inertia::render('Profile/Edit', [ 'mustVerifyEmail' => $request->user() instanceof MustVerifyEmail, 'status' => session('status'), ]); } /** * Update the user's profile information. */ public function update(ProfileUpdateRequest $request): RedirectResponse { $request->user()->fill($request->validated()); if ($request->user()->isDirty('email')) { $request->user()->email_verified_at = null; } $request->user()->save(); return Redirect::route('profile.edit'); } public function contactUpdate(Request $request) { $user = auth()->user(); $input = $request->only('phone_number', 'vk_link'); Validator::make($input, [ 'phone_number' => ['nullable', 'string', 'max:255'], 'vk_link' => ['nullable', 'string', 'max:255'], ]); $user->forceFill([ 'phone_number' => $input['phone_number'] ?? $user->phone_number, 'vk_link' => $input['vk_link'] ?? $user->vk_link, ])->save(); } public function paymentUpdate(Request $request) { $user = auth()->user(); $input = $request->only('sbp_number'); Validator::make($input, [ 'sbp_number' => ['nullable', 'string', 'max:255'], ]); $user->forceFill([ 'sbp_number' => $input['sbp_number'] ?? $user->sbp_number, ])->save(); } public function uploadCover(Request $request) { // Указываем путь к папке, где будут сохраняться изображения $folderPath = public_path('/storage/cover/'); // Разделяем кодировку изображения и само изображение $imageParts = explode(";base64,", $request->image); $imageTypeAux = explode("image/", $imageParts[0]); $imageType = $imageTypeAux[1]; $imageBase64 = base64_decode($imageParts[1]); // Генерируем уникальное имя для изображения $imageName = uniqid() . '.jpeg'; // Создаем полный путь до изображения $imageFullPath = $folderPath . $imageName; // Сохраняем изображение на сервере file_put_contents($imageFullPath, $imageBase64); // Обновляем поле профильной обложки у текущего пользователя $user = auth()->user(); $user->cover_photo = '/storage/cover/' . $imageName; $user->save(); // Возвращаем JSON-ответ с сообщением об успешном сохранении/загрузке изображения return back(); } public function uploadAva(Request $request) { // Указываем путь к папке, где будут сохраняться изображения $folderPath = public_path('/storage/avatars/'); // Разделяем кодировку изображения и само изображение $imageParts = explode(";base64,", $request->image); $imageTypeAux = explode("image/", $imageParts[0]); $imageType = $imageTypeAux[1]; $imageBase64 = base64_decode($imageParts[1]); // Генерируем уникальное имя для изображения $imageName = uniqid() . '.jpeg'; // Создаем полный путь до изображения $imageFullPath = $folderPath . $imageName; // Сохраняем изображение на сервере file_put_contents($imageFullPath, $imageBase64); // Обновляем поле профильной обложки у текущего пользователя $user = auth()->user(); $user->avatar = '/storage/avatars/' . $imageName; $user->save(); // Возвращаем JSON-ответ с сообщением об успешном сохранении/загрузке изображения return back(); } /** * Delete the user's account. */ public function destroy(Request $request): RedirectResponse { $request->validate([ 'password' => ['required', 'current_password'], ]); $user = $request->user(); Auth::logout(); $user->delete(); $request->session()->invalidate(); $request->session()->regenerateToken(); return Redirect::to('/'); } }