IAM Platform — Entity Relationship Diagram
Renders on GitHub/Jira via Mermaid.
erDiagram
organizations ||--o{ offices : has
offices ||--o{ offices : "parent_of"
organizations ||--o{ user_organizations : "members"
users ||--o{ user_organizations : "memberships"
users ||--o{ user_roles : "assignments"
roles ||--o{ user_roles : "assignments"
organizations ||--o{ user_roles : "scoped to"
roles ||--o{ role_permissions : grants
permissions ||--o{ role_permissions : "granted by"
users ||--o{ user_scopes : "data scope"
organizations ||--o{ user_scopes : "within"
users ||--o{ refresh_tokens : owns
users ||--o{ password_reset_tokens : owns
organizations ||--o{ audit_logs : context
users ||--o{ audit_logs : actor
organizations {
bigint id PK
uuid uuid
varchar name
varchar code UK
varchar status
timestamp created_at
timestamp updated_at
timestamp deleted_at
}
offices {
bigint id PK
bigint organization_id FK
bigint parent_id FK
varchar name
varchar code
}
users {
bigint id PK
uuid uuid
varchar username UK
varchar email UK
varchar mobile
text password_hash
varchar first_name
varchar middle_name
varchar last_name
varchar status
timestamp last_login_at
integer failed_login_attempts
timestamp created_at
timestamp deleted_at
}
roles {
bigint id PK
uuid uuid
varchar name
varchar code UK
text description
varchar status
boolean is_system
}
permissions {
bigint id PK
uuid uuid
varchar module
varchar code UK
text description
}
applications {
bigint id PK
uuid uuid
varchar name
varchar code UK
text description
varchar status
}
user_organizations {
bigint id PK
bigint user_id FK
bigint organization_id FK
}
user_roles {
bigint id PK
bigint user_id FK
bigint role_id FK
bigint organization_id FK
bigint assigned_by FK
timestamp assigned_at
}
role_permissions {
bigint id PK
bigint role_id FK
bigint permission_id FK
}
user_scopes {
bigint id PK
bigint user_id FK
bigint organization_id FK
bigint office_id FK
}
refresh_tokens {
bigint id PK
bigint user_id FK
text token UK
timestamp expires_at
timestamp revoked_at
}
password_reset_tokens {
bigint id PK
bigint user_id FK
text token UK
timestamp expires_at
timestamp used_at
}
audit_logs {
bigint id PK
bigint organization_id FK
bigint user_id FK
varchar action
varchar resource_type
varchar resource_id
varchar ip_address
text user_agent
jsonb details_json
timestamp created_at
}