Alberto,
Still figuring things out, but what I have so far looks a bit like this:
User.js:
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
unique: true
},
roles: {
collection: 'role',
via: 'users'
},
permissions: {
collection: 'permission',
via: 'users'
}
};
Role.js:
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
unique: true
},
users: {
collection: 'user',
via: 'roles'
},
roles: {
collection: 'role',
via: 'roles'
},
permissions: {
collection: 'permission',
via: 'roles'
}
}
};
Permission.js:
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
unique: true
},
subject: {
type: 'string'
},
action: {
type: 'string'
}
users: {
collection: 'user',
via: 'permissions'
},
roles: {
collection: 'role',
via: 'permissions'
}
}
};
This is just the basic schema minus the authentication stuff. Most of the actual logic I have yet to work out, but I have an `isAuthenticated` and a stubbed `isAuthorized` policy that apply to all routes, and only allow unauthenticated access to the routes related to logging in, password reset, etc.
One issue seems to be that associations are only populated 1 level deep, so I can't easily get to a user's permissions via their roles.
Logan