libra/docs/stories/story-7.4-my-profile-view.md

2.3 KiB

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

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