diff --git a/pkg/service/v0/validator.go b/pkg/service/v0/validator.go index 2ef5202fc0..71f426c617 100644 --- a/pkg/service/v0/validator.go +++ b/pkg/service/v0/validator.go @@ -5,6 +5,7 @@ import ( validation "github.com/go-ozzo/ozzo-validation/v4" "github.com/go-ozzo/ozzo-validation/v4/is" + merrors "github.com/micro/go-micro/v2/errors" "github.com/owncloud/ocis-settings/pkg/proto/v0" ) @@ -32,43 +33,49 @@ func validateSaveBundle(req *proto.SaveBundleRequest) error { validation.Field(&req.Bundle.DisplayName, validation.Required), validation.Field(&req.Bundle.Settings, validation.Required), ); err != nil { - return err + return merrors.FromError(err) } if err := validateResource(req.Bundle.Resource); err != nil { - return err + return merrors.FromError(err) } for i := range req.Bundle.Settings { if err := validateSetting(req.Bundle.Settings[i]); err != nil { - return err + return merrors.FromError(err) } } return nil } func validateGetBundle(req *proto.GetBundleRequest) error { - return validation.Validate(&req.BundleId, requireAccountID...) + if err := validation.Validate(&req.BundleId, requireAccountID...); err != nil { + return merrors.FromError(err) + } + return nil } func validateListBundles(req *proto.ListBundlesRequest) error { - return validation.Validate(&req.AccountUuid, requireAccountID...) + if err := validation.Validate(&req.AccountUuid, requireAccountID...); err != nil { + return merrors.FromError(err) + } + return nil } func validateAddSettingToBundle(req *proto.AddSettingToBundleRequest) error { - if err := validation.ValidateStruct( - req, - validation.Field(&req.BundleId, is.UUID), - ); err != nil { - return err + if err := validation.ValidateStruct(req, validation.Field(&req.BundleId, is.UUID)); err != nil { + return merrors.FromError(err) } return validateSetting(req.Setting) } func validateRemoveSettingFromBundle(req *proto.RemoveSettingFromBundleRequest) error { - return validation.ValidateStruct( + if err := validation.ValidateStruct( req, validation.Field(&req.BundleId, is.UUID), validation.Field(&req.SettingId, is.UUID), - ) + ); err != nil { + return merrors.FromError(err) + } + return nil } func validateSaveValue(req *proto.SaveValueRequest) error { @@ -79,11 +86,11 @@ func validateSaveValue(req *proto.SaveValueRequest) error { validation.Field(&req.Value.SettingId, is.UUID), validation.Field(&req.Value.AccountUuid, requireAccountID...), ); err != nil { - return err + return merrors.FromError(err) } if err := validateResource(req.Value.Resource); err != nil { - return err + return merrors.FromError(err) } // TODO: validate values against the respective setting. need to check if constraints of the setting are fulfilled. @@ -91,46 +98,67 @@ func validateSaveValue(req *proto.SaveValueRequest) error { } func validateGetValue(req *proto.GetValueRequest) error { - return validation.Validate(req.Id, is.UUID) + if err := validation.Validate(req.Id, is.UUID); err != nil { + return merrors.FromError(err) + } + return nil } func validateListValues(req *proto.ListValuesRequest) error { - return validation.ValidateStruct( + if err := validation.ValidateStruct( req, validation.Field(&req.BundleId, validation.When(req.BundleId != "", is.UUID)), validation.Field(&req.AccountUuid, validation.When(req.AccountUuid != "", validation.Match(regexForAccountUUID))), - ) + ); err != nil { + return merrors.FromError(err) + } + return nil } func validateListRoles(req *proto.ListBundlesRequest) error { - return validation.Validate(&req.AccountUuid, requireAccountID...) + if err := validation.Validate(&req.AccountUuid, requireAccountID...); err != nil { + return merrors.FromError(err) + } + return nil } func validateListRoleAssignments(req *proto.ListRoleAssignmentsRequest) error { - return validation.Validate(req.AccountUuid, requireAccountID...) + if err := validation.Validate(req.AccountUuid, requireAccountID...); err != nil { + return merrors.FromError(err) + } + return nil } func validateAssignRoleToUser(req *proto.AssignRoleToUserRequest) error { - return validation.ValidateStruct( + if err := validation.ValidateStruct( req, validation.Field(&req.AccountUuid, requireAccountID...), validation.Field(&req.RoleId, is.UUID), - ) + ); err != nil { + return merrors.FromError(err) + } + return nil } func validateRemoveRoleFromUser(req *proto.RemoveRoleFromUserRequest) error { - return validation.ValidateStruct( + if err := validation.ValidateStruct( req, validation.Field(&req.Id, is.UUID), - ) + ); err != nil { + return merrors.FromError(err) + } + return nil } // validateResource is an internal helper for validating the content of a resource. func validateResource(resource *proto.Resource) error { if err := validation.Validate(&resource, validation.Required); err != nil { - return err + return merrors.FromError(err) } - return validation.Validate(&resource, validation.NotIn(proto.Resource_TYPE_UNKNOWN)) + if err := validation.Validate(&resource, validation.NotIn(proto.Resource_TYPE_UNKNOWN)); err != nil { + return merrors.FromError(err) + } + return nil } // validateSetting is an internal helper for validating the content of a setting. @@ -141,7 +169,10 @@ func validateSetting(setting *proto.Setting) error { validation.Field(&setting.Id, validation.When(setting.Id != "", is.UUID)), validation.Field(&setting.Name, requireAlphanumeric...), ); err != nil { - return err + return merrors.FromError(err) } - return validateResource(setting.Resource) + if err := validateResource(setting.Resource); err != nil { + return merrors.FromError(err) + } + return nil }