Fix 'My Membership' 404 by adding missing profile flow
- Added a 'Create Member Profile' page for existing users who don't have a member record. - Updated MemberDashboardController to redirect to profile creation instead of aborting 404. - Added 'member.profile.create' and 'member.profile.store' routes.
This commit is contained in:
@@ -2,7 +2,10 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Member;
|
||||
use App\Support\AuditLogger;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class MemberDashboardController extends Controller
|
||||
{
|
||||
@@ -12,7 +15,7 @@ class MemberDashboardController extends Controller
|
||||
$member = $user->member;
|
||||
|
||||
if (! $member) {
|
||||
abort(404);
|
||||
return redirect()->route('member.profile.create');
|
||||
}
|
||||
|
||||
$member->load([
|
||||
@@ -31,5 +34,58 @@ class MemberDashboardController extends Controller
|
||||
'pendingPayment' => $pendingPayment,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function createProfile()
|
||||
{
|
||||
$user = Auth::user();
|
||||
if ($user->member) {
|
||||
return redirect()->route('member.dashboard');
|
||||
}
|
||||
return view('member.create-profile');
|
||||
}
|
||||
|
||||
public function storeProfile(Request $request)
|
||||
{
|
||||
$user = Auth::user();
|
||||
if ($user->member) {
|
||||
return redirect()->route('member.dashboard');
|
||||
}
|
||||
|
||||
$validated = $request->validate([
|
||||
'full_name' => ['required', 'string', 'max:255'],
|
||||
'phone' => ['nullable', 'string', 'max:20'],
|
||||
'national_id' => ['nullable', 'string', 'max:20'],
|
||||
'address_line_1' => ['nullable', 'string', 'max:255'],
|
||||
'address_line_2' => ['nullable', 'string', 'max:255'],
|
||||
'city' => ['nullable', 'string', 'max:100'],
|
||||
'postal_code' => ['nullable', 'string', 'max:10'],
|
||||
'emergency_contact_name' => ['nullable', 'string', 'max:255'],
|
||||
'emergency_contact_phone' => ['nullable', 'string', 'max:20'],
|
||||
'terms_accepted' => ['required', 'accepted'],
|
||||
]);
|
||||
|
||||
$member = Member::create([
|
||||
'user_id' => $user->id,
|
||||
'full_name' => $validated['full_name'],
|
||||
'email' => $user->email,
|
||||
'phone' => $validated['phone'] ?? null,
|
||||
'national_id' => $validated['national_id'] ?? null,
|
||||
'address_line_1' => $validated['address_line_1'] ?? null,
|
||||
'address_line_2' => $validated['address_line_2'] ?? null,
|
||||
'city' => $validated['city'] ?? null,
|
||||
'postal_code' => $validated['postal_code'] ?? null,
|
||||
'emergency_contact_name' => $validated['emergency_contact_name'] ?? null,
|
||||
'emergency_contact_phone' => $validated['emergency_contact_phone'] ?? null,
|
||||
'membership_status' => Member::STATUS_PENDING,
|
||||
'membership_type' => Member::TYPE_REGULAR,
|
||||
]);
|
||||
|
||||
AuditLogger::log('member.created_profile', $member, [
|
||||
'user_id' => $user->id,
|
||||
'name' => $member->full_name,
|
||||
]);
|
||||
|
||||
return redirect()->route('member.dashboard')
|
||||
->with('status', __('Profile completed! Please submit your membership payment.'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user