Initial commit
This commit is contained in:
100
app/Http/Controllers/ProfileController.php
Normal file
100
app/Http/Controllers/ProfileController.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Requests\ProfileUpdateRequest;
|
||||
use App\Models\Member;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Redirect;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\View\View;
|
||||
|
||||
class ProfileController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display the user's profile form.
|
||||
*/
|
||||
public function edit(Request $request): View
|
||||
{
|
||||
return view('profile.edit', [
|
||||
'user' => $request->user(),
|
||||
'member' => $request->user()->member,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the user's profile information.
|
||||
*/
|
||||
public function update(ProfileUpdateRequest $request): RedirectResponse
|
||||
{
|
||||
$validated = $request->validated();
|
||||
|
||||
$request->user()->fill($validated);
|
||||
|
||||
if ($request->hasFile('profile_photo')) {
|
||||
$path = $request->file('profile_photo')->store('profile-photos', 'public');
|
||||
|
||||
if ($request->user()->profile_photo_path) {
|
||||
Storage::disk('public')->delete($request->user()->profile_photo_path);
|
||||
}
|
||||
|
||||
$request->user()->profile_photo_path = $path;
|
||||
}
|
||||
|
||||
if ($request->user()->isDirty('email')) {
|
||||
$request->user()->email_verified_at = null;
|
||||
}
|
||||
|
||||
$request->user()->save();
|
||||
|
||||
$memberFields = [
|
||||
'phone',
|
||||
'address_line_1',
|
||||
'address_line_2',
|
||||
'city',
|
||||
'postal_code',
|
||||
'emergency_contact_name',
|
||||
'emergency_contact_phone',
|
||||
];
|
||||
|
||||
$memberData = collect($validated)
|
||||
->only($memberFields)
|
||||
->filter(function ($value, $key) {
|
||||
return true;
|
||||
});
|
||||
|
||||
if ($memberData->isNotEmpty()) {
|
||||
$member = $request->user()->member;
|
||||
|
||||
if ($member) {
|
||||
$member->fill($memberData->all());
|
||||
$member->save();
|
||||
}
|
||||
}
|
||||
|
||||
return Redirect::route('profile.edit')->with('status', 'profile-updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the user's account.
|
||||
*/
|
||||
public function destroy(Request $request): RedirectResponse
|
||||
{
|
||||
$request->validateWithBag('userDeletion', [
|
||||
'password' => ['required', 'current_password'],
|
||||
]);
|
||||
|
||||
$user = $request->user();
|
||||
|
||||
Auth::logout();
|
||||
|
||||
$user->delete();
|
||||
|
||||
$request->session()->invalidate();
|
||||
$request->session()->regenerateToken();
|
||||
|
||||
return Redirect::to('/');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user