Merge pull request #1989 from ethereum/issue#1988-clear_permission

Issue#1988 clear permission
pull/1/head
yann300 6 years ago committed by GitHub
commit ebf52174f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 42
      src/app/components/plugin-manager-settings.js
  2. 7
      src/persmission-handler.js

@ -25,6 +25,14 @@ const css = csjs`
.permissionForm hr {
width: 80%;
}
.permissionKey {
display: flex;
justify-content: space-between;
align-items: center;
}
.permissionKey i {
cursor: pointer;
}
.checkbox {
display: flex;
align-items: center;
@ -39,7 +47,8 @@ export class PluginManagerSettings {
openDialog () {
const fromLocal = window.localStorage.getItem('plugins/permissions')
this.permissions = JSON.parse(fromLocal || '{}')
modalDialog('Plugin Manager Settings', this.settings(),
this.currentSetting = this.settings()
modalDialog('Plugin Manager Settings', this.currentSetting,
{ fn: () => this.onValidation() },
)
}
@ -49,6 +58,23 @@ export class PluginManagerSettings {
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 () {
const permissionByModule = (key, permission) => {
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}" />`
return yo`
<div class="form-group ${css.checkbox}">
${checkbox}
<label for="permission-${name}">Allow plugin ${name} to write on ${key}</label>
<div class="form-group ${css.permissionKey}">
<div class="${css.checkbox}">
${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>`
}
@ -72,7 +101,10 @@ export class PluginManagerSettings {
return yo`
<div>
<h6>${key} :</h6>
<div class="${css.permissionKey}">
<h6>${key} :</h6>
<i onclick="${() => this.clearAllPersmission(key)}" class="far fa-trash-alt"></i>
</div>
${byModule}
</div>`
}

@ -39,8 +39,12 @@ function notAllowWarning (from, to) {
export class PermissionHandler {
constructor () {
this.permissions = this._getFromLocal()
}
_getFromLocal () {
const permission = localStorage.getItem('plugins/permissions')
this.permissions = permission ? JSON.parse(permission) : {}
return permission ? JSON.parse(permission) : {}
}
persistPermissions () {
@ -101,6 +105,7 @@ export class PermissionHandler {
* @returns {Promise<boolean>}
*/
async askPermission (from, to) {
this.permissions = this._getFromLocal()
if (!this.permissions[to.name]) this.permissions[to.name] = {}
if (!this.permissions[to.name][from.name]) return this.openPermission(from, to)

Loading…
Cancel
Save