You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
 
 
 
 

49 lines
1.5 KiB

<?php
namespace App\Http\Controllers;
use App\Http\Requests\ProfileUpdateRequest;
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\Str;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Storage;
use Inertia\Inertia;
use Inertia\Response;
class ProfileController extends Controller
{
/**
* 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'),
])->with("user", ((object)Auth::user())->jsonSerialize());
}
/**
* Update the user's profile information.
*/
public function update(ProfileUpdateRequest $request): RedirectResponse
{
$request->validated();
$user = User::find(Auth::user()->id);
$file = 'profiles/'. Str::random(8) . "_" . pathinfo($request->path, PATHINFO_BASENAME);
Storage::disk("s3")->move($request->path, $file);
$user->update([
"name" => $request->name,
"totem" => $request->totem ?? "",
"tel" => $request->tel ?? "",
"contactable" => intval($request->contactable),
"path" => $file ?? "profiles/none.webp",
]);
return redirect(route('profile.edit'));
}
}