I have a problem with the roles of Sync_gateway
.
My sync_function
throws an missing role
error at requireRole("adminSync");
.
I'm accessing with user admin1 that is configured as it follows:
"name": "admin1",
"all_channels": {},
"passwordhash_bcrypt": "**************",
"explicit_roles": {
"adminSync": 1
},
"rolesSince": {
"adminSync": 1
}
Also I have the role configured as:
{
"name": "adminSync",
"admin_channels": {
"CH_HORAS": 1,
"CH_PERSONAS": 1,
"CH_PROYECTOS": 1
},
"all_channels": {
"CH_HORAS": 1,
"CH_PERSONAS": 1,
"CH_PROYECTOS": 1
}
}
Any idea of this error??
Thanks.
Re, I found out what was wrong,
The variable realUserCtx.roles is a map, so according to the requireRole(..) which needs to compare two arrays, it always return false.
So I needed to change the source code of src/channels/sync_runner.go to convert this map into an array before the comparison.
function mapToArray(mapObject){
var _array = [];
if(mapObject){
for (var property in mapObject) {
_array.push(property);
}
}
return _array;
}
then..
function requireRole(roles) {
...
if (!anyInArray(mapToArray(realUserCtx.roles), roles))
}
If you need more explanations you can contact me in private message. Good luck
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With