diff --git a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user-large-packaged.png b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user-large-packaged.png new file mode 100644 index 0000000..368f918 Binary files /dev/null and b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user-large-packaged.png differ diff --git a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user-large.png b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user-large.png new file mode 100644 index 0000000..9dd6003 Binary files /dev/null and b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user-large.png differ diff --git a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user-small.png b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user-small.png new file mode 100644 index 0000000..291120a Binary files /dev/null and b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user-small.png differ diff --git a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user.png b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user.png new file mode 100644 index 0000000..c37f3a6 Binary files /dev/null and b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/org-repo-user.png differ diff --git a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/organisations.md b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/organisations.md index d16b2c3..b86d30d 100644 --- a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/organisations.md +++ b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/organisations.md @@ -1,3 +1,23 @@ + +# Forgejo's entities' relations repo, organisation, team, user + +## small: only one comment + +![alt text](org-repo-user-small.png) + +## normal model + +![alt text](org-repo-user.png) + +## large + +![alt text](org-repo-user-large.png) + +## large packaged + +![alt text](org-repo-user-large-packaged.png) + + Das `owners`-Team in Gitea/Forgejo ist **etwas Besonderes** und tatsächlich **hardcoded** – hier sind die Details: --- diff --git a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large-2.puml b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large-2.puml deleted file mode 100644 index 1a082ad..0000000 --- a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large-2.puml +++ /dev/null @@ -1,57 +0,0 @@ -@startuml -package "Forgejo/Gitea User-Organisation-Repo-Modell" { - - class User { - + id: int - + username: string - + email: string - } - - class Organisation { - + id: int - + name: string - } - - class OrgMember { - + user_id: int - + org_id: int - + is_owner: bool - + role: string - } - - class Team { - + id: int - + org_id: int - + name: string - + permission_level: string - } - - class Repository { - + id: int - + owner_id: int - + name: string - + is_private: bool - } - - User "1" -- "0..*" OrgMember : membership - Organisation "1" -- "0..*" OrgMember : members - Organisation "1" -- "0..*" Team : teams - Team "1" -- "0..*" User : members - Team "1" -- "0..*" Repository : repos - - Organisation "1" -- "0..*" Repository : owns - - note right of OrgMember - Owner (is_owner = true) kann: - - Organisation verwalten - - Teams erstellen/löschen - - Mitglieder verwalten - end note - - note left of Repository - Zugriff durch Teams nur möglich, wenn - Repository zu Organisation gehört. - Owner können Repository voll verwalten. - end note -} -@enduml diff --git a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large-3.puml b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large-packaged.puml similarity index 100% rename from docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large-3.puml rename to docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large-packaged.puml diff --git a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large.puml b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large.puml index 72a41f4..5cff40c 100644 --- a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large.puml +++ b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-large.puml @@ -1,62 +1,58 @@ @startuml -left to right direction -skinparam linetype ortho -skinparam classAttributeIconSize 0 -hide circle +scale 500 width +package "Forgejo/Gitea User-Organisation-Repo-Modell" { -' Gruppierungen -package "Systemweite Benutzer und Rollen" { class User { - +username - +email - +isAdmin + + id: int + + username: string + + email: string } - note right of User - Kann Organisationen erstellen - Kann eigenen Namespace verwalten - Kann systemweiter Admin sein - end note -} - -package "Organisation" { class Organisation { - +name - +visibility - } - - class Team { - +name - +permissionLevel - +canCreateRepos + + id: int + + name: string } class OrgMember { - +role: member / owner + + user_id: int + + org_id: int + + is_owner: bool + + role: string } - Organisation "1" -- "0..*" Team : verwaltet > - Organisation "1" -- "0..*" OrgMember : hat Mitglieder > - User "1" -- "0..*" OrgMember : ist > + class Team { + + id: int + + org_id: int + + name: string + + permission_level: string + } - OrgMember "1" -- "0..*" Team : gehört zu > -} - -package "Repository" { class Repository { - +name - +visibility - +owner: User|Organisation + + id: int + + owner_id: int + + name: string + + is_private: bool } - Team "1" -- "0..*" Repository : Zugriff auf > - User "1" -- "0..*" Repository : direkte Rechte (optional) > + User "1" -- "0..*" OrgMember : membership + Organisation "1" -- "0..*" OrgMember : members + Organisation "1" -- "0..*" Team : teams + Team "1" -- "0..*" User : members + Team "1" -- "0..*" Repository : repos - note right of Repository - Teams können nur auf Repositories zugreifen, - die zur selben Organisation gehören. - Nutzer-Repos können nicht über Teams geteilt werden. + Organisation "1" -- "0..*" Repository : owns + + note right of OrgMember + Owner (is_owner = true) kann: + - Organisation verwalten + - Teams erstellen/löschen + - Mitglieder verwalten + end note + + note left of Repository + Zugriff durch Teams nur möglich, wenn + Repository zu Organisation gehört. + Owner können Repository voll verwalten. end note } - @enduml diff --git a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-small copy.puml b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-small.puml similarity index 100% rename from docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-small copy.puml rename to docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model-small.puml diff --git a/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model.puml b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model.puml new file mode 100644 index 0000000..72a41f4 --- /dev/null +++ b/docs/technical-documentation/product/components/forgejo/repo-access-model-and-organisations/user-orgamnisation-team-entity-model.puml @@ -0,0 +1,62 @@ +@startuml +left to right direction +skinparam linetype ortho +skinparam classAttributeIconSize 0 +hide circle + +' Gruppierungen +package "Systemweite Benutzer und Rollen" { + class User { + +username + +email + +isAdmin + } + + note right of User + Kann Organisationen erstellen + Kann eigenen Namespace verwalten + Kann systemweiter Admin sein + end note +} + +package "Organisation" { + class Organisation { + +name + +visibility + } + + class Team { + +name + +permissionLevel + +canCreateRepos + } + + class OrgMember { + +role: member / owner + } + + Organisation "1" -- "0..*" Team : verwaltet > + Organisation "1" -- "0..*" OrgMember : hat Mitglieder > + User "1" -- "0..*" OrgMember : ist > + + OrgMember "1" -- "0..*" Team : gehört zu > +} + +package "Repository" { + class Repository { + +name + +visibility + +owner: User|Organisation + } + + Team "1" -- "0..*" Repository : Zugriff auf > + User "1" -- "0..*" Repository : direkte Rechte (optional) > + + note right of Repository + Teams können nur auf Repositories zugreifen, + die zur selben Organisation gehören. + Nutzer-Repos können nicht über Teams geteilt werden. + end note +} + +@enduml