generated sotries
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# Story 6.8: System Settings
|
||||
|
||||
## Epic Reference
|
||||
**Epic 6:** Admin Dashboard
|
||||
|
||||
## User Story
|
||||
As an **admin**,
|
||||
I want **to configure system-wide settings**,
|
||||
So that **I can customize the platform to my needs**.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
### Profile Settings
|
||||
- [ ] Admin name
|
||||
- [ ] Email
|
||||
- [ ] Password change
|
||||
- [ ] Preferred language
|
||||
|
||||
### Email Settings
|
||||
- [ ] View current sender email
|
||||
- [ ] Test email functionality
|
||||
|
||||
### Notification Preferences (Optional)
|
||||
- [ ] Toggle admin notifications
|
||||
- [ ] Summary email frequency
|
||||
|
||||
### Behavior
|
||||
- [ ] Settings saved and applied immediately
|
||||
- [ ] Validation for all inputs
|
||||
|
||||
## Technical Notes
|
||||
|
||||
```php
|
||||
new class extends Component {
|
||||
public string $name = '';
|
||||
public string $email = '';
|
||||
public string $current_password = '';
|
||||
public string $password = '';
|
||||
public string $password_confirmation = '';
|
||||
public string $preferred_language = 'ar';
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$user = auth()->user();
|
||||
$this->name = $user->name;
|
||||
$this->email = $user->email;
|
||||
$this->preferred_language = $user->preferred_language;
|
||||
}
|
||||
|
||||
public function updateProfile(): void
|
||||
{
|
||||
$this->validate([
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => ['required', 'email', Rule::unique('users')->ignore(auth()->id())],
|
||||
'preferred_language' => ['required', 'in:ar,en'],
|
||||
]);
|
||||
|
||||
auth()->user()->update([
|
||||
'name' => $this->name,
|
||||
'email' => $this->email,
|
||||
'preferred_language' => $this->preferred_language,
|
||||
]);
|
||||
|
||||
session()->flash('success', __('messages.profile_updated'));
|
||||
}
|
||||
|
||||
public function updatePassword(): void
|
||||
{
|
||||
$this->validate([
|
||||
'current_password' => ['required', 'current_password'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
]);
|
||||
|
||||
auth()->user()->update([
|
||||
'password' => Hash::make($this->password),
|
||||
]);
|
||||
|
||||
$this->reset(['current_password', 'password', 'password_confirmation']);
|
||||
session()->flash('success', __('messages.password_updated'));
|
||||
}
|
||||
|
||||
public function sendTestEmail(): void
|
||||
{
|
||||
Mail::to(auth()->user())->send(new TestEmail());
|
||||
session()->flash('success', __('messages.test_email_sent'));
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
## Definition of Done
|
||||
- [ ] Profile updates work
|
||||
- [ ] Password change works
|
||||
- [ ] Language preference persists
|
||||
- [ ] Test email sends
|
||||
- [ ] Validation complete
|
||||
- [ ] Tests pass
|
||||
|
||||
## Estimation
|
||||
**Complexity:** Medium | **Effort:** 3-4 hours
|
||||
Reference in New Issue
Block a user