Skip to content

feat(auth): return abilities in signin and token responses #3222

@PierreBrisorgueil

Description

@PierreBrisorgueil

Description

Include CASL abilities in auth responses so the Vue frontend can consume them without dedicated policy files.

Details

  • POST /api/auth/signin response adds abilities array
  • GET /api/auth/token response adds abilities array
  • Abilities are built from user + current organization membership
  • Format: [{ action, subject, conditions }] — compatible with createMongoAbility()

Response example

{
  "user": {
    "_id": "abc123",
    "firstName": "Pierre",
    "roles": ["user"],
    "currentOrganization": {
      "_id": "org456",
      "name": "Acme Inc",
      "slug": "acme-inc",
      "plan": "free"
    },
    "membership": {
      "role": "owner",
      "organizationId": "org456"
    }
  },
  "tokenExpiresIn": "...",
  "abilities": [
    { "action": "manage", "subject": "Task", "conditions": { "organizationId": "org456" } },
    { "action": "read", "subject": "Organization", "conditions": { "_id": "org456" } }
  ]
}

Acceptance criteria

  • Abilities included in signin response
  • Abilities included in token refresh response
  • Abilities format compatible with @casl/ability createMongoAbility

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important — depends on P1phase:2-orgsPhase 2: Multi-tenancy & Organizations

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions