@verisure-italy/aaa-types
v1.7.2
Published
Types for AAA service
Downloads
889
Readme
AAA Types
Authentication & Authorization (AAA) service TypeScript types and Zod schemas: clients, users, tokens and role/grant enums.
Features
- ✅ OAuth-like grant type enum
- ✅ Rich user role enum spanning multiple domains
- ✅ Client & User schemas with optional token lifetimes
- ✅ Token info / access token modeling
- ✅ Timestamp extension for audit fields
Installation
pnpm add @verisure-italy/aaa-typesEnums
Grant Types
import { grantTypeSchema, grantTypes } from '@verisure-italy/aaa-types'Values: authorization_code | client_credentials | refresh_token | password.
User Roles
import { userRoleSchema } from '@verisure-italy/aaa-types'Domain-wide roles (admin/reader/customer variations).
Core Schemas
Client
import { clientSchema, type Client } from '@verisure-italy/aaa-types'
const client: Client = {
id: 'client-123',
grants: ['authorization_code'],
refreshTokenLifetime: 3600,
accessTokenLifetime: 900,
redirectUris: ['https://app.example.com/callback'],
}ClientDetails (with timestamps)
import { clientDetailsSchema } from '@verisure-italy/aaa-types'Extend with createdAt / updatedAt via shared timestamp fields.
User
import { userSchema, type User } from '@verisure-italy/aaa-types'
const user: User = { id: 'user-1', roles: ['ROLE_AAA_ADMIN'], username: 'alice' }UserDetails
Adds timestamps: userDetailsSchema.
InfoToken
Represents resolved token context.
import { infoTokenSchema } from '@verisure-italy/aaa-types'
const parsed = infoTokenSchema.safeParse({
accessToken: 'abc123',
accessTokenExpiresAt: new Date().toISOString(),
scope: 'read:all',
client: { id: 'client-123' },
user: { id: 'user-1', roles: ['ROLE_AAA_ADMIN'], username: 'alice' },
})Date string validated via Date.parse.
AccessToken
Stored token record.
import { accessTokenSchema } from '@verisure-italy/aaa-types'Fields: id, token, client.id, user (user id string), optional scope, numeric expires.
Usage Patterns
- Narrow grant types:
if (grant === 'refresh_token') { ... } - Map roles for authorization checks:
roles.includes('ROLE_AAA_ADMIN') - Validate expiry:
expires < Date.now().
Related Packages
@verisure-italy/shared-types(timestamp fields)- Services depending on user/role validation can import this package.
License
Internal Verisure Italy package
