Skip to content

Instantly share code, notes, and snippets.

@mctep
Created August 7, 2014 13:16
Show Gist options
  • Save mctep/6b270dc2e7dab4ab6295 to your computer and use it in GitHub Desktop.
Save mctep/6b270dc2e7dab4ab6295 to your computer and use it in GitHub Desktop.
REST resources by permissions
// Update user by manager
router.put('/users/:id')
.use(access.perm('manager'))
.use(schema.validate({
type: 'object',
properties: {
password: {
type: 'string',
minLength: 6,
maxLength: 255,
pattern: '/^[a-z_0-9-=!@#$%^&*()_+~]+$/i'
},
roles: {
type: 'array',
uniqueItems: true
}
},
additionalProperties: false
})
.use(Users.update)
.use(schema.filter({
type: 'object',
properties: {
id: { type: 'integer' },
login: { type: 'string' }
roles: { type: 'array' },
lastlogin: { type: 'date' }
},
additionalProperties: false
}))
.use(send);
// Update user by client
router.put('/users/:id')
.use(access.perm('client'))
.use(access.uid('id'))
.use(schema.validate({
type: 'object',
properties: {
password: {
type: 'string',
minLength: 6,
maxLength: 255,
pattern: '/^[a-z_0-9-=!@#$%^&*()_+~]+$/i'
}
}
}))
.use(Users.update)
.use(schema.filter({
type: 'object',
properties: {
id: { type: 'integer' },
login: { type: 'string' }
roles: { type: 'array' },
lastlogin: { type: 'date' }
},
additionalProperties: false
}))
.use(send);
// Create order by client
router.post('/users/:id/orders')
.use(access.perm('client'))
.use(access.uid('id'))
.use(schema.validate({
type: 'object',
properties: {
items: {
type: 'array',
items: {
type: {/* ... */}
}
}
}
}))
.use(function(req, res, next) {
req.body.user = req.params.id;
next();
})
.use(Orders.create)
.use(schema.filter({
type: 'object'
properties: {/* ... */}
}))
.use(send);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment