Native CakePHP Auth Strategy
Use this mode if you want CakePHP Authentication / Authorization to stay in charge at runtime and you do not want TinyAuth to handle request authorization.
Important constraint
This package still depends on dereuromark/cakephp-tinyauth at install time. That does not mean you must use TinyAuth as your runtime auth layer.
You can instead use TinyAuthBackend mainly for:
- role management
- resource/ability editing
- scope management
- a permission administration UI
and consume that data from your own CakePHP Authorization policies/services.
Practical split
- Authentication:
cakephp/authentication - Authorization:
cakephp/authorization - Permission storage / admin UI: TinyAuthBackend
Recommended usage
The simplest path is to let TinyAuthPolicy handle every entity you want the backend to govern, via the plugin-provided TinyAuthResolver:
// Application::getAuthorizationService()
use Authorization\AuthorizationService;
use TinyAuthBackend\Policy\TinyAuthResolver;
$resolver = new TinyAuthResolver([
\App\Model\Entity\Article::class,
\App\Model\Entity\Project::class,
]);
return new AuthorizationService($resolver);See Authorization Integration for the full wiring guide.
If you need custom logic on top of the base policy, extend TinyAuthPolicy and override the specific hook — the parent signature matches CakePHP Authorization's calling convention:
use Authorization\IdentityInterface;
use Cake\Datasource\EntityInterface;
use TinyAuthBackend\Policy\TinyAuthPolicy;
class ArticlePolicy extends TinyAuthPolicy
{
public function canEdit(?IdentityInterface $identity, EntityInterface $entity): bool
{
// Custom gate goes here; fall through to the TinyAuth rules.
return parent::canEdit($identity, $entity);
}
}Or call the service directly from your own policy:
use TinyAuthBackend\Service\TinyAuthService;
$service = new TinyAuthService();
$allowed = $service->canAccessResource($user, $article, 'edit');What to avoid in this mode
If you are not using TinyAuth at runtime, do not wire up:
DbAllowAdapterDbAclAdapter
Those adapters are specifically for TinyAuth's controller/action flow.
Suggested feature set
'TinyAuthBackend' => [
'features' => [
'allow' => false,
'acl' => false,
'roles' => true,
'resources' => true,
'scopes' => true,
],
],