Skip to content

πŸ” Auth Context β€” Entity MapΒΆ

Last updated: 2025-10-09 (Europe/Paris)

This diagram illustrates how Spatie Laravel-Permission entities relate to Accounts memberships and downstream contexts. It focuses on relationships rather than database columns.


πŸ”— Relationship OverviewΒΆ

%%{init: {'themeVariables': {'fontSize': '15px'}, 'class': {'useMaxWidth': true}}}%%
classDiagram
    direction LR

    class User {
        +id
        +email
    }

    class Organization {
        +id
        +name
    }

    class Membership {
        +role
        +status
        +permissions
    }

    class Role {
        +id
        +name
        +guard_name
        +team_id
    }

    class Permission {
        +id
        +name
        +guard_name
    }

    class ModelHasRoles {
        +role_id
        +model_id
        +model_type
        +team_id
    }

    class ModelHasPermissions {
        +permission_id
        +model_id
        +model_type
        +team_id
    }

    class ArtistMember {
        +role
        +status
    }

    User "1" -- "many" Membership : org memberships
    Membership ..> Role : "sync assigns role (Spatie)"
    Role "1" -- "many" Permission : bundles

    User "1" -- "many" ModelHasRoles : entries
    ModelHasRoles --> Role : role_id
    ModelHasRoles --> Organization : team_id

    User "1" -- "many" ModelHasPermissions : direct grants
    ModelHasPermissions --> Permission : permission_id
    ModelHasPermissions --> Organization : team_id

    Membership ..> ModelHasRoles : "drives sync"
    ArtistMember ..> ModelHasPermissions : "granular overrides"

    note for ModelHasRoles "team_id = organization.id in team mode"
    note for ArtistMember "Creators context uses direct grants for per-artist overrides"

  • docs/contexts/auth/models.md β€” Column-level schema for Spatie tables.
  • docs/contexts/accounts/entity-diagram.md β€” How memberships and invitations connect to Accounts.
  • docs/contexts/creators/models.md β€” Artist memberships interacting with Auth permissions.