hs.hsadmin.ng/src/main/resources/db/changelog/303-hs-office-membership-rbac.md
Michael Hoennig f8fb273918 generated RBAC for coopshares and -assets (#27)
Co-authored-by: Michael Hoennig <michael@hoennig.de>
Reviewed-on: #27
Reviewed-by: Timotheus Pokorra <timotheus.pokorra@hostsharing.net>
2024-04-02 11:04:56 +02:00

6.1 KiB

rbac membership

This code generated was by RbacViewMermaidFlowchartGenerator, do not amend manually.

%%{init:{'flowchart':{'htmlLabels':false}}}%%
flowchart TB

subgraph partnerRel["`**partnerRel**`"]
    direction TB
    style partnerRel fill:#99bcdb,stroke:#274d6e,stroke-width:8px

    subgraph partnerRel.contact["`**partnerRel.contact**`"]
        direction TB
        style partnerRel.contact fill:#99bcdb,stroke:#274d6e,stroke-width:8px

        subgraph partnerRel.contact:roles[ ]
            style partnerRel.contact:roles fill:#99bcdb,stroke:white

            role:partnerRel.contact:owner[[partnerRel.contact:owner]]
            role:partnerRel.contact:admin[[partnerRel.contact:admin]]
            role:partnerRel.contact:referrer[[partnerRel.contact:referrer]]
        end
    end

    subgraph partnerRel.anchorPerson["`**partnerRel.anchorPerson**`"]
        direction TB
        style partnerRel.anchorPerson fill:#99bcdb,stroke:#274d6e,stroke-width:8px

        subgraph partnerRel.anchorPerson:roles[ ]
            style partnerRel.anchorPerson:roles fill:#99bcdb,stroke:white

            role:partnerRel.anchorPerson:owner[[partnerRel.anchorPerson:owner]]
            role:partnerRel.anchorPerson:admin[[partnerRel.anchorPerson:admin]]
            role:partnerRel.anchorPerson:referrer[[partnerRel.anchorPerson:referrer]]
        end
    end

    subgraph partnerRel.holderPerson["`**partnerRel.holderPerson**`"]
        direction TB
        style partnerRel.holderPerson fill:#99bcdb,stroke:#274d6e,stroke-width:8px

        subgraph partnerRel.holderPerson:roles[ ]
            style partnerRel.holderPerson:roles fill:#99bcdb,stroke:white

            role:partnerRel.holderPerson:owner[[partnerRel.holderPerson:owner]]
            role:partnerRel.holderPerson:admin[[partnerRel.holderPerson:admin]]
            role:partnerRel.holderPerson:referrer[[partnerRel.holderPerson:referrer]]
        end
    end

    subgraph partnerRel:roles[ ]
        style partnerRel:roles fill:#99bcdb,stroke:white

        role:partnerRel:owner[[partnerRel:owner]]
        role:partnerRel:admin[[partnerRel:admin]]
        role:partnerRel:agent[[partnerRel:agent]]
        role:partnerRel:tenant[[partnerRel:tenant]]
    end
end

subgraph partnerRel.contact["`**partnerRel.contact**`"]
    direction TB
    style partnerRel.contact fill:#99bcdb,stroke:#274d6e,stroke-width:8px

    subgraph partnerRel.contact:roles[ ]
        style partnerRel.contact:roles fill:#99bcdb,stroke:white

        role:partnerRel.contact:owner[[partnerRel.contact:owner]]
        role:partnerRel.contact:admin[[partnerRel.contact:admin]]
        role:partnerRel.contact:referrer[[partnerRel.contact:referrer]]
    end
end

subgraph membership["`**membership**`"]
    direction TB
    style membership fill:#dd4901,stroke:#274d6e,stroke-width:8px

    subgraph membership:roles[ ]
        style membership:roles fill:#dd4901,stroke:white

        role:membership:owner[[membership:owner]]
        role:membership:admin[[membership:admin]]
        role:membership:agent[[membership:agent]]
    end

    subgraph membership:permissions[ ]
        style membership:permissions fill:#dd4901,stroke:white

        perm:membership:INSERT{{membership:INSERT}}
        perm:membership:DELETE{{membership:DELETE}}
        perm:membership:UPDATE{{membership:UPDATE}}
        perm:membership:SELECT{{membership:SELECT}}
    end
end

subgraph partnerRel.anchorPerson["`**partnerRel.anchorPerson**`"]
    direction TB
    style partnerRel.anchorPerson fill:#99bcdb,stroke:#274d6e,stroke-width:8px

    subgraph partnerRel.anchorPerson:roles[ ]
        style partnerRel.anchorPerson:roles fill:#99bcdb,stroke:white

        role:partnerRel.anchorPerson:owner[[partnerRel.anchorPerson:owner]]
        role:partnerRel.anchorPerson:admin[[partnerRel.anchorPerson:admin]]
        role:partnerRel.anchorPerson:referrer[[partnerRel.anchorPerson:referrer]]
    end
end

subgraph partnerRel.holderPerson["`**partnerRel.holderPerson**`"]
    direction TB
    style partnerRel.holderPerson fill:#99bcdb,stroke:#274d6e,stroke-width:8px

    subgraph partnerRel.holderPerson:roles[ ]
        style partnerRel.holderPerson:roles fill:#99bcdb,stroke:white

        role:partnerRel.holderPerson:owner[[partnerRel.holderPerson:owner]]
        role:partnerRel.holderPerson:admin[[partnerRel.holderPerson:admin]]
        role:partnerRel.holderPerson:referrer[[partnerRel.holderPerson:referrer]]
    end
end

%% granting roles to users
user:creator ==> role:membership:owner

%% granting roles to roles
role:global:admin -.-> role:partnerRel.anchorPerson:owner
role:partnerRel.anchorPerson:owner -.-> role:partnerRel.anchorPerson:admin
role:partnerRel.anchorPerson:admin -.-> role:partnerRel.anchorPerson:referrer
role:global:admin -.-> role:partnerRel.holderPerson:owner
role:partnerRel.holderPerson:owner -.-> role:partnerRel.holderPerson:admin
role:partnerRel.holderPerson:admin -.-> role:partnerRel.holderPerson:referrer
role:global:admin -.-> role:partnerRel.contact:owner
role:partnerRel.contact:owner -.-> role:partnerRel.contact:admin
role:partnerRel.contact:admin -.-> role:partnerRel.contact:referrer
role:global:admin -.-> role:partnerRel:owner
role:partnerRel:owner -.-> role:partnerRel:admin
role:partnerRel.anchorPerson:admin -.-> role:partnerRel:admin
role:partnerRel:admin -.-> role:partnerRel:agent
role:partnerRel.holderPerson:admin -.-> role:partnerRel:agent
role:partnerRel:agent -.-> role:partnerRel:tenant
role:partnerRel.holderPerson:admin -.-> role:partnerRel:tenant
role:partnerRel.contact:admin -.-> role:partnerRel:tenant
role:partnerRel:tenant -.-> role:partnerRel.anchorPerson:referrer
role:partnerRel:tenant -.-> role:partnerRel.holderPerson:referrer
role:partnerRel:tenant -.-> role:partnerRel.contact:referrer
role:membership:owner ==> role:membership:admin
role:partnerRel:admin ==> role:membership:admin
role:membership:admin ==> role:membership:agent
role:partnerRel:agent ==> role:membership:agent
role:membership:agent ==> role:partnerRel:tenant

%% granting permissions to roles
role:global:admin ==> perm:membership:INSERT
role:membership:admin ==> perm:membership:DELETE
role:membership:admin ==> perm:membership:UPDATE
role:membership:agent ==> perm:membership:SELECT