Sails app
This commit is contained in:
73
config/400.js
Normal file
73
config/400.js
Normal file
@@ -0,0 +1,73 @@
|
||||
/**
|
||||
* Default 400 (Bad Request) handler
|
||||
*
|
||||
* Sails will automatically respond using this middleware when a blueprint is requested
|
||||
* with missing or invalid parameters
|
||||
* (e.g. `POST /user` was used to create a user, but required parameters were missing)
|
||||
*
|
||||
* This middleware can also be invoked manually from a controller or policy:
|
||||
* res.badRequest( [validationErrors], [redirectTo] )
|
||||
*
|
||||
*
|
||||
* @param {Array|Object|String} validationErrors
|
||||
* optional errors
|
||||
* usually an array of validation errors from the ORM
|
||||
*
|
||||
* @param {String} redirectTo
|
||||
* optional URL
|
||||
* (absolute or relative, e.g. google.com/foo or /bar/baz)
|
||||
* of the page to redirect to. Usually only relevant for traditional HTTP requests,
|
||||
* since if this was triggered from an AJAX or socket request, JSON should be sent instead.
|
||||
*/
|
||||
|
||||
module.exports[400] = function badRequest(validationErrors, redirectTo, req, res) {
|
||||
|
||||
/*
|
||||
* NOTE: This function is Sails middleware-- that means that not only do `req` and `res`
|
||||
* work just like their Express equivalents to handle HTTP requests, they also simulate
|
||||
* the same interface for receiving socket messages.
|
||||
*/
|
||||
|
||||
var statusCode = 400;
|
||||
|
||||
var result = {
|
||||
status: statusCode
|
||||
};
|
||||
|
||||
// Optional validationErrors object
|
||||
if (validationErrors) {
|
||||
result.validationErrors = validationErrors;
|
||||
}
|
||||
|
||||
// For requesters expecting JSON, everything works like you would expect-- a simple JSON response
|
||||
// indicating the 400: Bad Request status with relevant information will be returned.
|
||||
if (req.wantsJSON) {
|
||||
return res.json(result, result.status);
|
||||
}
|
||||
|
||||
// For traditional (not-AJAX) web forms, this middleware follows best-practices
|
||||
// for when a user submits invalid form data:
|
||||
// i. First, a one-time-use flash variable is populated, probably a string message or an array
|
||||
// of semantic validation error objects.
|
||||
// ii. Then the user is redirected back to `redirectTo`, i.e. the URL where the bad request originated.
|
||||
// iii. There, the controller and/or view might use the flash `errors` to either display a message or highlight
|
||||
// the invalid HTML form fields.
|
||||
if (redirectTo) {
|
||||
|
||||
// Set flash message called `errors` (one-time-use in session)
|
||||
req.flash('errors', validationErrors);
|
||||
|
||||
// then redirect back to the `redirectTo` URL
|
||||
return res.redirect(redirectTo);
|
||||
}
|
||||
|
||||
|
||||
// Depending on your app's needs, you may choose to look at the Referer header here
|
||||
// and redirect back. Please do so at your own risk!
|
||||
// For security reasons, Sails does not provide this affordance by default.
|
||||
// It's safest to provide a 'redirectTo' URL and redirect there directly.
|
||||
|
||||
// If `redirectTo` was not specified, just respond w/ JSON
|
||||
return res.json(result, result.status);
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user