Best Practice for Multi-Panel Auth and Redirects

What is the best practice for:

  • permissioning access to separate panels
  • redirecting to a specific panel on login based on roles
I am using Filament Shield (with Spatie Roles and Permissions)

I have the following panels:

  • Admin (default)
  • Teachers
  • Students
  • HR
Admin should be accessibe by roles: 'Admin' and 'super_admin', Teachers by 'Teachers', Students by 'Students' and HR by 'Human Resources'

I adapted the User Model as follows which worked Locally but in production I couldn't access any Panels even as super_admin:

public function canAccessPanel(Panel $panel): bool
{
    if ($panel->getId() === 'admin') {
        return $this->email && $this->hasVerifiedEmail() && $this->hasRole(['Admin']);
    } else if ($panel->getId() === 'hr') {
        return $this->email && $this->hasVerifiedEmail() && $this->hasRole(['Human Resources']);
    } else if ($panel->getId() === 'teachers') {
        return $this->email && $this->hasVerifiedEmail() && $this->hasRole(['Teacher']);
    } else if ($panel->getId() === 'students') {
        return $this->email && $this->hasVerifiedEmail() && $this->hasRole(['Student']);
    }
    return false;
}
Was this page helpful?