classDiagram
    direction LR

    OfficePerson o.. "*" Credentials
    Credentials "1" o-- "1" RbacSubject

    CredentialsContext "1..n" --o "1" CredentialsContextMapping
    Credentials "1..n" --o "1" CredentialsContextMapping

    class Credentials{
        +totpSecret: text
        +phonePassword: text
        +emailAdress: text
        +smsNumber: text
        -active: bool [r/w]
        -globalUid: int [w/o]
        -globalGid: int [w/o]
        -onboardingToken: text [w/o]
    }

    class CredentialsContext{
        -type: Enum [SSH, Matrix, Mastodon, ...]
        -qualifier: text
    }

    class CredentialsContextMapping{
    }
    note for CredentialsContextMapping "Assigns Credentials to CredentialsContexts"

    class RbacSubject{
        +uuid: uuid
        +name: text # == nickname
    }

    class OfficePerson{
        +type: enum
        +tradename: text
        +title: text
        +familyName: text
        +givenName: text
        +salutation: text
    }

    style CredentialsContext fill:#00f,color:#fff
    style CredentialsContextMapping fill:#00f,color:#fff
    style Credentials fill:#00f,color:#fff

    style RbacSubject fill:#f96,color:#fff
    style OfficePerson fill:#f66,color:#000
