Closed Taakn closed 7 years ago
Creating a reproduction would be great!
This is my code, the PROMOCODES_VIEW role is added to some, but not all existing users. I don't know if you can spot something but I'm going to try to look into this further when I get the chance (code is in Meteor.startup)
Roles.createRole('driver.admin', {unlessExists: true});
Roles.createRole('driver.driver', {unlessExists: true});
var roles = [
{name: 'RIDES_VIEW', parents: ['driver.admin']},
{name: 'RIDES_INSERT', parents: ['driver.admin']},
{name: 'RIDES_EDIT', parents: ['driver.admin']},
{name: 'RIDES_DELETE', parents: ['driver.admin']},
{name: 'VEHICLES_VIEW', parents: ['driver.admin']},
{name: 'VEHICLES_INSERT', parents: ['driver.admin']},
{name: 'VEHICLES_EDIT', parents: ['driver.admin']},
{name: 'VEHICLES_DELETE', parents: ['driver.admin']},
{name: 'ZONES_VIEW', parents: ['driver.admin']},
{name: 'ZONES_INSERT', parents: ['driver.admin']},
{name: 'ZONES_EDIT', parents: ['driver.admin']},
{name: 'ZONES_DELETE', parents: ['driver.admin']},
{name: 'DRIVERS_VIEW', parents: ['driver.admin']},
{name: 'DRIVERS_INSERT', parents: ['driver.admin']},
{name: 'DRIVERS_EDIT', parents: ['driver.admin']},
{name: 'DRIVERS_DELETE', parents: ['driver.admin']},
{name: 'SUBSCRIPTIONS_VIEW', parents: ['driver.admin']},
{name: 'SUBSCRIPTIONS_INSERT', parents: ['driver.admin']},
{name: 'SUBSCRIPTIONS_EDIT', parents: ['driver.admin']},
{name: 'SUBSCRIPTIONS_DELETE', parents: ['driver.admin']},
{name: 'DOCUMENTS_VIEW', parents: ['driver.admin']},
{name: 'DOCUMENTS_INSERT', parents: ['driver.admin']},
{name: 'DOCUMENTS_EDIT', parents: ['driver.admin']},
{name: 'DOCUMENTS_DELETE', parents: ['driver.admin']},
{name: 'DOCUMENTS_GENERATE_COMPANY', parents: ['driver.admin']},
{name: 'TRANSLATIONS_VIEW', parents: ['driver.admin']},
{name: 'TRANSLATIONS_INSERT', parents: ['driver.admin']},
{name: 'TRANSLATIONS_EDIT', parents: ['driver.admin']},
{name: 'TRANSLATIONS_DELETE', parents: ['driver.admin']},
{name: 'ACCOUNTCHARGES_VIEW', parents: ['driver.admin']},
{name: 'ACCOUNTCHARGES_INSERT', parents: ['driver.admin']},
{name: 'ACCOUNTCHARGES_EDIT', parents: ['driver.admin']},
{name: 'ACCOUNTCHARGES_DELETE', parents: ['driver.admin']},
{name: 'PARTNERS_VIEW', parents: ['driver.admin']},
{name: 'PARTNERS_INSERT', parents: ['driver.admin']},
{name: 'PARTNERS_EDIT', parents: ['driver.admin']},
{name: 'PARTNERS_DELETE', parents: ['driver.admin']},
{name: 'CLIENTS_VIEW', parents: ['driver.admin']},
{name: 'CLIENTS_INSERT', parents: ['driver.admin']},
{name: 'CLIENTS_EDIT', parents: ['driver.admin']},
{name: 'CLIENTS_DELETE', parents: ['driver.admin']},
{name: 'PASSENGERS_VIEW', parents: ['driver.admin']},
{name: 'PASSENGERS_INSERT', parents: ['driver.admin']},
{name: 'PASSENGERS_EDIT', parents: ['driver.admin']},
{name: 'PASSENGERS_DELETE', parents: ['driver.admin']},
{name: 'PROMOCODES_VIEW', parents: ['driver.admin']},
{name: 'PROMOCODES_INSERT', parents: ['driver.admin']},
{name: 'PROMOCODES_EDIT', parents: ['driver.admin']},
{name: 'PROMOCODES_DELETE', parents: ['driver.admin']},
{name: 'FAVORITEADDRESSES_VIEW', parents: ['driver.admin']},
{name: 'FAVORITEADDRESSES_INSERT', parents: ['driver.admin']},
{name: 'FAVORITEADDRESSES_EDIT', parents: ['driver.admin']},
{name: 'FAVORITEADDRESSES_DELETE', parents: ['driver.admin']},
{name: 'ORGANIZATION_VIEW', parents: ['driver.admin']},
{name: 'ORGANIZATION_EDIT', parents: ['driver.admin']},
]
for (var i=0; i<roles.length; i++) {
var role = roles[i];
Roles.createRole(role.name, {unlessExists: true});
for (var j=0; j<(role.parents).length; j++) {
Roles.addRolesToParent(role.name, (role.parents)[j]);
}
}
Hm, can you make a repository with reproduction, where this happens after it is run? Does it happen always? Ror the same roles?
There might have been a bug for one particular role. I will try to delete and recreate the roles. I didn't see anything in the logs though. But from your reaction I'm guessing you think my code is correct.
Thanks for being so quick to reply, I'll let you know what I find.
I do not see anything obviously wrong with your code, yes.
I'm closing the issue I cannot find the source of the problem might have been a one time thing. That role is still missing though but I dont have enough time to thoroughly investigate. Thanks for your help though!
There is one particular role which is missing? Which one is that?
In some cases addRolesToParent does not add new roles to existing users. I think it's an issue with _usersInRoleQuery but can't find the pattern right now. Will update if I find something