Verify Path params that fall into the string bucket are supplied (#17032)

This commit is contained in:
Ian Cubbon 2023-11-12 20:02:33 -07:00 committed by GitHub
parent ec3c484ce9
commit c9f7af752f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 52 additions and 0 deletions

View File

@ -183,6 +183,10 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
{{^isDateTime}} {{^isDateTime}}
{{^isEnumOrRef}} {{^isEnumOrRef}}
{{paramName}}Param := {{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}} {{paramName}}Param := {{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}}
if {{paramName}}Param == "" {
c.errorHandler(w, r, &RequiredError{"{{baseName}}"}, nil)
return
}
{{/isEnumOrRef}} {{/isEnumOrRef}}
{{#isEnumOrRef}} {{#isEnumOrRef}}
{{paramName}}Param, err := New{{dataType}}FromValue({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}}) {{paramName}}Param, err := New{{dataType}}FromValue({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}})

View File

@ -76,6 +76,10 @@ func (c *StoreAPIController) Routes() Routes {
// DeleteOrder - Delete purchase order by ID // DeleteOrder - Delete purchase order by ID
func (c *StoreAPIController) DeleteOrder(w http.ResponseWriter, r *http.Request) { func (c *StoreAPIController) DeleteOrder(w http.ResponseWriter, r *http.Request) {
orderIdParam := chi.URLParam(r, "orderId") orderIdParam := chi.URLParam(r, "orderId")
if orderIdParam == "" {
c.errorHandler(w, r, &RequiredError{"orderId"}, nil)
return
}
result, err := c.service.DeleteOrder(r.Context(), orderIdParam) result, err := c.service.DeleteOrder(r.Context(), orderIdParam)
// If an error occurred, encode the error with the status code // If an error occurred, encode the error with the status code
if err != nil { if err != nil {

View File

@ -174,6 +174,10 @@ func (c *UserAPIController) CreateUsersWithListInput(w http.ResponseWriter, r *h
func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) { func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query() query := r.URL.Query()
usernameParam := chi.URLParam(r, "username") usernameParam := chi.URLParam(r, "username")
if usernameParam == "" {
c.errorHandler(w, r, &RequiredError{"username"}, nil)
return
}
booleanTestParam, err := parseBoolParameter( booleanTestParam, err := parseBoolParameter(
query.Get("boolean_test"), query.Get("boolean_test"),
WithParse[bool](parseBool), WithParse[bool](parseBool),
@ -195,6 +199,10 @@ func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
// GetUserByName - Get user by user name // GetUserByName - Get user by user name
func (c *UserAPIController) GetUserByName(w http.ResponseWriter, r *http.Request) { func (c *UserAPIController) GetUserByName(w http.ResponseWriter, r *http.Request) {
usernameParam := chi.URLParam(r, "username") usernameParam := chi.URLParam(r, "username")
if usernameParam == "" {
c.errorHandler(w, r, &RequiredError{"username"}, nil)
return
}
result, err := c.service.GetUserByName(r.Context(), usernameParam) result, err := c.service.GetUserByName(r.Context(), usernameParam)
// If an error occurred, encode the error with the status code // If an error occurred, encode the error with the status code
if err != nil { if err != nil {
@ -275,6 +283,10 @@ func (c *UserAPIController) LogoutUser(w http.ResponseWriter, r *http.Request) {
// UpdateUser - Updated user // UpdateUser - Updated user
func (c *UserAPIController) UpdateUser(w http.ResponseWriter, r *http.Request) { func (c *UserAPIController) UpdateUser(w http.ResponseWriter, r *http.Request) {
usernameParam := chi.URLParam(r, "username") usernameParam := chi.URLParam(r, "username")
if usernameParam == "" {
c.errorHandler(w, r, &RequiredError{"username"}, nil)
return
}
userParam := User{} userParam := User{}
d := json.NewDecoder(r.Body) d := json.NewDecoder(r.Body)
d.DisallowUnknownFields() d.DisallowUnknownFields()

View File

@ -77,6 +77,10 @@ func (c *StoreAPIController) Routes() Routes {
func (c *StoreAPIController) DeleteOrder(w http.ResponseWriter, r *http.Request) { func (c *StoreAPIController) DeleteOrder(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r) params := mux.Vars(r)
orderIdParam := params["orderId"] orderIdParam := params["orderId"]
if orderIdParam == "" {
c.errorHandler(w, r, &RequiredError{"orderId"}, nil)
return
}
result, err := c.service.DeleteOrder(r.Context(), orderIdParam) result, err := c.service.DeleteOrder(r.Context(), orderIdParam)
// If an error occurred, encode the error with the status code // If an error occurred, encode the error with the status code
if err != nil { if err != nil {

View File

@ -175,6 +175,10 @@ func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r) params := mux.Vars(r)
query := r.URL.Query() query := r.URL.Query()
usernameParam := params["username"] usernameParam := params["username"]
if usernameParam == "" {
c.errorHandler(w, r, &RequiredError{"username"}, nil)
return
}
booleanTestParam, err := parseBoolParameter( booleanTestParam, err := parseBoolParameter(
query.Get("boolean_test"), query.Get("boolean_test"),
WithParse[bool](parseBool), WithParse[bool](parseBool),
@ -197,6 +201,10 @@ func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
func (c *UserAPIController) GetUserByName(w http.ResponseWriter, r *http.Request) { func (c *UserAPIController) GetUserByName(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r) params := mux.Vars(r)
usernameParam := params["username"] usernameParam := params["username"]
if usernameParam == "" {
c.errorHandler(w, r, &RequiredError{"username"}, nil)
return
}
result, err := c.service.GetUserByName(r.Context(), usernameParam) result, err := c.service.GetUserByName(r.Context(), usernameParam)
// If an error occurred, encode the error with the status code // If an error occurred, encode the error with the status code
if err != nil { if err != nil {
@ -246,6 +254,10 @@ func (c *UserAPIController) LogoutUser(w http.ResponseWriter, r *http.Request) {
func (c *UserAPIController) UpdateUser(w http.ResponseWriter, r *http.Request) { func (c *UserAPIController) UpdateUser(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r) params := mux.Vars(r)
usernameParam := params["username"] usernameParam := params["username"]
if usernameParam == "" {
c.errorHandler(w, r, &RequiredError{"username"}, nil)
return
}
userParam := User{} userParam := User{}
d := json.NewDecoder(r.Body) d := json.NewDecoder(r.Body)
d.DisallowUnknownFields() d.DisallowUnknownFields()

View File

@ -76,6 +76,10 @@ func (c *StoreAPIController) Routes() Routes {
// DeleteOrder - Delete purchase order by ID // DeleteOrder - Delete purchase order by ID
func (c *StoreAPIController) DeleteOrder(w http.ResponseWriter, r *http.Request) { func (c *StoreAPIController) DeleteOrder(w http.ResponseWriter, r *http.Request) {
orderIdParam := chi.URLParam(r, "orderId") orderIdParam := chi.URLParam(r, "orderId")
if orderIdParam == "" {
c.errorHandler(w, r, &RequiredError{"orderId"}, nil)
return
}
result, err := c.service.DeleteOrder(r.Context(), orderIdParam) result, err := c.service.DeleteOrder(r.Context(), orderIdParam)
// If an error occurred, encode the error with the status code // If an error occurred, encode the error with the status code
if err != nil { if err != nil {

View File

@ -174,6 +174,10 @@ func (c *UserAPIController) CreateUsersWithListInput(w http.ResponseWriter, r *h
func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) { func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query() query := r.URL.Query()
usernameParam := chi.URLParam(r, "username") usernameParam := chi.URLParam(r, "username")
if usernameParam == "" {
c.errorHandler(w, r, &RequiredError{"username"}, nil)
return
}
booleanTestParam, err := parseBoolParameter( booleanTestParam, err := parseBoolParameter(
query.Get("boolean_test"), query.Get("boolean_test"),
WithParse[bool](parseBool), WithParse[bool](parseBool),
@ -195,6 +199,10 @@ func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
// GetUserByName - Get user by user name // GetUserByName - Get user by user name
func (c *UserAPIController) GetUserByName(w http.ResponseWriter, r *http.Request) { func (c *UserAPIController) GetUserByName(w http.ResponseWriter, r *http.Request) {
usernameParam := chi.URLParam(r, "username") usernameParam := chi.URLParam(r, "username")
if usernameParam == "" {
c.errorHandler(w, r, &RequiredError{"username"}, nil)
return
}
result, err := c.service.GetUserByName(r.Context(), usernameParam) result, err := c.service.GetUserByName(r.Context(), usernameParam)
// If an error occurred, encode the error with the status code // If an error occurred, encode the error with the status code
if err != nil { if err != nil {
@ -243,6 +251,10 @@ func (c *UserAPIController) LogoutUser(w http.ResponseWriter, r *http.Request) {
// UpdateUser - Updated user // UpdateUser - Updated user
func (c *UserAPIController) UpdateUser(w http.ResponseWriter, r *http.Request) { func (c *UserAPIController) UpdateUser(w http.ResponseWriter, r *http.Request) {
usernameParam := chi.URLParam(r, "username") usernameParam := chi.URLParam(r, "username")
if usernameParam == "" {
c.errorHandler(w, r, &RequiredError{"username"}, nil)
return
}
userParam := User{} userParam := User{}
d := json.NewDecoder(r.Body) d := json.NewDecoder(r.Body)
d.DisallowUnknownFields() d.DisallowUnknownFields()