AdminDashboardAddon.php

<?php

namespace Tlf\User;

class AdminDashboardAddon extends \Lia\Addon {

    public string $fqn = 'taeluf:user.admin_dashboard';
    //public string $name = 'initialization_addon';
  
    public function __construct(\Tlf\User\Package $package){  
        parent::__construct($package);   

        $this->lia->hook(\Lia\Hooks::REQUEST_STARTED, [$this, 'add_admin_routes']);

        $this->lia->hook(\Tlf\User\Hooks::DASHBOARD_WILL_DISPLAY, [$this, 'add_admin_dashboards']);        

    }  

    public function add_admin_routes(\Lia\Obj\Request $request, \Lia\Obj\Response $response){

        $target_url = $this->package->url("/admin/");
        $partial_url = substr($request->url(),0,strlen($target_url));

        $is_user_admin_route = $partial_url == $target_url;
        if (!$is_user_admin_route)return;

        $is_admin_user = $this->package->get_user()->has_role('admin') === true;
        if (!$is_admin_user){
            return;
        }

        error_log("Adding admin routes for user lib. User has role 'admin'. This check does not respect configured access settings.");


        $this->lia->addon('lia:server.router')
                  ->addDirectoryRoutes($this->package, __DIR__.'/public/',$this->package->base_url,['.php']);

    }

    public function add_admin_dashboards(){

            if ($this->package->get_user()->has_role('admin') !== true){
                return;
            }

            error_log("Adding admin dashboard views. User has role 'admin'. This check does not respect configured access settings.");

            $this->lia->addon('lia:server.view')
                      ->addDir(__DIR__.'/view/', $this->package);

            $this->package->add_user_dashboard('User Login Configuration', 'user:admin-dashboard/configure-login');
            $this->package->add_user_dashboard('Liaison Site Details', 'user:admin-dashboard/liaison-site-details');
    }

}