mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-08 13:19:58 -06:00
Make amount of users in patch configurable.
This PR changes the following: * Create an API config section for API configurables. * Add a setting `UserPatchLimit` that controls how many users can be changed in a PATCH request. * Use this setting in the API to limit the amount of users that can be changed.
This commit is contained in:
committed by
Ralf Haferkamp
parent
883d068b48
commit
49d71ea111
@@ -19,6 +19,8 @@ type Config struct {
|
||||
|
||||
HTTP HTTP `yaml:"http"`
|
||||
|
||||
API API `yaml:"api"`
|
||||
|
||||
Reva *shared.Reva `yaml:"reva"`
|
||||
TokenManager *TokenManager `yaml:"token_manager"`
|
||||
GRPCClientTLS *shared.GRPCClientTLS `yaml:"grpc_client_tls"`
|
||||
@@ -85,6 +87,11 @@ type Identity struct {
|
||||
LDAP LDAP `yaml:"ldap"`
|
||||
}
|
||||
|
||||
// API represents API configuration parameters.
|
||||
type API struct {
|
||||
UserPatchLimit int `yaml:"user_patch_limit" env:"GRAPH_USER_PATCH_LIMIT" desc:"The amount of users allowed to be changed in PATCH requests."`
|
||||
}
|
||||
|
||||
// Events combines the configuration options for the event bus.
|
||||
type Events struct {
|
||||
Endpoint string `yaml:"endpoint" env:"GRAPH_EVENTS_ENDPOINT" desc:"The address of the event system. The event system is the message queuing service. It is used as message broker for the microservice architecture. Set to a empty string to disable emitting events."`
|
||||
|
||||
@@ -30,6 +30,9 @@ func DefaultConfig() *config.Config {
|
||||
Service: config.Service{
|
||||
Name: "graph",
|
||||
},
|
||||
API: config.API{
|
||||
UserPatchLimit: 20,
|
||||
},
|
||||
Reva: shared.DefaultRevaConfig(),
|
||||
Spaces: config.Spaces{
|
||||
WebDavBase: "https://localhost:9200",
|
||||
|
||||
@@ -19,7 +19,6 @@ import (
|
||||
"github.com/go-chi/render"
|
||||
)
|
||||
|
||||
const memberRefsLimit = 20
|
||||
const memberTypeUsers = "users"
|
||||
|
||||
// GetGroups implements the Service interface.
|
||||
@@ -124,13 +123,13 @@ func (g Graph) PatchGroup(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
if memberRefs, ok := changes.GetMembersodataBindOk(); ok {
|
||||
// The spec defines a limit of 20 members maxium per Request
|
||||
if len(memberRefs) > memberRefsLimit {
|
||||
if len(memberRefs) > g.config.API.UserPatchLimit {
|
||||
logger.Debug().
|
||||
Int("number", len(memberRefs)).
|
||||
Int("limit", memberRefsLimit).
|
||||
Int("limit", g.config.API.UserPatchLimit).
|
||||
Msg("could not create group, exceeded members limit")
|
||||
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest,
|
||||
fmt.Sprintf("Request is limited to %d members", memberRefsLimit))
|
||||
fmt.Sprintf("Request is limited to %d members", g.config.API.UserPatchLimit))
|
||||
return
|
||||
}
|
||||
memberIDs := make([]string, 0, len(memberRefs))
|
||||
|
||||
Reference in New Issue
Block a user