fixed queries and added change permissions

This commit is contained in:
2024-05-23 02:31:47 +03:00
parent 106b7326f2
commit 01eedc6246
2 changed files with 44 additions and 5 deletions

View File

@@ -609,6 +609,7 @@ func (con Connection) UpdateServer(ctx *gin.Context) {
if err != nil {
ctx.AbortWithError(500, err)
return
}
updateOperation := bson.M{}
@@ -790,6 +791,34 @@ func (con Connection) GetServerUserPermissions(ctx *gin.Context) {
ctx.JSON(200, serverData.UserPermissions[claims.(*auth.AuthClaims).Username])
}
type SetServerUserPermissionsRequest struct {
Username string
Permissions models.Permission
}
func (con Connection) SetServerUserPermissions(ctx *gin.Context) {
server_id := ctx.Param("server_id")
if server_id == "" {
ctx.AbortWithStatus(500)
return
}
var request SetServerUserPermissionsRequest
err := json.NewDecoder(ctx.Request.Body).Decode(&request)
if err != nil {
ctx.AbortWithError(500, err)
return
}
_, err = con.databaseConnection.Database("Backend").Collection("Servers").UpdateOne(context.TODO(), bson.D{{Key: "Id", Value: server_id}}, bson.D{{Key: "$set", Value: bson.D{{Key: fmt.Sprintf("UserPermissions.%s", request.Username), Value: request.Permissions}}}})
if err != nil {
ctx.AbortWithError(500, err)
return
}
ctx.JSON(200, "OK")
}
func LoadGroup(group *gin.RouterGroup, mongo_client *mongo.Client, config models.GlobalConfig) {
apiClient, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
if err != nil {
@@ -808,4 +837,5 @@ func LoadGroup(group *gin.RouterGroup, mongo_client *mongo.Client, config models
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.GET("/:server_id/permissions", auth.AuthorizedTo(models.Browse, connection.serverAuthorized(models.Admin)), connection.GetServerUserPermissions)
group.POST("/:server_id/permissions", auth.AuthorizedTo(models.Browse, connection.serverAuthorized(models.Admin)), connection.SetServerUserPermissions)
}