Site

Tokens & Abilities

v4

Tokens nomeados com abilities (scopes) e TTL customizado via traithas_api_tokens em MUCRM\engine\auth\concerns\has_api_tokens.


Tabela mucrm_api_tokens

ColunaNotas
tokenable_type / tokenable_idPolymorphic
namelogin, readonly, etc.
tokenSHA-256 do plain text
abilitiesJSON
expires_atTTL 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 | null

Token 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.