In Homeworker werden alle Zugriffsberechtigungen über Permissions gelöst. Hierbei können
verschiedensten Zielgruppen (sog. target
) eine Freigabe/Berechtigung für einen Inhalt
(resource
) erteilen.
Um Freigaben verwalten zu können, muss der Benutzer eine Freigabe mit is_admin
haben.
Inhalt | Feldname | API-Endpunkt |
---|---|---|
Unterrichtsfach | lesson_id |
/api/v2/lessons |
Chats | chat_id |
/api/v2/chats |
Unterrichtsinhalt | lesson_comment_id |
/api/v2/lesson_contents |
Hausaufgaben | todo_id |
/api/v2/todos |
(Bald) Schwarzes Brett | announcement_id |
/api/v2/news |
(Bald) Dateien | file_id |
/api/v2/files |
Unter Targets sind alle Zielgruppen mit mit Ihrer Definition gelistet.
Name | Typ | Editierbar | Beschreibung |
---|---|---|---|
is_write |
boolean |
Ja | Angabe ob die Zielgruppe den Inhalt schreiben/ändern darf |
is_admin |
boolean |
Ja | Angabe ob die Zielgruppe den Inhalt verwalten darf (andere Zielgruppen entfernen/hinzufügen) |
given_by_user_id |
int , null
|
Nein | ID des Benutzers welcher die Freigabe erteilt hat |
given_at |
string |
Nein | Datetime, wann die freigabe erteilt wurde |
target.targets_multiple_users |
boolean |
Nein | Gibt an ob die ausgewählte Zielgruppe aus mehreren Benutzern bestehen kann |
/api/v2/permissions
Der Benutzer muss Admin für die hinterlegte Resource sein, damit er Berechtigungen hinzufügen darf.
Anfrage:
{
"resource_ids": {
"todo_id": 23
},
"target_ids": {
"user_id": 5
},
"is_write": true,
"is_admin": false
}
Antwort:
{
"id": 857597,
"resource_ids": {
"todo_id": 23
},
"target": {
"ids": {
"user_id": 5
},
"type": "Benutzer",
"name": "Max Müller",
"display_name": "Benutzer: Max Müller",
"image": "https://www.gravatar.com/avatar/226ef2be0bd9b4648f5b8b1758376c9d?s=64&d=mp",
"targets_multiple_users": false
},
"is_write": true,
"is_admin": false,
"given_at": "2020-12-17T15:46:44+01:00",
"given_by_user_id": 46
}
/api/v2/permissions
Der Benutzer braucht eine Berechtigung für die Resource, um die Berechtigungen einsehen zu können.
Benötigt eine genauere Angabe einer Resource: Als GET-Parameter können alle IDs der Resourcen
verwendet werden.
z.B. GET /api/v2/permissions?todo_id=23
um die Berechtigungen für die Hausaufgabe mit der ID 23
abzurufen.
Antwort:
[
{
"id": 857597,
"resource_ids": {
"todo_id": 23
},
"target": {
"ids": {
"user_id": 5
},
"type": "Benutzer",
"name": "Max Müller",
"display_name": "Benutzer: Max Müller",
"image": "https://www.gravatar.com/avatar/226ef2be0bd9b4648f5b8b1758376c9d?s=64&d=mp",
"targets_multiple_users": false
},
"is_write": true,
"is_admin": false,
"given_at": "2020-12-17T15:46:44+01:00",
"given_by_user_id": 46
},
...truncated
]
/api/v2/permissions/:permission_id
Gibt eine bestimmte Berechtigung zurück.
Antwort:
{
"id": 857597,
"resource_ids": {
"todo_id": 23
},
"target": {
"ids": {
"user_id": 5
},
"type": "Benutzer",
"name": "Max Müller",
"display_name": "Benutzer: Max Müller",
"image": "https://www.gravatar.com/avatar/226ef2be0bd9b4648f5b8b1758376c9d?s=64&d=mp",
"targets_multiple_users": false
},
"is_write": true,
"is_admin": false,
"given_at": "2020-12-17T15:46:44+01:00",
"given_by_user_id": 46
}
/api/v2/permissions/:permission_id
Der Benutzer muss Admin für die hinterlegte Resource sein, damit er eine Berechtigung für diese bearbeiten kann.
Anfrage:
{
"is_write": false,
"is_admin": true
}
Antwort:
{
"id": 857597,
"resource_ids": {
"todo_id": 23
},
"target": {
"ids": {
"user_id": 5
},
"type": "Benutzer",
"name": "Max Müller",
"display_name": "Benutzer: Max Müller",
"image": "https://www.gravatar.com/avatar/226ef2be0bd9b4648f5b8b1758376c9d?s=64&d=mp",
"targets_multiple_users": false
},
"is_write": false,
"is_admin": true,
"given_at": "2020-12-17T15:46:44+01:00",
"given_by_user_id": 46
}
/api/v2/permissions/:permission_id
Der Benutzer muss Admin für die hinterlegte Resource sein, damit er eine Berechtigung
für diese löschen kann.
Entfernt eine Berechtigung. Wenn die letzte Freigabe mit is_admin
entfernt wird,
wird die betroffene Resoure auch gelöscht, da diese nicht mehr verwaltet werden kann.