Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
web-interface.assets.39.7274e9222d07ea893176.js.map Maven / Gradle / Ivy
{"version":3,"sources":["webpack:///39.7274e9222d07ea893176.js","webpack:///./src/pages/RolesPage.jsx","webpack:///./src/components/users/RolesComponent.jsx","webpack:///./src/components/users/RoleList.jsx","webpack:///./src/components/users/EditRole.jsx","webpack:///./src/components/users/PermissionSelector.jsx"],"names":["webpackJsonp","1399","module","exports","__webpack_require__","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_react","_react2","_reactBootstrap","_RolesComponent","_RolesComponent2","_common","RolesPage","createClass","displayName","render","createElement","DocumentTitle","title","Row","Col","md","1400","_reflux","_reflux2","_immutable","_immutable2","_UserNotification","_UserNotification2","_RoleList","_RoleList2","_EditRole","_EditRole2","_PageHeader","_PageHeader2","_CombinedProvider","_CombinedProvider2","_CombinedProvider$get","get","StreamsStore","_CombinedProvider$get2","DashboardsActions","DashboardsStore","_CombinedProvider$get3","RolesStore","mixins","connect","getInitialState","roles","Set","rolesLoaded","editRole","streams","List","componentDidMount","_this","this","loadRoles","load","setState","list","_this2","then","_showCreateRole","showEditRole","_showEditRole","role","_deleteRole","_this3","window","confirm","name","getMembers","membership","users","length","error","deleteRole","_saveRole","initialName","createRole","_clearEditRole","updateRole","content","state","initialRole","dashboards","onSave","cancelEdit","actionButton","Button","bsStyle","onClick","subpage","1401","_propTypes","_propTypes2","_StoreProvider","_StoreProvider2","_PermissionsMixin","_PermissionsMixin2","CurrentUserStore","getStore","RoleList","propTypes","instanceOf","isRequired","func","_headerCellFormatter","header","className","_editButton","isPermitted","currentUser","permissions","read_only","key","bsSize","props","_deleteButton","_roleInfoFormatter","description","filterKeys","headers","DataTable","id","headerCellFormatter","sortByKey","rows","toJS","filterBy","dataRowFormatter","filterLabel","1402","_bootstrap","_PermissionSelector","_PermissionSelector2","EditRole","object","_safeRoleName","componentWillReceiveProps","newProps","_setName","ev","target","_setDescription","_updatePermissions","addedPerms","deletedPerms","subtract","union","_saveDisabled","_onSave","titleText","saveDisabled","saveDisabledAlert","Alert","style","marginBottom","marginTop","Input","type","label","onChange","required","FormGroup","ControlLabel","HelpBlock","marginRight","disabled","1403","PermissionSelector","streamItemButtons","stream","isRead","contains","isEdit","ButtonGroup","_toggleStreamReadPermissions","active","_toggleStreamEditPermissions","multiStreamButtons","streamIds","_toggleAllStreamsRead","_toggleAllStreamsEdit","dashboardItemButtons","dashboard","_toggleDashboardReadPermissions","_toggleDashboardEditPermissions","multiDashboardButtons","dashboardIds","_toggleAllDashboardsRead","_toggleAllDashboardsEdit","Tabs","defaultActiveKey","animation","Tab","eventKey","TableList","items","itemActionsFactory","headerActionsFactory","_toggleReadPermissions","of","_toggleEditPermissions","idList","added","deleted","forEach","readTarget","editTarget","add"],"mappings":"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","file":"39.7274e9222d07ea893176.js","sourcesContent":["webpackJsonp([39],{\n\n/***/ 1399:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _RolesComponent = __webpack_require__(1400);\n\nvar _RolesComponent2 = _interopRequireDefault(_RolesComponent);\n\nvar _common = __webpack_require__(49);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RolesPage = _react2.default.createClass({\n displayName: 'RolesPage',\n render: function render() {\n return _react2.default.createElement(\n _common.DocumentTitle,\n { title: 'Roles' },\n _react2.default.createElement(\n _reactBootstrap.Row,\n null,\n _react2.default.createElement(\n _reactBootstrap.Col,\n { md: 12 },\n _react2.default.createElement(_RolesComponent2.default, null)\n )\n )\n );\n }\n});\n\nexports.default = RolesPage;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1400:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _immutable = __webpack_require__(54);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _UserNotification = __webpack_require__(6);\n\nvar _UserNotification2 = _interopRequireDefault(_UserNotification);\n\nvar _RoleList = __webpack_require__(1401);\n\nvar _RoleList2 = _interopRequireDefault(_RoleList);\n\nvar _EditRole = __webpack_require__(1402);\n\nvar _EditRole2 = _interopRequireDefault(_EditRole);\n\nvar _PageHeader = __webpack_require__(279);\n\nvar _PageHeader2 = _interopRequireDefault(_PageHeader);\n\nvar _CombinedProvider = __webpack_require__(68);\n\nvar _CombinedProvider2 = _interopRequireDefault(_CombinedProvider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _CombinedProvider$get = _CombinedProvider2.default.get('Streams'),\n StreamsStore = _CombinedProvider$get.StreamsStore;\n\nvar _CombinedProvider$get2 = _CombinedProvider2.default.get('Dashboards'),\n DashboardsActions = _CombinedProvider$get2.DashboardsActions,\n DashboardsStore = _CombinedProvider$get2.DashboardsStore;\n\nvar _CombinedProvider$get3 = _CombinedProvider2.default.get('Roles'),\n RolesStore = _CombinedProvider$get3.RolesStore;\n\nexports.default = _react2.default.createClass({\n displayName: 'RolesComponent',\n\n mixins: [_reflux2.default.connect(DashboardsStore, 'dashboards')],\n getInitialState: function getInitialState() {\n return {\n roles: _immutable2.default.Set(),\n rolesLoaded: false,\n editRole: null,\n streams: _immutable2.default.List()\n };\n },\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this.loadRoles();\n StreamsStore.load(function (streams) {\n return _this.setState({ streams: _immutable2.default.List(streams) });\n });\n DashboardsActions.list();\n },\n loadRoles: function loadRoles() {\n var _this2 = this;\n\n var promise = RolesStore.loadRoles();\n promise.then(function (roles) {\n _this2.setState({ roles: _immutable2.default.Set(roles), rolesLoaded: true });\n });\n },\n _showCreateRole: function _showCreateRole() {\n this.setState({ showEditRole: true });\n },\n _showEditRole: function _showEditRole(role) {\n this.setState({ showEditRole: true, editRole: role });\n },\n _deleteRole: function _deleteRole(role) {\n var _this3 = this;\n\n // eslint-disable-next-line no-alert\n if (window.confirm('Do you really want to delete role ' + role.name + '?')) {\n RolesStore.getMembers(role.name).then(function (membership) {\n if (membership.users.length !== 0) {\n _UserNotification2.default.error('Cannot delete role ' + role.name + '. It is still assigned to ' + membership.users.length + ' users.');\n } else {\n RolesStore.deleteRole(role.name).then(_this3.loadRoles);\n }\n });\n }\n },\n _saveRole: function _saveRole(initialName, role) {\n if (initialName === null) {\n RolesStore.createRole(role).then(this._clearEditRole).then(this.loadRoles);\n } else {\n RolesStore.updateRole(initialName, role).then(this._clearEditRole).then(this.loadRoles);\n }\n },\n _clearEditRole: function _clearEditRole() {\n this.setState({ showEditRole: false, editRole: null });\n },\n render: function render() {\n var content = null;\n if (!this.state.rolesLoaded) {\n content = _react2.default.createElement(\n 'span',\n null,\n 'Loading roles...'\n );\n } else if (this.state.showEditRole) {\n content = _react2.default.createElement(_EditRole2.default, { initialRole: this.state.editRole,\n streams: this.state.streams,\n dashboards: this.state.dashboards.dashboards,\n onSave: this._saveRole,\n cancelEdit: this._clearEditRole });\n } else {\n content = _react2.default.createElement(_RoleList2.default, { roles: this.state.roles,\n showEditRole: this._showEditRole,\n deleteRole: this._deleteRole });\n }\n\n var actionButton = void 0;\n if (!this.state.showEditRole) {\n actionButton = _react2.default.createElement(\n _reactBootstrap.Button,\n { bsStyle: 'success', onClick: this._showCreateRole },\n 'Add new role'\n );\n }\n return _react2.default.createElement(\n _reactBootstrap.Row,\n null,\n _react2.default.createElement(\n _reactBootstrap.Col,\n { md: 12 },\n _react2.default.createElement(\n _PageHeader2.default,\n { title: 'Roles', subpage: true },\n _react2.default.createElement(\n 'span',\n null,\n 'Roles bundle permissions which can be assigned to multiple users at once'\n ),\n null,\n _react2.default.createElement(\n 'span',\n null,\n actionButton\n )\n ),\n content\n )\n );\n }\n});\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1401:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _immutable = __webpack_require__(54);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nvar _PermissionsMixin = __webpack_require__(167);\n\nvar _PermissionsMixin2 = _interopRequireDefault(_PermissionsMixin);\n\nvar _common = __webpack_require__(49);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CurrentUserStore = _StoreProvider2.default.getStore('CurrentUser');\n\nvar RoleList = _react2.default.createClass({\n displayName: 'RoleList',\n\n mixins: [_reflux2.default.connect(CurrentUserStore), _PermissionsMixin2.default],\n propTypes: {\n roles: _propTypes2.default.instanceOf(_immutable2.default.Set).isRequired,\n showEditRole: _propTypes2.default.func.isRequired,\n deleteRole: _propTypes2.default.func.isRequired\n },\n\n _headerCellFormatter: function _headerCellFormatter(header) {\n var className = header === 'Actions' ? 'actions' : '';\n return _react2.default.createElement(\n 'th',\n { className: className },\n header\n );\n },\n _editButton: function _editButton(role) {\n var _this = this;\n\n if (this.isPermitted(this.state.currentUser.permissions, ['roles:edit:' + role.name]) === false || role.read_only) {\n return null;\n }\n return _react2.default.createElement(\n _reactBootstrap.Button,\n { key: 'edit', bsSize: 'xsmall', bsStyle: 'info', onClick: function onClick() {\n return _this.props.showEditRole(role);\n }, title: 'Edit role' },\n 'Edit'\n );\n },\n _deleteButton: function _deleteButton(role) {\n var _this2 = this;\n\n if (this.isPermitted(this.state.currentUser.permissions, ['roles:delete:' + role.name]) === false || role.read_only) {\n return null;\n }\n return _react2.default.createElement(\n _reactBootstrap.Button,\n { key: 'delete', bsSize: 'xsmall', bsStyle: 'primary', onClick: function onClick() {\n return _this2.props.deleteRole(role);\n }, title: 'Delete role' },\n 'Delete'\n );\n },\n _roleInfoFormatter: function _roleInfoFormatter(role) {\n return _react2.default.createElement(\n 'tr',\n { key: role.name },\n _react2.default.createElement(\n 'td',\n null,\n role.name\n ),\n _react2.default.createElement(\n 'td',\n { className: 'limited' },\n role.description\n ),\n _react2.default.createElement(\n 'td',\n null,\n this._editButton(role),\n _react2.default.createElement(\n 'span',\n { key: 'space' },\n '\\xA0'\n ),\n this._deleteButton(role)\n )\n );\n },\n render: function render() {\n var filterKeys = ['name', 'description'];\n var headers = ['Name', 'Description', 'Actions'];\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(_common.DataTable, { id: 'role-list',\n className: 'table-hover',\n headers: headers,\n headerCellFormatter: this._headerCellFormatter,\n sortByKey: 'name',\n rows: this.props.roles.toJS(),\n filterBy: 'Name',\n dataRowFormatter: this._roleInfoFormatter,\n filterLabel: 'Filter Roles',\n filterKeys: filterKeys })\n );\n }\n});\n\nexports.default = RoleList;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1402:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _immutable = __webpack_require__(54);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _bootstrap = __webpack_require__(46);\n\nvar _PermissionSelector = __webpack_require__(1403);\n\nvar _PermissionSelector2 = _interopRequireDefault(_PermissionSelector);\n\nvar _PermissionsMixin = __webpack_require__(167);\n\nvar _PermissionsMixin2 = _interopRequireDefault(_PermissionsMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EditRole = _react2.default.createClass({\n displayName: 'EditRole',\n\n propTypes: {\n initialRole: _propTypes2.default.object,\n onSave: _propTypes2.default.func.isRequired,\n cancelEdit: _propTypes2.default.func.isRequired,\n streams: _propTypes2.default.object,\n dashboards: _propTypes2.default.object\n },\n\n mixins: [_PermissionsMixin2.default],\n\n getInitialState: function getInitialState() {\n var role = this.props.initialRole;\n if (role === null) {\n // for the create dialog\n role = { name: null, description: null, permissions: [] };\n }\n return {\n role: role,\n initialName: this._safeRoleName(this.props.initialRole)\n };\n },\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n this.setState({ role: newProps.initialRole, initialName: this._safeRoleName(newProps.initialRole) });\n },\n _safeRoleName: function _safeRoleName(role) {\n return role === null ? null : role.name;\n },\n _setName: function _setName(ev) {\n var role = this.state.role;\n role.name = ev.target.value;\n this.setState({ role: this.state.role });\n },\n _setDescription: function _setDescription(ev) {\n var role = this.state.role;\n role.description = ev.target.value;\n this.setState({ role: this.state.role });\n },\n _updatePermissions: function _updatePermissions(addedPerms, deletedPerms) {\n var role = this.state.role;\n role.permissions = _immutable2.default.Set(role.permissions).subtract(deletedPerms).union(addedPerms).toJS();\n this.setState({ role: role });\n },\n _saveDisabled: function _saveDisabled() {\n return this.state.role === null || this.state.role.name === null || this.state.role.name === '' || this.state.role.permissions.length === 0;\n },\n _onSave: function _onSave() {\n this.props.onSave(this.state.initialName, this.state.role);\n },\n render: function render() {\n var titleText = void 0;\n if (this.state.initialName === null) {\n titleText = 'Create a new role';\n } else {\n titleText = 'Edit role ' + this.state.initialName;\n }\n\n var saveDisabled = this._saveDisabled();\n var saveDisabledAlert = null;\n if (saveDisabled) {\n saveDisabledAlert = _react2.default.createElement(\n _reactBootstrap.Alert,\n { bsStyle: 'warning', style: { marginBottom: 10 } },\n 'Please name the role and select at least one permission to save it.'\n );\n }\n\n return _react2.default.createElement(\n _reactBootstrap.Row,\n null,\n _react2.default.createElement(\n _reactBootstrap.Col,\n { md: 12 },\n _react2.default.createElement(\n 'h1',\n null,\n titleText\n ),\n _react2.default.createElement(\n 'div',\n { style: { marginTop: 10 } },\n _react2.default.createElement(_bootstrap.Input, { id: 'role-name', type: 'text', label: 'Name', onChange: this._setName, value: this.state.role.name,\n required: true }),\n _react2.default.createElement(_bootstrap.Input, { id: 'role-description', type: 'text', label: 'Description', onChange: this._setDescription,\n value: this.state.role.description }),\n _react2.default.createElement(\n _reactBootstrap.FormGroup,\n null,\n _react2.default.createElement(\n _reactBootstrap.ControlLabel,\n null,\n 'Permissions'\n ),\n _react2.default.createElement(\n _reactBootstrap.HelpBlock,\n null,\n 'Select the permissions for this role'\n )\n ),\n _react2.default.createElement(_PermissionSelector2.default, { streams: this.props.streams,\n dashboards: this.props.dashboards,\n permissions: _immutable2.default.Set(this.state.role.permissions),\n onChange: this._updatePermissions\n }),\n _react2.default.createElement('hr', null),\n saveDisabledAlert,\n _react2.default.createElement(\n _reactBootstrap.Button,\n { onClick: this._onSave, style: { marginRight: 5 }, bsStyle: 'primary', disabled: saveDisabled },\n 'Save'\n ),\n _react2.default.createElement(\n _reactBootstrap.Button,\n { onClick: this.props.cancelEdit },\n 'Cancel'\n )\n )\n )\n );\n }\n});\n\nexports.default = EditRole;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1403:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _immutable = __webpack_require__(54);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _common = __webpack_require__(49);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PermissionSelector = _react2.default.createClass({\n displayName: 'PermissionSelector',\n\n propTypes: {\n onChange: _propTypes2.default.func,\n streams: _propTypes2.default.object,\n dashboards: _propTypes2.default.object,\n permissions: _propTypes2.default.object\n },\n\n render: function render() {\n var _this = this;\n\n var streamItemButtons = function streamItemButtons(stream) {\n var isRead = _this.props.permissions.contains('streams:read:' + stream.id);\n var isEdit = _this.props.permissions.contains('streams:edit:' + stream.id);\n return _react2.default.createElement(\n _reactBootstrap.ButtonGroup,\n { bsSize: 'small' },\n _react2.default.createElement(\n _reactBootstrap.Button,\n { bsStyle: isRead ? 'info' : 'default', onClick: function onClick() {\n return _this._toggleStreamReadPermissions(stream);\n },\n active: isRead },\n 'Allow reading'\n ),\n _react2.default.createElement(\n _reactBootstrap.Button,\n { bsStyle: isEdit ? 'info' : 'default', onClick: function onClick() {\n return _this._toggleStreamEditPermissions(stream);\n },\n active: isEdit },\n 'Allow editing'\n )\n );\n };\n\n var multiStreamButtons = function multiStreamButtons(streamIds) {\n return _react2.default.createElement(\n 'div',\n { className: 'pull-right', style: { marginTop: 10, marginBottom: 10 } },\n _react2.default.createElement(\n _reactBootstrap.Button,\n { bsSize: 'xsmall', bsStyle: 'info', onClick: function onClick() {\n return _this._toggleAllStreamsRead(streamIds);\n } },\n 'Toggle read permissions'\n ),\n '\\xA0',\n _react2.default.createElement(\n _reactBootstrap.Button,\n { bsSize: 'xsmall', bsStyle: 'info', onClick: function onClick() {\n return _this._toggleAllStreamsEdit(streamIds);\n } },\n 'Toggle edit permissions'\n )\n );\n };\n\n var dashboardItemButtons = function dashboardItemButtons(dashboard) {\n var isRead = _this.props.permissions.contains('dashboards:read:' + dashboard.id);\n var isEdit = _this.props.permissions.contains('dashboards:edit:' + dashboard.id);\n return _react2.default.createElement(\n _reactBootstrap.ButtonGroup,\n { bsSize: 'small' },\n _react2.default.createElement(\n _reactBootstrap.Button,\n { bsStyle: isRead ? 'info' : 'default', onClick: function onClick() {\n return _this._toggleDashboardReadPermissions(dashboard);\n },\n active: isRead },\n 'Allow reading'\n ),\n _react2.default.createElement(\n _reactBootstrap.Button,\n { bsStyle: isEdit ? 'info' : 'default', onClick: function onClick() {\n return _this._toggleDashboardEditPermissions(dashboard);\n },\n active: isEdit },\n 'Allow editing'\n )\n );\n };\n\n var multiDashboardButtons = function multiDashboardButtons(dashboardIds) {\n return _react2.default.createElement(\n 'div',\n { className: 'pull-right', style: { marginTop: 10, marginBottom: 10 } },\n _react2.default.createElement(\n _reactBootstrap.Button,\n { bsSize: 'xsmall', bsStyle: 'info', onClick: function onClick() {\n return _this._toggleAllDashboardsRead(dashboardIds);\n } },\n 'Toggle read permissions'\n ),\n '\\xA0',\n _react2.default.createElement(\n _reactBootstrap.Button,\n { bsSize: 'xsmall', bsStyle: 'info', onClick: function onClick() {\n return _this._toggleAllDashboardsEdit(dashboardIds);\n } },\n 'Toggle edit permissions'\n )\n );\n };\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n _reactBootstrap.Tabs,\n { id: 'permissionSelectorTabs', defaultActiveKey: 1, animation: false },\n _react2.default.createElement(\n _reactBootstrap.Tab,\n { eventKey: 1, title: 'Streams' },\n _react2.default.createElement(\n 'div',\n { style: { marginTop: 10 } },\n _react2.default.createElement(_common.TableList, {\n items: this.props.streams,\n filterLabel: 'Filter Streams',\n filterKeys: ['title'],\n itemActionsFactory: streamItemButtons,\n headerActionsFactory: multiStreamButtons\n })\n )\n ),\n _react2.default.createElement(\n _reactBootstrap.Tab,\n { eventKey: 2, title: 'Dashboards' },\n _react2.default.createElement(\n 'div',\n { style: { marginTop: 10 } },\n _react2.default.createElement(_common.TableList, {\n items: this.props.dashboards,\n filterLabel: 'Filter Dashboards',\n filterKeys: ['title'],\n itemActionsFactory: dashboardItemButtons,\n headerActionsFactory: multiDashboardButtons\n })\n )\n )\n )\n );\n },\n\n\n /*\n * onClick actions for single edits\n */\n _toggleStreamReadPermissions: function _toggleStreamReadPermissions(stream) {\n this._toggleReadPermissions('streams', _immutable2.default.Set.of(stream.id));\n },\n _toggleStreamEditPermissions: function _toggleStreamEditPermissions(stream) {\n this._toggleEditPermissions('streams', _immutable2.default.Set.of(stream.id));\n },\n _toggleDashboardReadPermissions: function _toggleDashboardReadPermissions(dashboard) {\n this._toggleReadPermissions('dashboards', _immutable2.default.Set.of(dashboard.id));\n },\n _toggleDashboardEditPermissions: function _toggleDashboardEditPermissions(dashboard) {\n this._toggleEditPermissions('dashboards', _immutable2.default.Set.of(dashboard.id));\n },\n\n\n /*\n * onClick actions for bulk edits\n */\n\n _toggleAllStreamsRead: function _toggleAllStreamsRead(streamIds) {\n this._toggleReadPermissions('streams', streamIds);\n },\n _toggleAllStreamsEdit: function _toggleAllStreamsEdit(streamIds) {\n this._toggleEditPermissions('streams', streamIds);\n },\n _toggleAllDashboardsRead: function _toggleAllDashboardsRead(dashboardIds) {\n this._toggleReadPermissions('dashboards', dashboardIds);\n },\n _toggleAllDashboardsEdit: function _toggleAllDashboardsEdit(dashboardIds) {\n this._toggleEditPermissions('dashboards', dashboardIds);\n },\n _toggleReadPermissions: function _toggleReadPermissions(target, idList) {\n var _this2 = this;\n\n var added = _immutable2.default.Set.of();\n var deleted = _immutable2.default.Set.of();\n\n idList.forEach(function (id) {\n var readTarget = target + ':read:' + id;\n var editTarget = target + ':edit:' + id;\n\n if (_this2.props.permissions.contains(readTarget)) {\n deleted = deleted.add(readTarget).add(editTarget);\n } else {\n added = added.add(readTarget);\n }\n }, this);\n this.props.onChange(added, deleted);\n },\n _toggleEditPermissions: function _toggleEditPermissions(target, idList) {\n var _this3 = this;\n\n var added = _immutable2.default.Set.of();\n var deleted = _immutable2.default.Set.of();\n\n idList.forEach(function (id) {\n var readTarget = target + ':read:' + id;\n var editTarget = target + ':edit:' + id;\n\n if (_this3.props.permissions.contains(editTarget)) {\n deleted = deleted.add(editTarget);\n } else {\n added = added.add(readTarget).add(editTarget);\n }\n }, this);\n this.props.onChange(added, deleted);\n }\n});\n\nexports.default = PermissionSelector;\nmodule.exports = exports['default'];\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// 39.7274e9222d07ea893176.js","import React from 'react';\nimport { Row, Col } from 'react-bootstrap';\n\nimport RolesComponent from 'components/users/RolesComponent';\nimport { DocumentTitle } from 'components/common';\n\nconst RolesPage = React.createClass({\n render() {\n return (\n \n \n \n \n \n
\n \n );\n },\n});\n\nexport default RolesPage;\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/RolesPage.jsx","import React from 'react';\nimport Reflux from 'reflux';\nimport Immutable from 'immutable';\nimport { Button, Col, Row } from 'react-bootstrap';\n\nimport UserNotification from 'util/UserNotification';\nimport RoleList from 'components/users/RoleList';\nimport EditRole from 'components/users/EditRole';\nimport PageHeader from 'components/common/PageHeader';\n\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { StreamsStore } = CombinedProvider.get('Streams');\nconst { DashboardsActions, DashboardsStore } = CombinedProvider.get('Dashboards');\nconst { RolesStore } = CombinedProvider.get('Roles');\n\n\nexport default React.createClass({\n mixins: [Reflux.connect(DashboardsStore, 'dashboards')],\n getInitialState() {\n return {\n roles: Immutable.Set(),\n rolesLoaded: false,\n editRole: null,\n streams: Immutable.List(),\n };\n },\n componentDidMount() {\n this.loadRoles();\n StreamsStore.load(streams => this.setState({ streams: Immutable.List(streams) }));\n DashboardsActions.list();\n },\n\n loadRoles() {\n const promise = RolesStore.loadRoles();\n promise.then((roles) => {\n this.setState({ roles: Immutable.Set(roles), rolesLoaded: true });\n });\n },\n\n _showCreateRole() {\n this.setState({ showEditRole: true });\n },\n _showEditRole(role) {\n this.setState({ showEditRole: true, editRole: role });\n },\n _deleteRole(role) {\n // eslint-disable-next-line no-alert\n if (window.confirm(`Do you really want to delete role ${role.name}?`)) {\n RolesStore.getMembers(role.name).then((membership) => {\n if (membership.users.length !== 0) {\n UserNotification.error(`Cannot delete role ${role.name}. It is still assigned to ${membership.users.length} users.`);\n } else {\n RolesStore.deleteRole(role.name).then(this.loadRoles);\n }\n });\n }\n },\n _saveRole(initialName, role) {\n if (initialName === null) {\n RolesStore.createRole(role).then(this._clearEditRole).then(this.loadRoles);\n } else {\n RolesStore.updateRole(initialName, role).then(this._clearEditRole).then(this.loadRoles);\n }\n },\n _clearEditRole() {\n this.setState({ showEditRole: false, editRole: null });\n },\n\n render() {\n let content = null;\n if (!this.state.rolesLoaded) {\n content = Loading roles... ;\n } else if (this.state.showEditRole) {\n content =\n ( );\n } else {\n content = ( );\n }\n\n let actionButton;\n if (!this.state.showEditRole) {\n actionButton = Add new role ;\n }\n return (\n \n \n \n \n Roles bundle permissions which can be assigned to multiple users at once\n \n {null}\n \n {actionButton}\n \n \n\n {content}\n \n
\n );\n },\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/users/RolesComponent.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Reflux from 'reflux';\nimport Immutable from 'immutable';\nimport { Button } from 'react-bootstrap';\n\nimport StoreProvider from 'injection/StoreProvider';\n\nimport PermissionsMixin from 'util/PermissionsMixin';\nconst CurrentUserStore = StoreProvider.getStore('CurrentUser');\n\nimport { DataTable } from 'components/common';\n\nconst RoleList = React.createClass({\n mixins: [Reflux.connect(CurrentUserStore), PermissionsMixin],\n propTypes: {\n roles: PropTypes.instanceOf(Immutable.Set).isRequired,\n showEditRole: PropTypes.func.isRequired,\n deleteRole: PropTypes.func.isRequired,\n },\n\n _headerCellFormatter(header) {\n const className = (header === 'Actions' ? 'actions' : '');\n return {header} ;\n },\n _editButton(role) {\n if (this.isPermitted(this.state.currentUser.permissions, ['roles:edit:' + role.name]) === false || role.read_only) {\n return null;\n }\n return ( this.props.showEditRole(role)} title=\"Edit role\">Edit );\n },\n _deleteButton(role) {\n if (this.isPermitted(this.state.currentUser.permissions, ['roles:delete:' + role.name]) === false || role.read_only) {\n return null;\n }\n return ( this.props.deleteRole(role)} title=\"Delete role\">Delete );\n },\n _roleInfoFormatter(role) {\n return (\n \n {role.name} \n {role.description} \n \n {this._editButton(role)}\n \n {this._deleteButton(role)}\n \n \n );\n },\n render() {\n const filterKeys = ['name', 'description'];\n const headers = ['Name', 'Description', 'Actions'];\n\n return (\n \n \n
\n );\n },\n});\n\nexport default RoleList;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/users/RoleList.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Immutable from 'immutable';\nimport { Alert, Button, Col, ControlLabel, FormGroup, HelpBlock, Row } from 'react-bootstrap';\n\nimport { Input } from 'components/bootstrap';\nimport PermissionSelector from 'components/users/PermissionSelector';\nimport PermissionsMixin from 'util/PermissionsMixin';\n\nconst EditRole = React.createClass({\n propTypes: {\n initialRole: PropTypes.object,\n onSave: PropTypes.func.isRequired,\n cancelEdit: PropTypes.func.isRequired,\n streams: PropTypes.object,\n dashboards: PropTypes.object,\n },\n\n mixins: [PermissionsMixin],\n\n getInitialState() {\n let role = this.props.initialRole;\n if (role === null) {\n // for the create dialog\n role = { name: null, description: null, permissions: [] };\n }\n return {\n role: role,\n initialName: this._safeRoleName(this.props.initialRole),\n };\n },\n\n componentWillReceiveProps(newProps) {\n this.setState({ role: newProps.initialRole, initialName: this._safeRoleName(newProps.initialRole) });\n },\n\n _safeRoleName(role) {\n return role === null ? null : role.name;\n },\n\n _setName(ev) {\n const role = this.state.role;\n role.name = ev.target.value;\n this.setState({ role: this.state.role });\n },\n _setDescription(ev) {\n const role = this.state.role;\n role.description = ev.target.value;\n this.setState({ role: this.state.role });\n },\n\n _updatePermissions(addedPerms, deletedPerms) {\n const role = this.state.role;\n role.permissions = Immutable.Set(role.permissions)\n .subtract(deletedPerms)\n .union(addedPerms)\n .toJS();\n this.setState({ role: role });\n },\n\n _saveDisabled() {\n return this.state.role === null || this.state.role.name === null || this.state.role.name === '' || this.state.role.permissions.length === 0;\n },\n\n _onSave() {\n this.props.onSave(this.state.initialName, this.state.role);\n },\n\n render() {\n let titleText;\n if (this.state.initialName === null) {\n titleText = 'Create a new role';\n } else {\n titleText = `Edit role ${this.state.initialName}`;\n }\n\n const saveDisabled = this._saveDisabled();\n let saveDisabledAlert = null;\n if (saveDisabled) {\n saveDisabledAlert = (\n \n Please name the role and select at least one permission to save it.\n \n );\n }\n\n return (\n \n \n {titleText} \n \n
\n
\n\n
\n Permissions \n Select the permissions for this role \n \n
\n
\n {saveDisabledAlert}\n
\n Save\n \n
Cancel \n
\n \n
);\n },\n});\n\nexport default EditRole;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/users/EditRole.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Immutable from 'immutable';\n\nimport { Tabs, Tab, Button, ButtonGroup } from 'react-bootstrap';\n\nimport { TableList } from 'components/common';\n\nconst PermissionSelector = React.createClass({\n propTypes: {\n onChange: PropTypes.func,\n streams: PropTypes.object,\n dashboards: PropTypes.object,\n permissions: PropTypes.object,\n },\n\n render() {\n const streamItemButtons = (stream) => {\n const isRead = this.props.permissions.contains(`streams:read:${stream.id}`);\n const isEdit = this.props.permissions.contains(`streams:edit:${stream.id}`);\n return (\n this._toggleStreamReadPermissions(stream)}\n active={isRead}>Allow reading \n this._toggleStreamEditPermissions(stream)}\n active={isEdit}>Allow editing \n );\n };\n\n const multiStreamButtons = (streamIds) => {\n return (\n \n this._toggleAllStreamsRead(streamIds)}>Toggle read permissions \n \n this._toggleAllStreamsEdit(streamIds)}>Toggle edit permissions \n
\n );\n };\n\n const dashboardItemButtons = (dashboard) => {\n const isRead = this.props.permissions.contains(`dashboards:read:${dashboard.id}`);\n const isEdit = this.props.permissions.contains(`dashboards:edit:${dashboard.id}`);\n return (\n this._toggleDashboardReadPermissions(dashboard)}\n active={isRead}>Allow reading \n this._toggleDashboardEditPermissions(dashboard)}\n active={isEdit}>Allow editing \n );\n };\n\n const multiDashboardButtons = (dashboardIds) => {\n return (\n \n this._toggleAllDashboardsRead(dashboardIds)}>Toggle read permissions \n \n this._toggleAllDashboardsEdit(dashboardIds)}>Toggle edit permissions \n
\n );\n };\n\n return (\n \n
\n \n \n \n \n \n \n \n
\n );\n },\n\n /*\n * onClick actions for single edits\n */\n _toggleStreamReadPermissions(stream) {\n this._toggleReadPermissions('streams', Immutable.Set.of(stream.id));\n },\n\n _toggleStreamEditPermissions(stream) {\n this._toggleEditPermissions('streams', Immutable.Set.of(stream.id));\n },\n\n _toggleDashboardReadPermissions(dashboard) {\n this._toggleReadPermissions('dashboards', Immutable.Set.of(dashboard.id));\n },\n\n _toggleDashboardEditPermissions(dashboard) {\n this._toggleEditPermissions('dashboards', Immutable.Set.of(dashboard.id));\n },\n\n /*\n * onClick actions for bulk edits\n */\n\n _toggleAllStreamsRead(streamIds) {\n this._toggleReadPermissions('streams', streamIds);\n },\n\n _toggleAllStreamsEdit(streamIds) {\n this._toggleEditPermissions('streams', streamIds);\n },\n\n _toggleAllDashboardsRead(dashboardIds) {\n this._toggleReadPermissions('dashboards', dashboardIds);\n },\n\n _toggleAllDashboardsEdit(dashboardIds) {\n this._toggleEditPermissions('dashboards', dashboardIds);\n },\n\n _toggleReadPermissions(target, idList) {\n let added = Immutable.Set.of();\n let deleted = Immutable.Set.of();\n\n idList.forEach((id) => {\n const readTarget = `${target}:read:${id}`;\n const editTarget = `${target}:edit:${id}`;\n\n if (this.props.permissions.contains(readTarget)) {\n deleted = deleted.add(readTarget).add(editTarget);\n } else {\n added = added.add(readTarget);\n }\n }, this);\n this.props.onChange(added, deleted);\n },\n _toggleEditPermissions(target, idList) {\n let added = Immutable.Set.of();\n let deleted = Immutable.Set.of();\n\n idList.forEach((id) => {\n const readTarget = `${target}:read:${id}`;\n const editTarget = `${target}:edit:${id}`;\n\n if (this.props.permissions.contains(editTarget)) {\n deleted = deleted.add(editTarget);\n } else {\n added = added.add(readTarget).add(editTarget);\n }\n }, this);\n this.props.onChange(added, deleted);\n },\n});\n\nexport default PermissionSelector;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/users/PermissionSelector.jsx"],"sourceRoot":""}