Add clear permissions in plugin manager settings

pull/3094/head
Grandschtroumpf 6 years ago
parent df3ba8bf74
commit 4929db1c23
  1. 42
      src/app/components/plugin-manager-settings.js
  2. 2
      src/persmission-handler.js

@ -25,6 +25,14 @@ const css = csjs`
.permissionForm hr { .permissionForm hr {
width: 80%; width: 80%;
} }
.permissionKey {
display: flex;
justify-content: space-between;
align-items: center;
}
.permissionKey i {
cursor: pointer;
}
.checkbox { .checkbox {
display: flex; display: flex;
align-items: center; align-items: center;
@ -39,7 +47,8 @@ export class PluginManagerSettings {
openDialog () { openDialog () {
const fromLocal = window.localStorage.getItem('plugins/permissions') const fromLocal = window.localStorage.getItem('plugins/permissions')
this.permissions = JSON.parse(fromLocal || '{}') this.permissions = JSON.parse(fromLocal || '{}')
modalDialog('Plugin Manager Settings', this.settings(), this.currentSetting = this.settings(),
modalDialog('Plugin Manager Settings', this.currentSetting,
{ fn: () => this.onValidation() }, { fn: () => this.onValidation() },
) )
} }
@ -49,6 +58,23 @@ export class PluginManagerSettings {
window.localStorage.setItem('plugins/permissions', permissions) window.localStorage.setItem('plugins/permissions', permissions)
} }
/** Clear one permission from a plugin */
clearPersmission (from, to) {
if (!this.permissions[from]) return
delete this.permissions[from][to]
if (Object.keys(this.permissions[from]).length === 0) {
delete this.permissions[from]
}
yo.update(this.currentSetting, this.settings())
}
/** Clear all persmissions from a plugin */
clearAllPersmission (from) {
if (!this.permissions[from]) return
delete this.permissions[from]
yo.update(this.currentSetting, this.settings())
}
settings () { settings () {
const permissionByModule = (key, permission) => { const permissionByModule = (key, permission) => {
const permissionByPlugin = (name, plugin) => { const permissionByPlugin = (name, plugin) => {
@ -60,9 +86,12 @@ export class PluginManagerSettings {
: yo`<input onchange="${updatePermission}" type="checkbox" id="permission-${name}" aria-describedby="module ${key} ask permission for ${name}" />` : yo`<input onchange="${updatePermission}" type="checkbox" id="permission-${name}" aria-describedby="module ${key} ask permission for ${name}" />`
return yo` return yo`
<div class="form-group ${css.checkbox}"> <div class="form-group ${css.permissionKey}">
${checkbox} <div class="${css.checkbox}">
<label for="permission-${name}">Allow plugin ${name} to write on ${key}</label> ${checkbox}
<label for="permission-${name}">Allow plugin ${name} to write on ${key}</label>
</div>
<i onclick="${() => this.clearPersmission(key, name)}" class="fa fa-trash-alt"></i>
</div>` </div>`
} }
@ -72,7 +101,10 @@ export class PluginManagerSettings {
return yo` return yo`
<div> <div>
<h6>${key} :</h6> <div class="${css.permissionKey}">
<h6>${key} :</h6>
<i onclick="${() => this.clearAllPersmission(key)}" class="far fa-trash-alt"></i>
</div>
${byModule} ${byModule}
</div>` </div>`
} }

@ -42,7 +42,7 @@ export class PermissionHandler {
this.permissions = this._getFromLocal() this.permissions = this._getFromLocal()
} }
_getFromLocal() { _getFromLocal () {
const permission = localStorage.getItem('plugins/permissions') const permission = localStorage.getItem('plugins/permissions')
return permission ? JSON.parse(permission) : {} return permission ? JSON.parse(permission) : {}
} }

Loading…
Cancel
Save