adonis-validator
v1.0.2
Published
Validator for AdonisJS
Downloads
5
Maintainers
Readme
adonis-validator
Form validator for AdonisJS. Validate form values with ease. Set custom attribute names for error messages. Validate multiple depth arrays/objects.
How to use
Install npm module:
$ adonis install adonis-validator
Register provider
Once you have installed adonis-validator, make sure to register the provider inside start/app.js
in order to make use of it.
const providers = [
'adonis-validator/providers/ValidatorProvider'
]
Using the module:
Create a validator object (saves to app/Validators
) by executing:
# change 'UserSave' to the name you wish to use
$ adonis make:validator UserSave
You can now add rules to the app/Validators/UserSave
class.
// on a single route
Route.post('/user', 'UserController.store').validator('UserSave')
// on resource routes
Route.resource('products', 'ProductController')
.validator([[['products.store', 'products.update'], 'ProductStore']])
// manual validation
Route.post('/user', ({request, response}) => {
const Validator = use('Validator')
const rules = {name: 'required', age: 'numeric|min:18'}
const validate = Validator.validate(request.only(['name', 'age']), rules)
// return json response with 400 code
if (validate.fails()) {
response.status(400).send(validate.errors)
}
})
Authorize requests
By adding a authorize()
method to your validator you can control access on an endpoint:
class UserSave {
// ..validation rules
authorize () {
return thix.ctx.user.admin ? true : false
}
}
Custom validation rules
Custom rule without asynchronicity:
const Validator = use('Validator')
Validator.registerAsync('equalsFooBar', function (value, args, attribute) {
return value === 'FooBar'
}, ':attribute does not equal FooBar')
Asynchronous rules:
const Validator = use('Validator')
Validator.registerAsync('exists', function (value, attribute, args, passes) {
// get arguments
const params = this.getParameters() // or args.split(',')
const dbTable = params[0]
const dbField = params[1] || 'id'
// query function
const fn = value instanceof Array ? 'whereIn' : 'where'
// check if exists
Database.table(dbTable)[fn](dbField, value)
.then(exists => passes(exists && exists.length > 0))
}, ':attribute does not exist')
Built With
- AdonisJS - The web framework used.
- validatorjs - validatorJS for validation rules.
Versioning
SemVer is used for versioning. For the versions available, see the tags on this repository.
Authors
- Simon Tong - Developer - simontong
License
This project is licensed under the MIT License - see the LICENSE file for details.
Changelog
- v1.0.0
- Initial release.