Tokens & Abilities
v4Tokens nomeados com abilities (scopes) e TTL customizado via traithas_api_tokens em MUCRM\engine\auth\concerns\has_api_tokens.
Tabela mucrm_api_tokens
| Coluna | Notas |
|---|---|
| tokenable_type / tokenable_id | Polymorphic |
| name | login, readonly, etc. |
| token | SHA-256 do plain text |
| abilities | JSON |
| expires_at | TTL via auth.login_token_ttl_days |
Login token
$token = $customer->create_login_token()->plainTextToken;
request()->user()->logout();Plain text aparece somente na criação.
Tokens customizados
$customer->create_token('readonly', ['posts:read']);
$customer->create_token('temp', ['*'], new \DateTimeImmutable('+7 days'));
$customer->token_can('posts:read');
$customer->revoke_token('readonly');
$customer->revoke_all_tokens();use MUCRM\engine\auth\concerns\has_api_tokens;
class customer extends schema
{
use has_api_tokens;
}Config
config('auth.token_prefix'); // mcrm_
config('auth.token_bytes'); // 40
config('auth.login_token_name'); // login
config('auth.login_token_ttl_days'); // 30 | nullToken de serviço vs login
$my_token = config('api.service_token');
$token = request()->bearer_token();
if (!hash_equals((string) $my_token, (string) $token)) {
return json(['error' => 'Unauthorized'], 401);
}Veja Autenticação.