hs.hsadmin.ng/src/main/resources/db/changelog/233-hs-office-partner-rbac.md
Michael Hoennig 2c0101b46d introduce-partner-business-role (#16)
Co-authored-by: Michael Hoennig <michael@hoennig.de>
Reviewed-on: #16
Reviewed-by: Timotheus Pokorra <timotheus.pokorra@hostsharing.net>
2024-02-01 14:48:15 +01:00

2.5 KiB

hs_office_partner RBAC

flowchart TB

subgraph global
    style global fill:#eee
    
    role:global.admin[global.admin]    
end

subgraph hsOfficeContact
    direction TB
    style hsOfficeContact fill:#eee
    
    role:hsOfficeContact.admin[contact.admin]    
    --> role:hsOfficeContact.tenant[contact.tenant]    
    --> role:hsOfficeContact.guest[contact.guest]    
end

subgraph hsOfficePerson
    direction TB
    style hsOfficePerson fill:#eee
    
    role:hsOfficePerson.admin[person.admin]    
    --> role:hsOfficePerson.tenant[person.tenant]    
    --> role:hsOfficePerson.guest[person.guest]    
end

subgraph hsOfficePartnerDetails
    direction TB
    
    perm:hsOfficePartnerDetails.*{{partner.*}}
    perm:hsOfficePartnerDetails.edit{{partner.edit}}
    perm:hsOfficePartnerDetails.view{{partner.view}}
end

subgraph hsOfficePartner
                    
   role:hsOfficePartner.owner[partner.owner]
   %% permissions
       role:hsOfficePartner.owner --> perm:hsOfficePartner.*{{partner.*}}
       role:hsOfficePartner.owner --> perm:hsOfficePartnerDetails.*{{partner.*}}
   %% incoming
       role:global.admin ---> role:hsOfficePartner.owner
  
   role:hsOfficePartner.admin[partner.admin]
   %% permissions
       role:hsOfficePartner.admin --> perm:hsOfficePartner.edit{{partner.edit}}
       role:hsOfficePartner.admin --> perm:hsOfficePartnerDetails.edit{{partner.edit}}
   %% incoming
       role:hsOfficePartner.owner ---> role:hsOfficePartner.admin
   %% outgoing
       role:hsOfficePartner.admin --> role:hsOfficePerson.tenant
       role:hsOfficePartner.admin --> role:hsOfficeContact.tenant
  
   role:hsOfficePartner.agent[partner.agent]
   %% permissions
       role:hsOfficePartner.agent --> perm:hsOfficePartnerDetails.view{{partner.view}}
   %% incoming
       role:hsOfficePartner.admin ---> role:hsOfficePartner.agent
       role:hsOfficePerson.admin --> role:hsOfficePartner.agent
       role:hsOfficeContact.admin --> role:hsOfficePartner.agent
  
   role:hsOfficePartner.tenant[partner.tenant]
   %% incoming
       role:hsOfficePartner.agent --> role:hsOfficePartner.tenant
   %% outgoing   
       role:hsOfficePartner.tenant --> role:hsOfficePerson.guest
       role:hsOfficePartner.tenant --> role:hsOfficeContact.guest

   role:hsOfficePartner.guest[partner.guest]
   %% permissions
       role:hsOfficePartner.guest -->  perm:hsOfficePartner.view{{partner.view}}
   %% incoming
       role:hsOfficePartner.tenant --> role:hsOfficePartner.guest
end