90 lines
2.5 KiB
JavaScript
90 lines
2.5 KiB
JavaScript
import { PrivilegesManager } from '@/services/privilegesManager';
|
|
import template from '%/directives/privileges-management-modal.pug';
|
|
|
|
class PrivilegesManagementModalCtrl {
|
|
/* @ngInject */
|
|
constructor(
|
|
$timeout,
|
|
$element,
|
|
privilegesManager,
|
|
authManager,
|
|
passcodeManager,
|
|
) {
|
|
this.$element = $element;
|
|
this.$timeout = $timeout;
|
|
this.privilegesManager = privilegesManager;
|
|
this.hasPasscode = passcodeManager.hasPasscode();
|
|
this.hasAccount = !authManager.offline();
|
|
this.reloadPrivileges();
|
|
}
|
|
|
|
displayInfoForCredential(credential) {
|
|
const info = this.privilegesManager.displayInfoForCredential(credential);
|
|
if (credential === PrivilegesManager.CredentialLocalPasscode) {
|
|
info.availability = this.hasPasscode;
|
|
} else if (credential === PrivilegesManager.CredentialAccountPassword) {
|
|
info.availability = this.hasAccount;
|
|
} else {
|
|
info.availability = true;
|
|
}
|
|
return info;
|
|
}
|
|
|
|
displayInfoForAction(action) {
|
|
return this.privilegesManager.displayInfoForAction(action).label;
|
|
}
|
|
|
|
isCredentialRequiredForAction(action, credential) {
|
|
if (!this.privileges) {
|
|
return false;
|
|
}
|
|
return this.privileges.isCredentialRequiredForAction(action, credential);
|
|
}
|
|
|
|
async clearSession() {
|
|
await this.privilegesManager.clearSession();
|
|
this.reloadPrivileges();
|
|
}
|
|
|
|
async reloadPrivileges() {
|
|
this.availableActions = this.privilegesManager.getAvailableActions();
|
|
this.availableCredentials = this.privilegesManager.getAvailableCredentials();
|
|
const sessionEndDate = await this.privilegesManager.getSessionExpirey();
|
|
this.sessionExpirey = sessionEndDate.toLocaleString();
|
|
this.sessionExpired = new Date() >= sessionEndDate;
|
|
this.credentialDisplayInfo = {};
|
|
for (const cred of this.availableCredentials) {
|
|
this.credentialDisplayInfo[cred] = this.displayInfoForCredential(cred);
|
|
}
|
|
const privs = await this.privilegesManager.getPrivileges();
|
|
this.$timeout(() => {
|
|
this.privileges = privs;
|
|
});
|
|
}
|
|
|
|
checkboxValueChanged(action, credential) {
|
|
this.privileges.toggleCredentialForAction(action, credential);
|
|
this.privilegesManager.savePrivileges();
|
|
}
|
|
|
|
cancel() {
|
|
this.dismiss();
|
|
this.onCancel && this.onCancel();
|
|
}
|
|
|
|
dismiss() {
|
|
this.$element.remove();
|
|
}
|
|
}
|
|
|
|
export class PrivilegesManagementModal {
|
|
constructor() {
|
|
this.restrict = 'E';
|
|
this.template = template;
|
|
this.controller = PrivilegesManagementModalCtrl;
|
|
this.controllerAs = 'ctrl';
|
|
this.bindToController = true;
|
|
this.scope = {};
|
|
}
|
|
}
|