1window.angular && (function(angular) {
2  'use strict';
3
4  /**
5   * Role table
6   * Table of privilege role descriptions
7   */
8  angular.module('app.accessControl').directive('roleTable', [
9    '$sce',
10    function($sce) {
11      return {
12        restrict: 'E',
13        template: require('./role-table.html'),
14        controllerAs: 'roleTableCtrl',
15        controller: function() {
16          // TODO: This is a workaround to render the checkmark svg icon
17          // Would eventually like to enhance <bmc-table> component to
18          // compile custom directives as table items
19          const svg = require('../../assets/icons/icon-check.svg');
20          const check =
21              $sce.trustAsHtml(`<span class="icon__check-mark">${svg}<span>`);
22
23          this.tableHeader = [
24            {label: ''}, {label: 'Admin'}, {label: 'Operator'}, {label: 'User'},
25            {label: 'Callback'}
26          ];
27
28          // TODO: When API changed from D-Bus to Redfish, 'Operator' role
29          // should have 'Configure components managed by this service'
30          // privilege checked
31          // TODO: When 'Operator' and 'User' roles have ability to change
32          // own account's passwords, should have 'Update password for
33          // current user account' privilege checked
34          // TODO: Update Callback privileges when backend removes privileges
35          // for Callback role.
36          this.tableData = [
37            {
38              uiData: [
39                'Configure components managed by this service', check, '', '',
40                ''
41              ]
42            },
43            {uiData: ['Configure manager resources', check, '', '', '']},
44            {
45              uiData: [
46                'Update password for current user account', check, '', '', ''
47              ]
48            },
49            {uiData: ['Configure users and their accounts', check, '', '', '']},
50            {
51              uiData: [
52                'Log in to the service and read resources', check, check, check,
53                check
54              ]
55            },
56            {uiData: ['IPMI access point', check, check, check, check]},
57            {uiData: ['Redfish access point', check, check, check, check]},
58            {uiData: ['SSH access point', check, check, check, check]},
59            {uiData: ['WebUI access point', check, check, check, check]},
60          ];
61
62          this.isCollapsed = true;
63          this.onClick = () => {
64            this.isCollapsed = !this.isCollapsed;
65          };
66        }
67      };
68    }
69  ]);
70})(window.angular);
71