diff --git a/servers/servers.go b/servers/servers.go index a70ca93..93de825 100644 --- a/servers/servers.go +++ b/servers/servers.go @@ -758,6 +758,24 @@ func (con Connection) serverAuthorized(permissions models.Permission) func(*gin. } } +func (con Connection) GetServerUserPermissions(ctx *gin.Context) { + claims, exists := ctx.Get("claims") + if !exists { + ctx.AbortWithStatus(500) + return + } + + server_id := ctx.Param("server_id") + if server_id == "" { + ctx.AbortWithStatus(500) + return + } + + var serverData models.ServerData + con.databaseConnection.Database("Backend").Collection("Servers").FindOne(context.TODO(), bson.D{{Key: "Id", Value: server_id}}).Decode(&serverData) + ctx.JSON(200, serverData.UserPermissions[claims.(*auth.AuthClaims).Username]) +} + func LoadGroup(group *gin.RouterGroup, mongo_client *mongo.Client, config models.GlobalConfig) { apiClient, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation()) if err != nil { @@ -775,4 +793,5 @@ func LoadGroup(group *gin.RouterGroup, mongo_client *mongo.Client, config models group.GET("/:server_id/attach", auth.AuthorizedTo(models.RunCommand, connection.serverAuthorized(models.RunCommand)), connection.AttachServer) group.PATCH("/:server_id", auth.AuthorizedTo(models.Admin, connection.serverAuthorized(models.Admin)), connection.UpdateServer) group.POST("/:server_id/browse", auth.AuthorizedTo(models.Browse, connection.serverAuthorized(models.Admin)), connection.BrowseServer) + group.POST("/:server_id/permissions", auth.AuthorizedTo(models.Browse, connection.serverAuthorized(models.Admin)), connection.GetServerUserPermissions) }