Installation
Requirements
| Requirement | Value |
|---|---|
| PHP | 8.3+ (uses enums, readonly classes, final readonly) |
| Composer | any recent version |
| Laravel | not required — the package is framework-agnostic |
| Runtime dependencies | none — require is php only |
Install
composer require padosoft/laravel-iam-contracts
That is the whole installation. There is no service provider to register, no config to publish, no
migrations — this package ships only interfaces and value objects. It deliberately drags nothing into
your dependency tree.
Autoloading
Classes are autoloaded PSR-4 under the Padosoft\Iam\Contracts\ namespace, mapped to src/:
| Namespace | Contents |
|---|---|
Padosoft\Iam\Contracts\Support |
SubjectRef |
Padosoft\Iam\Contracts\Authorization |
AuthorizationEngine |
Padosoft\Iam\Contracts\Crypto |
KeyProvider, SecretCipher, TokenSigner |
Padosoft\Iam\Contracts\Assurance |
Aal, AssuranceProvider, StepUpProvider, FactorVerifier, StepUpPurpose, StepUpChallenge, StepUpResult |
Padosoft\Iam\Contracts\Governance |
FeatureScope, FeatureKey, ScopeLevel, FeatureContext |
Padosoft\Iam\Contracts\Identity |
SessionRegistry, SessionRef, SessionMeta |
Verify it resolved
composer show padosoft/laravel-iam-contracts
use Padosoft\Iam\Contracts\Support\SubjectRef;
echo (string) new SubjectRef('user', '1'); // "user:1"
Where this package fits
You usually do not require this package directly in an application — you get it transitively through
laravel-iam-server or
laravel-iam-client. You require it explicitly when you
author an implementation of one of its interfaces, or when you want to type your own domain against
its value objects.
Because every other ecosystem package depends on these symbols, they are versioned conservatively. See
Versioning & ABI stability for what counts as a breaking change and how to
pin the package safely.
Next
- Quickstart — implement your first contract.
- Contract reference — every interface and DTO.