mirror of
https://github.com/portainer/portainer.git
synced 2025-07-19 13:29:41 +02:00
* chore(project): install prettier and lint-staged * chore(project): apply prettier to html too * chore(project): git ignore eslintcache * chore(project): add a comment about format script * chore(prettier): update printWidth * chore(prettier): remove useTabs option * chore(prettier): add HTML validation * refactor(prettier): fix closing tags * feat(prettier): define angular parser for html templates * style(prettier): run prettier on codebase Co-authored-by: Anthony Lapenna <lapenna.anthony@gmail.com>
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
angular.module('portainer.extensions.rbac').directive('authorization', [
|
|
'Authentication',
|
|
'ExtensionService',
|
|
'$async',
|
|
function (Authentication, ExtensionService, $async) {
|
|
async function linkAsync(scope, elem, attrs) {
|
|
elem.hide();
|
|
try {
|
|
const rbacEnabled = await ExtensionService.extensionEnabled(ExtensionService.EXTENSIONS.RBAC);
|
|
if (!rbacEnabled) {
|
|
elem.show();
|
|
return;
|
|
}
|
|
} catch (err) {
|
|
elem.show();
|
|
return;
|
|
}
|
|
var authorizations = attrs.authorization.split(',');
|
|
for (var i = 0; i < authorizations.length; i++) {
|
|
authorizations[i] = authorizations[i].trim();
|
|
}
|
|
|
|
var hasAuthorizations = Authentication.hasAuthorizations(authorizations);
|
|
|
|
if (hasAuthorizations) {
|
|
elem.show();
|
|
} else if (!hasAuthorizations && elem[0].tagName === 'A') {
|
|
elem.show();
|
|
elem.addClass('portainer-disabled-link');
|
|
}
|
|
}
|
|
|
|
return {
|
|
restrict: 'A',
|
|
link: function (scope, elem, attrs) {
|
|
return $async(linkAsync, scope, elem, attrs);
|
|
},
|
|
};
|
|
},
|
|
]);
|