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