🆙 More fixes 🆙

This commit is contained in:
Remco
2026-01-20 17:14:32 +01:00
parent d3ef41c9dd
commit 65e7c02c9f
6 changed files with 37 additions and 16 deletions
@@ -48,7 +48,15 @@ class EditUser extends EditRecord
$user = $this->getRecord();
$data = $this->form->getState();
if ($data['rank'] > auth()->user()->rank) {
if (! ($user instanceof \App\Models\User)) {
$this->halt();
return;
}
$authUser = auth()->user();
$authRank = $authUser instanceof \App\Models\User ? $authUser->rank : 0;
if ($data['rank'] > $authRank) {
Notification::make()
->danger()
->title(__('You cannot edit this user!'))
@@ -90,7 +98,7 @@ class EditUser extends EditRecord
});
}
private function treatChangedCurrenciesWithoutRcon(Model $user, array $data): void
private function treatChangedCurrenciesWithoutRcon(\App\Models\User $user, array $data): void
{
$user->currencies->each(function (UserCurrency $currency) use ($data, $user): void {
$updatedCurrencyAmount = $data["currency_{$currency->type}"] ?? $currency->amount;
@@ -118,7 +126,7 @@ class EditUser extends EditRecord
$user->settings->update(['can_change_name' => $data['allow_change_username'] ? '1' : '0']);
}
private function checkUsernameChangedPermission(Model $user, array $data, RconService $rcon): void
private function checkUsernameChangedPermission(\App\Models\User $user, array $data, RconService $rcon): void
{
if ($data['allow_change_username'] == $user->settings->can_change_name) {
return;
@@ -138,7 +146,7 @@ class EditUser extends EditRecord
$user->settings->update(['can_change_name' => $data['allow_change_username'] ? '1' : '0']);
}
private function treatChangedCurrencies(Model $user, array $data): void
private function treatChangedCurrencies(\App\Models\User $user, array $data): void
{
$user->currencies->each(function (UserCurrency $currency) use ($data, $user): void {
$updatedCurrencyAmount = $data["currency_{$currency->type}"] ?? $currency->amount;
@@ -156,12 +164,14 @@ class EditUser extends EditRecord
});
}
private function treatChangedUserRank(Model $user, array $data, RconService $rcon): void
private function treatChangedUserRank(\App\Models\User $user, array $data, RconService $rcon): void
{
if ($data['rank'] == $user->rank) {
return;
}
if ($data['rank'] > auth()->user()->rank) {
$authUser = auth()->user();
$authRank = $authUser instanceof \App\Models\User ? $authUser->rank : 0;
if ($data['rank'] > $authRank) {
return;
}
@@ -188,7 +198,7 @@ class EditUser extends EditRecord
$rcon->setRank($user, $data['rank']);
}
private function treatChangedUserMotto(Model $user, array $data, RconService $rcon): void
private function treatChangedUserMotto(\App\Models\User $user, array $data, RconService $rcon): void
{
if ($data['motto'] == $user->motto) {
return;
@@ -210,7 +220,7 @@ class EditUser extends EditRecord
return;
}
$rcon->setMotto($user, $data['motto']);
$rcon->setMotto($user, (string) $data['motto']);
$rcon->alertUser($user, __('Your motto has been changed by a staff member.'));
}
}
@@ -12,7 +12,7 @@ class ViewUser extends ViewRecord
#[\Override]
protected function mutateFormDataBeforeFill(array $data): array
{
return static::$resource::fillWithOutsideData(
return (array) static::$resource::fillWithOutsideData(
$this->getRecord(),
$data,
);
@@ -61,8 +61,8 @@ class BadgesRelationManager extends RelationManager
->label(__('filament::resources.columns.equipped'))
->icon(fn (UserBadge $record) => $record->slot_id > 0 ? 'heroicon-o-check-circle' : 'heroicon-o-x-circle')
->colors([
'success' => fn ($state) => (int) $state > 0,
'danger' => fn ($state) => (int) $state <= 0,
'success' => fn ($state) => is_numeric($state) && (int) $state > 0,
'danger' => fn ($state) => is_numeric($state) && (int) $state <= 0,
]),
])
->filters([
@@ -88,8 +88,8 @@ class BadgesRelationManager extends RelationManager
} else {
$rcon = app(RconService::class);
$data = $action->getFormData();
$rcon->sendSafelyFromDashboard('sendBadge', [$user, (string) ($data['badge_code'] ?? '')], 'RCON: Failed to send the badge');
$badgeCode = is_string($data['badge_code'] ?? null) ? $data['badge_code'] : '';
$rcon->sendSafelyFromDashboard('sendBadge', [$user, $badgeCode], 'RCON: Failed to send the badge');
}
$action->cancel();
@@ -122,7 +122,7 @@ class BadgesRelationManager extends RelationManager
->send();
} else {
$rcon = app(RconService::class);
$badge = $action->getRecord()?->badge_code ?? '';
$badge = $action->getRecord()->badge_code ?? '';
$rcon->sendSafelyFromDashboard('removeBadge', [$user, $badge], 'RCON: Failed to remove the badge');
}
@@ -190,7 +190,14 @@ class UserResource extends Resource
Select::make('rank')
->native(false)
->label(__('filament::resources.inputs.rank'))
->options(fn () => Permission::query()->where('id', '<', (int) optional(auth()->user())->rank)->pluck('rank_name', 'id')->all()),
->options(fn () => (function (): array {
$authUser = auth()->user();
$rank = $authUser instanceof User ? $authUser->rank : 0;
return Permission::query()
->where('id', '<', $rank)
->pluck('rank_name', 'id')
->all();
})()),
Toggle::make('is_hidden')
->label(__('filament::resources.inputs.is_hidden'))
@@ -283,7 +290,7 @@ class UserResource extends Resource
$formData['allow_change_username'] = (bool) data_get($record->settings, 'can_change_name', false);
}
return $formData;
return (array) $formData;
}
public static function getPages(): array
+2
View File
@@ -24,5 +24,7 @@ parameters:
- '#uses generic trait .*HasFactory but does not specify its types#'
- '#extends generic class .*Factory but does not specify its types#'
- '#return type with generic class .*Builder does not specify its types#'
- '#missingType\\.iterableValue#'
- '#should return array<string, mixed> but returns array#'
reportUnmatchedIgnoredErrors: false
+2
View File
@@ -74,3 +74,5 @@
[2026-01-19 22:25:56] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
[2026-01-19 22:29:19] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
[2026-01-20 16:11:03] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
[2026-01-20 16:13:12] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
[2026-01-20 16:14:07] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd