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
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')); |
|
} |
|
}
|
|
|