Types for AAA service
npm install @verisure-italy/aaa-typesAuthentication & Authorization (AAA) service TypeScript types and Zod schemas: clients, users, tokens and role/grant enums.
- ✅ 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
``bash`
pnpm add @verisure-italy/aaa-types
typescript
import { grantTypeSchema, grantTypes } from '@verisure-italy/aaa-types'
`
Values: authorization_code | client_credentials | refresh_token | password.$3
`typescript
import { userRoleSchema } from '@verisure-italy/aaa-types'
`
Domain-wide roles (admin/reader/customer variations).Core Schemas
$3
`typescript
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'],
}
`$3
`typescript
import { clientDetailsSchema } from '@verisure-italy/aaa-types'
`
Extend with createdAt / updatedAt via shared timestamp fields.$3
`typescript
import { userSchema, type User } from '@verisure-italy/aaa-types'const user: User = { id: 'user-1', roles: ['ROLE_AAA_ADMIN'], username: 'alice' }
`$3
Adds timestamps: userDetailsSchema.$3
Represents resolved token context.
`typescript
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.$3
Stored token record.
`typescript
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)