<?php

use function DI\autowire, DI\create, DI\get;

use Storage\Session;

use Taxus\{ Privilege, Taxus, PermissionGrantInterface, DefaultPermissionGrant };

use Psr\Http\Message\ServerRequestInterface;

return [
    Taxus::class => function ($c) {
        return ( new Taxus( $c->get(PermissionGrantInterface::class) ) )->add(
            [ new Privilege("dev", "Is a developper of this application."), "is_dev" ],
            [ new Privilege("admin", "Can manage mostly everything from this application."), "is_admin" ],
            [ new Privilege("user", "Is an authenticated user."), "is_user" ],
            [ new Privilege("anonymous", "Is an anonymous (unauthenticated) user."), "is_anonymous" ],
        );
    },

    PermissionGrantInterface::class => create(DefaultPermissionGrant::class)->constructor(get(ServerRequestInterface::class), get(Session::class)),
];