Initial commit

This commit is contained in:
Ronald Huynen
2026-03-23 21:37:59 +01:00
commit 2547717edb
2193 changed files with 972171 additions and 0 deletions

View File

@@ -0,0 +1,112 @@
<?php
namespace App\Http\Livewire\Profile;
use Livewire\Component;
class UpdateMessageSettingsForm extends Component
{
public bool $systemMessage;
public bool $paymentReceived;
public bool $starReceived;
public bool $localNewsletter;
public bool $generalNewsletter;
public bool $personalChat;
public bool $groupChat;
public int $chatUnreadDelay;
public bool $callExpiry;
protected $rules = [
'systemMessage' => 'boolean',
'paymentReceived' => 'boolean',
'starReceived' => 'boolean',
'localNewsletter' => 'boolean',
'generalNewsletter' => 'boolean',
'personalChat' => 'boolean',
'groupChat' => 'boolean',
'chatUnreadDelay' => 'integer|min:0|max:99', // 168 hours is one week
'callExpiry' => 'boolean',
];
public function mount()
{
$profile = getActiveProfile();
if (!$profile) {
abort(403, 'No active profile');
}
// CRITICAL SECURITY: Validate user has ownership/access to this profile
\App\Helpers\ProfileAuthorizationHelper::authorize($profile);
// Load current settings or create default
$settings = $profile->message_settings()->first();
if (!$settings) {
// Create default settings
$settings = $profile->message_settings()->create([
'system_message' => true,
'payment_received' => true,
'star_received' => true,
'local_newsletter' => true,
'general_newsletter' => true,
'personal_chat' => true,
'group_chat' => true,
'chat_unread_delay' => timebank_config('messenger.default_unread_mail_delay'),
'call_expiry' => true,
]);
}
$this->systemMessage = $settings->system_message;
$this->paymentReceived = $settings->payment_received;
$this->starReceived = $settings->star_received;
$this->localNewsletter = $settings->local_newsletter;
$this->generalNewsletter = $settings->general_newsletter;
$this->personalChat = $settings->personal_chat;
$this->groupChat = $settings->group_chat;
$this->chatUnreadDelay = $settings->chat_unread_delay;
$this->callExpiry = (bool) ($settings->call_expiry ?? true);
}
public function updateMessageSettings()
{
$this->validate();
$profile = getActiveProfile();
if (!$profile) {
abort(403, 'No active profile');
}
// CRITICAL SECURITY: Validate user has ownership/access to this profile
\App\Helpers\ProfileAuthorizationHelper::authorize($profile);
$profile->message_settings()->updateOrCreate(
[],
[
'system_message' => $this->systemMessage,
'payment_received' => $this->paymentReceived,
'star_received' => $this->starReceived,
'local_newsletter' => $this->localNewsletter,
'general_newsletter' => $this->generalNewsletter,
'personal_chat' => $this->personalChat,
'group_chat' => $this->groupChat,
'chat_unread_delay' => $this->chatUnreadDelay,
'call_expiry' => $this->callExpiry,
]
);
$this->dispatch('saved');
}
public function render()
{
return view('livewire.profile.update-message-settings-form');
}
}