Skip to content

Code Quality: Livewire components duplicate checkHadesAccess() method #19

@Snider

Description

@Snider

Description

Every Livewire component in src/View/Modal/Admin/ duplicates the same checkHadesAccess() method.

Location

  • File: src/View/Modal/Admin/Logs.php (lines 99-104)
  • File: src/View/Modal/Admin/Routes.php (lines 90-95)
  • File: src/View/Modal/Admin/Cache.php (lines 131-136)
  • File: src/View/Modal/Admin/ActivityLog.php (lines 111-116)
  • File: src/View/Modal/Admin/Servers.php (lines 229-234)
  • File: src/View/Modal/Admin/Database.php (lines 152-157)
  • File: src/View/Modal/Admin/RouteInspector.php (lines 471-476)

Issue

The same method is copy-pasted in 7 components:

private function checkHadesAccess(): void
{
if (! auth()->user()?->isHades()) {
abort(403, 'Hades access required');
}
}

This violates DRY principle and makes it:

  1. Easy to forget when creating new components
  2. Hard to modify authorization logic consistently
  3. Prone to copy-paste errors

Recommendation

  1. Create a base component class or trait (e.g., RequiresHadesAccess trait)
  2. Move checkHadesAccess() to the trait
  3. Have all admin components use the trait
  4. Consider using Livewire middleware instead

Severity

Low - Code quality issue, not a bug, but increases maintenance burden

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions