99 lines
2.3 KiB
Markdown
99 lines
2.3 KiB
Markdown
# Story 7.4: My Profile View
|
|
|
|
## Epic Reference
|
|
**Epic 7:** Client Dashboard
|
|
|
|
## User Story
|
|
As a **client**,
|
|
I want **to view my profile information**,
|
|
So that **I can verify my account details are correct**.
|
|
|
|
## Acceptance Criteria
|
|
|
|
### Individual Client Profile
|
|
- [ ] Full name
|
|
- [ ] National ID
|
|
- [ ] Email address
|
|
- [ ] Phone number
|
|
- [ ] Preferred language
|
|
- [ ] Account created date
|
|
|
|
### Company Client Profile
|
|
- [ ] Company name
|
|
- [ ] Registration number
|
|
- [ ] Contact person name
|
|
- [ ] Contact person ID
|
|
- [ ] Email address
|
|
- [ ] Phone number
|
|
- [ ] Preferred language
|
|
- [ ] Account created date
|
|
|
|
### Features
|
|
- [ ] Account type indicator
|
|
- [ ] No edit capabilities (read-only)
|
|
- [ ] Message: "Contact admin to update your information"
|
|
- [ ] Logout button
|
|
|
|
## Technical Notes
|
|
|
|
```php
|
|
new class extends Component {
|
|
public function with(): array
|
|
{
|
|
return [
|
|
'user' => auth()->user(),
|
|
];
|
|
}
|
|
|
|
public function logout(): void
|
|
{
|
|
auth()->logout();
|
|
session()->invalidate();
|
|
session()->regenerateToken();
|
|
|
|
$this->redirect(route('login'));
|
|
}
|
|
}; ?>
|
|
|
|
<div class="max-w-2xl mx-auto">
|
|
<flux:heading>{{ __('client.my_profile') }}</flux:heading>
|
|
|
|
<div class="bg-cream rounded-lg p-6 mt-6">
|
|
@if($user->user_type === 'individual')
|
|
<dl class="space-y-4">
|
|
<div>
|
|
<dt class="text-sm text-charcoal/70">{{ __('profile.full_name') }}</dt>
|
|
<dd class="text-lg font-medium">{{ $user->name }}</dd>
|
|
</div>
|
|
<div>
|
|
<dt class="text-sm text-charcoal/70">{{ __('profile.national_id') }}</dt>
|
|
<dd>{{ $user->national_id }}</dd>
|
|
</div>
|
|
<!-- More fields... -->
|
|
</dl>
|
|
@else
|
|
<!-- Company fields -->
|
|
@endif
|
|
</div>
|
|
|
|
<flux:callout class="mt-6">
|
|
{{ __('client.contact_admin_to_update') }}
|
|
</flux:callout>
|
|
|
|
<flux:button wire:click="logout" variant="danger" class="mt-6">
|
|
{{ __('auth.logout') }}
|
|
</flux:button>
|
|
</div>
|
|
```
|
|
|
|
## Definition of Done
|
|
- [ ] Individual profile displays correctly
|
|
- [ ] Company profile displays correctly
|
|
- [ ] No edit functionality
|
|
- [ ] Contact admin message shown
|
|
- [ ] Logout works
|
|
- [ ] Tests pass
|
|
|
|
## Estimation
|
|
**Complexity:** Low | **Effort:** 2 hours
|