javascript - notification - Verifique si el usuario tiene un rol-Parse Cloud Code
parse server notifications (2)
Escribir una función Parse Cloud (que usa Parse Javascript SDK ) y tengo problemas para verificar si el usuario actual tiene la función "Admin". Estoy mirando la vista web de la clase Rol y existe un rol con el nombre "Administrador". Si hago clic en "Ver relaciones" para los usuarios, se muestra el usuario actual. Dudo que debería importar, pero "Administrador" es el único rol y el usuario actual es el único usuario con un rol. Por último, la función "Admin" tiene una ACL de lectura pública, por lo que tampoco debería causar ningún problema.
El código es el siguiente:
...
var queryRole = new Parse.Query(Parse.Role);
queryRole.equalTo(''name'', ''Admin'');
queryRole.equalTo("users", Parse.User.current());
queryRole.first({
success: function(result) { // Role Object
var role = result;
role ? authorized = true : console.log(''Shiet, user not Admin'');
},
error: function(error) {
console.log("Bruh, queryRole error");
}
})
console.log(''After test: Auth = '' + authorized);
if (!authorized) {
response.error("You ain''t no admin, measly user");
return;
}
...
Esto da como resultado lo siguiente en el registro:
Antes de la prueba: Auth = falso
Después de la prueba: Auth = falso
Dale una oportunidad:
var authorized = false;
console.log(''Before test: Auth = '' + authorized);
var queryRole = new Parse.Query(Parse.Role);
queryRole.equalTo(''name'', ''Admin'');
queryRole.first({
success: function(result) { // Role Object
console.log("Okay, that''s a start... in success 1 with results: " + result);
var role = result;
var adminRelation = new Parse.Relation(role, ''users'');
var queryAdmins = adminRelation.query();
queryAdmins.equalTo(''objectId'', Parse.User.current().id);
queryAdmins.first({
success: function(result) { // User Object
var user = result;
user ? authorized = true : console.log(''Shiet, user not Admin'');
}
});
},
error: function(error) {
console.log("Bruh, can''t find the Admin role");
}
}).then(function() {
console.log(''After test: Auth = '' + authorized);
});
Tengo una solución más simple, pruébala:
var adminRoleQuery = new Parse.Query(Parse.Role);
adminRoleQuery.equalTo(''name'', ''admin'');
adminRoleQuery.equalTo(''users'', req.user);
return adminRoleQuery.first().then(function(adminRole) {
if (!adminRole) {
throw new Error(''Not an admin'');
}
});