forked from cory/tildefriends
Rigged up some UI to show and allow removing permissions that have been granted or denied by the user to an app.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3961 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
17
core/core.js
17
core/core.js
@ -222,11 +222,13 @@ async function getProcessBlob(blobId, key, options) {
|
||||
return process.app.makeFunction(['requestPermission'])(permission).then(function(value) {
|
||||
if (value == 'allow') {
|
||||
storePermission(user, options.packageOwner, options.packageName, permission, true);
|
||||
process.sendPermissions();
|
||||
return true;
|
||||
} else if (value == 'allow once') {
|
||||
return true;
|
||||
} else if (value == 'deny') {
|
||||
storePermission(user, options.packageOwner, options.packageName, permission, false);
|
||||
process.sendPermissions();
|
||||
throw Error(`Permission denied: ${permission}.`);
|
||||
} else if (value == 'deny once') {
|
||||
throw Error(`Permission denied: ${permission}.`);
|
||||
@ -322,6 +324,14 @@ async function getProcessBlob(blobId, key, options) {
|
||||
return Object.fromEntries(Object.keys(db).map(x => [x, db[x].bind(db)]));
|
||||
}
|
||||
}
|
||||
process.sendPermissions = function sendPermissions() {
|
||||
process.app.send({action: 'permissions', permissions: imports.core.permissionsGranted()});
|
||||
}
|
||||
process.resetPermission = function resetPermission(permission) {
|
||||
let user = process?.credentials?.session?.name;
|
||||
storePermission(user, options?.packageOwner, options?.packageName, permission, undefined);
|
||||
process.sendPermissions();
|
||||
}
|
||||
process.task.setImports(imports);
|
||||
process.task.activate();
|
||||
let source = await getBlobOrContent(blobId);
|
||||
@ -346,6 +356,7 @@ async function getProcessBlob(blobId, key, options) {
|
||||
resolveReady(process);
|
||||
if (process.app) {
|
||||
process.app.send({action: "ready"});
|
||||
process.sendPermissions();
|
||||
}
|
||||
await process.task.execute({name: appSourceName, source: appSource});
|
||||
} catch (error) {
|
||||
@ -759,7 +770,11 @@ function storePermission(user, packageOwner, packageName, permission, allow) {
|
||||
gGlobalSettings.userPermissions[user][packageOwner][packageName] = {};
|
||||
}
|
||||
if (gGlobalSettings.userPermissions[user][packageOwner][packageName][permission] !== allow) {
|
||||
gGlobalSettings.userPermissions[user][packageOwner][packageName][permission] = allow;
|
||||
if (allow === undefined) {
|
||||
delete gGlobalSettings.userPermissions[user][packageOwner][packageName][permission];
|
||||
} else {
|
||||
gGlobalSettings.userPermissions[user][packageOwner][packageName][permission] = allow;
|
||||
}
|
||||
setGlobalSettings(gGlobalSettings);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user