rework of permissions needed

This commit is contained in:
2026-04-23 20:52:14 +02:00
parent 8aaa27a6dc
commit 9cb05e7155
2 changed files with 90 additions and 0 deletions
+46
View File
@@ -11,6 +11,15 @@ import (
"github.com/google/uuid"
)
func hasHubUserPermission(user *types.HubUser, hub *types.Hub, permission types.RolePermission) bool {
for _, roleId := range user.Roles {
if role, ok := hub.Roles[roleId]; ok && role.HasPermission(permission) {
return true
}
}
return false
}
func HandleHubCreate(response http.ResponseWriter, request *http.Request) {
if !validCheckWithResponseOnFail(&response, request, normal) {
return
@@ -85,3 +94,40 @@ func HandleHubCreate(response http.ResponseWriter, request *http.Request) {
response.WriteHeader(http.StatusCreated)
response.Write([]byte(hub.Id.String()))
}
func HandleHubDelete(response http.ResponseWriter, request *http.Request) {
if !validCheckWithResponseOnFail(&response, request, normal) {
return
}
ctx := request.Context()
_, hubUser, hub, err := getHubUserIfValidWithResponseOnFail(ctx, response, request.Header.Get("token"), request.Header.Get("hubid"))
if err != nil {
return
}
if !hasHubUserPermission(hubUser, hub, types.PermissionRemoveHub) {
http.Error(response, "forbidden", http.StatusForbidden)
return
}
if err := postgresql.HubDelete(ctx, hub); err != nil {
http.Error(response, "internal server error", http.StatusInternalServerError)
return
}
cache.DeleteHub(hub)
response.WriteHeader(http.StatusOK)
}
func HandleHubGet(response http.ResponseWriter, request *http.Request) {
if !validCheckWithResponseOnFail(&response, request, normal) {
return
}
ctx := request.Context()
_, _, hub, err := getHubUserIfValidWithResponseOnFail(ctx, response, request.Header.Get("token"), request.Header.Get("hubid"))
if err != nil {
return
}
}