parse notification example docs javascript parse.com user-roles cloud-code

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''); } });