Reputation: 782
I have an array with permissions from Facebook and an array of the permissions that the user shouldve given:
window.FB.api('/me/permissions', function(perm){
if(perm){
var given_permissions = _.keys(perm['data'][0];
var needed_permissions = ["publish_stream", "email"];
//now check if given permissions contains needed permissions
}
}
Now I want to compare if all the needed_permissions
are in given_permissions
, in an underscore savvy way (without looping two arrays myself and compare values). I saw a _.include
method, but this compares an array with a value. I want to return true if all the permissions are available and else a false. I was looking for a nice single line call if possible.
The reason for this is, that FB.login
returns true even if the user chooses to cancel the extended permissions. So I need to doublecheck this.
Upvotes: 8
Views: 11294
Reputation: 652
Late answer but this works for me: _.isEqual(given_permissions, needed_permissions);
Upvotes: 2
Reputation: 434645
You could use _.difference
to see if removing the given permissions from your required permissions leaves anything behind:
var diff = _(needed_permissions).difference(given_permissions)
if(diff.length > 0)
// Some permissions were not granted
A nice side effect of this is that you get the missing permissions in diff
in case you want to tell them what's wrong.
Upvotes: 18
Reputation: 5207
How about this?
_.all(needed_permissions, function(v){
return _.include(given_permissions, v);
});
Upvotes: 5