openstack-uicore-foundation 5.0.11-beta.1 → 5.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/index.js +1 -1
- package/lib/components/index.js.map +1 -1
- package/lib/components/inputs/access-levels-input.js +1 -1
- package/lib/components/inputs/access-levels-input.js.map +1 -1
- package/lib/components/inputs/attendee-input.js +1 -1
- package/lib/components/inputs/attendee-input.js.map +1 -1
- package/lib/components/inputs/company-input-v2.js +1 -1
- package/lib/components/inputs/company-input-v2.js.map +1 -1
- package/lib/components/inputs/company-input.js +1 -1
- package/lib/components/inputs/company-input.js.map +1 -1
- package/lib/components/inputs/country-dropdown.js +1 -1
- package/lib/components/inputs/country-dropdown.js.map +1 -1
- package/lib/components/inputs/country-input.js +1 -1
- package/lib/components/inputs/country-input.js.map +1 -1
- package/lib/components/inputs/event-input.js +1 -1
- package/lib/components/inputs/event-input.js.map +1 -1
- package/lib/components/inputs/group-input.js +1 -1
- package/lib/components/inputs/group-input.js.map +1 -1
- package/lib/components/inputs/language-input.js +1 -1
- package/lib/components/inputs/language-input.js.map +1 -1
- package/lib/components/inputs/member-input.js +1 -1
- package/lib/components/inputs/member-input.js.map +1 -1
- package/lib/components/inputs/organization-input.js +1 -1
- package/lib/components/inputs/organization-input.js.map +1 -1
- package/lib/components/inputs/promocode-input.js +1 -1
- package/lib/components/inputs/promocode-input.js.map +1 -1
- package/lib/components/inputs/registration-company-input.js +1 -1
- package/lib/components/inputs/registration-company-input.js.map +1 -1
- package/lib/components/inputs/speaker-input.js +1 -1
- package/lib/components/inputs/speaker-input.js.map +1 -1
- package/lib/components/inputs/sponsor-input.js +1 -1
- package/lib/components/inputs/sponsor-input.js.map +1 -1
- package/lib/components/inputs/summit-input.js +1 -1
- package/lib/components/inputs/summit-input.js.map +1 -1
- package/lib/components/inputs/tag-input.js +1 -1
- package/lib/components/inputs/tag-input.js.map +1 -1
- package/lib/components/inputs/ticket-types-input.js +1 -1
- package/lib/components/inputs/ticket-types-input.js.map +1 -1
- package/lib/components/inputs/upload-input-v3.js +1 -1
- package/lib/components/inputs/upload-input-v3.js.map +1 -1
- package/lib/components/mui/confirm-dialog.js +1 -1
- package/lib/components/mui/confirm-dialog.js.map +1 -1
- package/lib/components/mui/editable-table.js +1 -1
- package/lib/components/mui/editable-table.js.map +1 -1
- package/lib/components/mui/formik-inputs/additional-input-list.js +1 -1
- package/lib/components/mui/formik-inputs/additional-input-list.js.map +1 -1
- package/lib/components/mui/formik-inputs/additional-input.js +1 -1
- package/lib/components/mui/formik-inputs/additional-input.js.map +1 -1
- package/lib/components/mui/formik-inputs/company-input.js +1 -1
- package/lib/components/mui/formik-inputs/company-input.js.map +1 -1
- package/lib/components/mui/formik-inputs/sponsor-input.js +1 -1
- package/lib/components/mui/formik-inputs/sponsor-input.js.map +1 -1
- package/lib/components/mui/formik-inputs/sponsorship-input.js +1 -1
- package/lib/components/mui/formik-inputs/sponsorship-input.js.map +1 -1
- package/lib/components/mui/formik-inputs/sponsorship-summit-select.js +1 -1
- package/lib/components/mui/formik-inputs/sponsorship-summit-select.js.map +1 -1
- package/lib/components/mui/formik-inputs/summit-addon-select.js +1 -1
- package/lib/components/mui/formik-inputs/summit-addon-select.js.map +1 -1
- package/lib/components/mui/search-input.js +1 -1
- package/lib/components/mui/search-input.js.map +1 -1
- package/lib/components/mui/show-confirm-dialog.js +1 -1
- package/lib/components/mui/show-confirm-dialog.js.map +1 -1
- package/lib/components/mui/snackbar-notification-context.js +2 -0
- package/lib/components/mui/snackbar-notification-context.js.map +1 -0
- package/lib/components/mui/snackbar-notification.js +1 -1
- package/lib/components/mui/snackbar-notification.js.map +1 -1
- package/lib/components/mui/sortable-table.js +1 -1
- package/lib/components/mui/sortable-table.js.map +1 -1
- package/lib/components/mui/sponsor-addon-select.js +1 -1
- package/lib/components/mui/sponsor-addon-select.js.map +1 -1
- package/lib/components/mui/summit-addon-select.js +1 -1
- package/lib/components/mui/summit-addon-select.js.map +1 -1
- package/lib/components/mui/summits-dropdown.js +1 -1
- package/lib/components/mui/summits-dropdown.js.map +1 -1
- package/lib/components/mui/table.js +1 -1
- package/lib/components/mui/table.js.map +1 -1
- package/lib/components/mui/upload-dialog.js +1 -1
- package/lib/components/mui/upload-dialog.js.map +1 -1
- package/lib/components/sponsored-project-input.js +1 -1
- package/lib/components/sponsored-project-input.js.map +1 -1
- package/lib/components/table-sortable.js +1 -1
- package/lib/components/table-sortable.js.map +1 -1
- package/lib/security/actions.js +1 -1
- package/lib/security/actions.js.map +1 -1
- package/lib/security/methods.js.map +1 -1
- package/lib/security/reducers.js.map +1 -1
- package/lib/security/session-checker.js.map +1 -1
- package/lib/utils/actions.js.map +1 -1
- package/lib/utils/query-actions.js +1 -1
- package/lib/utils/query-actions.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/table-sortable.js","mappings":"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","sources":["webpack://openstack-uicore-foundation/webpack/universalModuleDefinition","webpack://openstack-uicore-foundation/./src/components/raw-html/index.js","webpack://openstack-uicore-foundation/./src/components/table/TableCell.js","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/defineProperty\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/extends\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/objectWithoutProperties\"","webpack://openstack-uicore-foundation/external commonjs \"i18n-react/dist/i18n-react\"","webpack://openstack-uicore-foundation/external commonjs \"lodash\"","webpack://openstack-uicore-foundation/external commonjs \"prop-types\"","webpack://openstack-uicore-foundation/external commonjs \"react\"","webpack://openstack-uicore-foundation/external commonjs \"react-dnd\"","webpack://openstack-uicore-foundation/webpack/bootstrap","webpack://openstack-uicore-foundation/webpack/runtime/compat get default export","webpack://openstack-uicore-foundation/webpack/runtime/define property getters","webpack://openstack-uicore-foundation/webpack/runtime/hasOwnProperty shorthand","webpack://openstack-uicore-foundation/webpack/runtime/make namespace object","webpack://openstack-uicore-foundation/external commonjs \"immutability-helper\"","webpack://openstack-uicore-foundation/external commonjs \"react-dnd-html5-backend\"","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTableHeading.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableActionsTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTableRow.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTable.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"openstack-uicore-foundation\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"openstack-uicore-foundation\"] = factory();\n\telse\n\t\troot[\"openstack-uicore-foundation\"] = factory();\n})(this, () => {\nreturn ","import React from 'react';\n\nconst RawHTML = ({children, replaceNewLine = false, className = \"\", ...rest}) =>\n <span className={className}\n dangerouslySetInnerHTML={{ __html: replaceNewLine ? children?.replace(/\\n/g, '<br />') : children}} {...rest}/>\n\nexport default RawHTML;","import React from 'react';\nimport RawHTML from '../raw-html';\n\nconst TableCell = (props) => {\n let {children} = props;\n\tlet value = '';\n\tif(children) {\n\t if (React.isValidElement(children)) {\n\t value = children;\n } else {\n\t value = <RawHTML>{children.toString()}</RawHTML>\n }\n }\n\n\treturn (\n\t\t<td {...props}>\n {value}\n\t\t</td>\n\t);\n};\n\nexport default TableCell;\n","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@babel/runtime/helpers/extends\");","module.exports = require(\"@babel/runtime/helpers/objectWithoutProperties\");","module.exports = require(\"i18n-react/dist/i18n-react\");","module.exports = require(\"lodash\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"react-dnd\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutability-helper\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dnd-html5-backend\");","import React from 'react';\n\nclass SortableTableHeading extends React.Component {\n\n\tconstructor (props) {\n\t\tsuper(props);\n\t}\n\n\trender () {\n\t\treturn (\n\t\t\t<th width={this.props.width}>\n\t\t\t\t{this.props.children}\n\t\t\t</th>\n\t\t);\t\n\t}\n\t\n}\n\nexport default SortableTableHeading;","import React from 'react';\n\nexport default class SortableActionsTableCell extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleAction = this.handleAction.bind(this);\n\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleAction(action, id, ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n action(id);\n }\n\n render() {\n let {actions, id} = this.props;\n return (\n <td className=\"actions\" key=\"actions\">\n {actions.hasOwnProperty('edit') && this.shouldDisplayAction(actions.edit) &&\n <a href=\"\" data-tip=\"edit\" onClick={this.handleAction.bind(this, actions.edit.onClick, id)} >\n <i className=\"fa fa-pencil-square-o\"></i>\n </a>\n }\n {actions.hasOwnProperty('delete') && this.shouldDisplayAction(actions.delete) &&\n <a href=\"\" data-tip=\"delete\" onClick={this.handleAction.bind(this, actions.delete.onClick, id)} >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n }\n {'custom' in actions && actions.custom.map(a =>\n this.shouldDisplayAction(a, id) &&\n <a href=\"\" data-tip={a.tooltip} key={'custom_' + a.name} onClick={this.handleAction.bind(this, a.onClick, id)}>\n {a.icon}\n </a>\n )}\n </td>\n );\n }\n};\n","import React, { useRef } from 'react';\nimport { useDrag, useDrop } from 'react-dnd';\nimport PropTypes from 'prop-types';\n\nconst SortableTableRow = ({ text, even, id, index, moveCard, dropItem, children, findRow }) => {\n const originalIndex = findRow(id).index;\n\n const style = {\n border: '1px dashed gray',\n padding: '0.5rem 1rem',\n marginBottom: '.5rem',\n backgroundColor: 'white',\n cursor: 'move',\n };\n\n const refRow = useRef(null);\n const [{ handlerId }, drop] = useDrop({\n accept: 'row',\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n };\n },\n hover(item, monitor) {\n if (!refRow.current) {\n return;\n }\n const dragIndex = item.index;\n const hoverIndex = index;\n // Don't replace items with themselves\n if (dragIndex === hoverIndex) {\n return;\n }\n // Determine rectangle on screen\n const hoverBoundingRect = refRow.current?.getBoundingClientRect();\n // Get vertical middle\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n // Determine mouse position\n const clientOffset = monitor.getClientOffset();\n // Get pixels to the top\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n // Only perform the move when the mouse has crossed half of the items height\n // When dragging downwards, only move when the cursor is below 50%\n // When dragging upwards, only move when the cursor is above 50%\n // Dragging downwards\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n // Dragging upwards\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n // Time to actually perform the action\n moveCard(dragIndex, hoverIndex);\n // Note: we're mutating the monitor item here!\n // Generally it's better to avoid mutations,\n // but it's good here for the sake of performance\n // to avoid expensive index searches.\n item.index = hoverIndex;\n },\n });\n const [{ isDragging }, drag] = useDrag({\n type: 'row',\n item: () => {\n return { id, index };\n },\n end:(_item, monitor) => {\n const { id: droppedId, index } = _item;\n const didDrop = monitor.didDrop()\n if(didDrop)\n return dropItem(droppedId, index + 1)\n // rollback\n return moveCard(index, originalIndex);\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const opacity = isDragging ? 0 : 1;\n\n drag(drop(refRow));\n\n return (\n <tr id={id} ref={refRow} role=\"row\" className={even ? 'even' : 'odd'} style={{ ...style, opacity }}>\n {children}\n </tr>\n );\n}\n\nSortableTableRow.propTypes = {\n index: PropTypes.number.isRequired,\n id: PropTypes.any.isRequired,\n moveCard: PropTypes.func.isRequired,\n};\n\nexport default SortableTableRow;\n\n","import React, {useEffect, useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport update from 'immutability-helper';\nimport {DndProvider} from 'react-dnd'\nimport {HTML5Backend} from 'react-dnd-html5-backend'\nimport SortableTableHeading from './SortableTableHeading';\nimport SortableActionsTableCell from './SortableActionsTableCell';\nimport SortableTableRow from './SortableTableRow';\nimport T from 'i18n-react/dist/i18n-react';\nimport TableCell from \"../table/TableCell\";\nimport _ from 'lodash';\n\nimport './table-sortable.less';\n\nconst defaults = {\n colWidth: ''\n}\n\nconst createRow = (row, columns, actions) => {\n\n let cells = columns.map((col, i) => {\n if (col.hasOwnProperty(\"render\"))\n return (\n <TableCell key={'cell_' + i} title={col.hasOwnProperty(\"title\") ? row[col.columnKey] : null}>\n {col.render(row, row[col.columnKey])}\n </TableCell>\n );\n\n return (\n <TableCell key={'cell_' + i} title={col.hasOwnProperty(\"title\") ? row[col.columnKey] : null}>\n {row[col.columnKey]}\n </TableCell>\n );\n });\n\n if (actions) {\n cells.push(<SortableActionsTableCell key='actions' id={row['id']} actions={actions}/>);\n }\n\n return cells;\n};\n\n\nconst renderNewRow = (columns, new_row, addNew, handleChange) => {\n\n let cells = columns.map((col, i) => {\n let cell_value = (typeof new_row[col.columnKey] !== 'undefined') ? new_row[col.columnKey] : '';\n\n if (col?.input === \"checkbox\")\n return (\n <td key={'new_row_' + i} className=\"checkbox-cell\">\n <input type=\"checkbox\"\n id={'new_' + col.columnKey}\n name={col.columnKey}\n onChange={handleChange}\n checked={cell_value}\n title={col?.value}\n />\n </td>);\n else\n return (\n <td key={'new_row_' + i}>\n <input\n className=\"form-control\"\n id={'new_' + col.columnKey}\n name={col.columnKey}\n placeholder={col?.value}\n onChange={handleChange}\n value={cell_value}/>\n </td>);\n\n });\n\n cells.push(\n <td key='add_new'>\n <button className=\"btn btn-default\" onClick={addNew}> Add</button>\n </td>\n );\n\n return cells;\n};\n\nconst SortableTable = ({data, options, columns, dropCallback, orderField, idField}) => {\n\n const [rows, setRows] = useState(data);\n const [newRow, setNewRow] = useState({});\n\n useEffect(() => {\n setRows(data);\n }, [data])\n\n\n const renderRow = (row, columns, options, index) => {\n return (\n <SortableTableRow even={index % 2 === 0} key={row.id} index={index} id={row.id}\n moveCard={moveRow}\n findRow={findRow}\n dropItem={onDropItem}>\n {createRow(row, columns, options.actions)}\n </SortableTableRow>\n )\n };\n\n const saveNewRow = (ev) => {\n ev.preventDefault();\n options?.actions?.save?.onClick(newRow);\n setNewRow({});\n }\n\n const sortRows = (rows2Sort) => {\n rows2Sort.sort(function (a, b) {\n const x = a[orderField];\n const y = b[orderField];\n return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n });\n return rows2Sort;\n }\n\n const findRow = useCallback(\n (id) => {\n const row = rows.filter((r) => r[idField] === id)[0]\n return {\n row,\n index: rows.indexOf(row),\n }\n },\n [rows],\n )\n\n const moveRow = useCallback(\n (dragIndex, hoverIndex) => {\n\n setRows((prevRows) => {\n\n prevRows = update(prevRows, {\n $splice: [\n [dragIndex, 1],\n [hoverIndex, 0, prevRows[dragIndex]],\n ],\n });\n\n for (let i in prevRows) {\n prevRows[i][orderField] = parseInt(i) + 1;\n }\n\n return sortRows(prevRows)\n });\n },\n [rows, setRows],\n )\n\n const onDropItem = (id, newOrder) => {\n const sortedRows = sortRows(rows);\n setRows(sortedRows);\n dropCallback(sortedRows, id, newOrder)\n }\n\n const handleNewChange = (ev) => {\n let field = ev.target;\n let newRowTmp = {...newRow};\n let {name, value} = field;\n\n if (field.type === 'checkbox') {\n value = field.checked;\n }\n newRowTmp[name] = value;\n setNewRow(newRowTmp);\n }\n\n let tableClass = options.hasOwnProperty('className') ? options.className : '';\n let shouldRenderNewRow = options?.actions?.save?.onClick && options?.actions?.save?.onClick !== null;\n\n return (\n <div className=\"sortable-table-box\">\n <i>{T.translate(\"general.drag_and_drop\")}</i>\n <table className={\"table table-striped table-hover sortableTable \" + tableClass}>\n <thead>\n <tr>\n {columns.map((col, i) => {\n let colWidth = (col.width) ? col.width : defaults.colWidth;\n return (\n <SortableTableHeading width={colWidth} key={i}>\n {col.value}\n </SortableTableHeading>\n );\n })}\n {options.actions &&\n <SortableTableHeading key='actions'>\n Actions\n </SortableTableHeading>\n }\n </tr>\n </thead>\n <tbody>\n {columns.length > 0 && rows.map((row, i) => {\n if (Array.isArray(row) && row.length !== columns.length) {\n console.warn(`Data at row ${i} is ${row.length}. It should be ${columns.length}.`);\n return <tr/>\n }\n return (\n <DndProvider backend={HTML5Backend} key={i}>\n {renderRow(row, columns, options, i)}\n </DndProvider>\n );\n })}\n </tbody>\n {shouldRenderNewRow &&\n <tfoot>\n <tr>\n {renderNewRow(columns, newRow, saveNewRow, handleNewChange)}\n </tr>\n </tfoot>\n }\n </table>\n </div>\n );\n};\n\nSortableTable.defaultProps = {\n idField: 'id',\n}\n\nSortableTable.propTypes = {\n data: PropTypes.array.isRequired,\n options: PropTypes.shape({\n className: PropTypes.string,\n actions: PropTypes.object\n }).isRequired,\n columns: PropTypes.arrayOf(PropTypes.shape({\n columnKey: PropTypes.string.isRequired,\n value: PropTypes.any.isRequired,\n input: PropTypes.string,\n render: PropTypes.func,\n })).isRequired,\n dropCallback: PropTypes.func.isRequired,\n orderField: PropTypes.string.isRequired,\n idField: PropTypes.string,\n}\n\nexport default SortableTable;\n"],"names":["root","factory","exports","module","define","amd","this","_ref","children","replaceNewLine","className","rest","_objectWithoutProperties","_excluded","React","_extends","dangerouslySetInnerHTML","__html","replace","props","value","RawHTML","toString","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","SortableTableHeading","constructor","super","render","width","SortableActionsTableCell","handleAction","bind","shouldDisplayAction","action","id","display","ev","stopPropagation","preventDefault","actions","edit","href","onClick","delete","custom","map","tooltip","name","icon","SortableTableRow","text","even","index","moveCard","dropItem","findRow","originalIndex","refRow","useRef","handlerId","drop","useDrop","accept","collect","monitor","getHandlerId","hover","item","_refRow$current","current","dragIndex","hoverIndex","hoverBoundingRect","getBoundingClientRect","hoverMiddleY","bottom","top","hoverClientY","getClientOffset","y","isDragging","drag","useDrag","type","end","_item","droppedId","didDrop","opacity","ref","role","style","_objectSpread","border","padding","marginBottom","backgroundColor","cursor","propTypes","PropTypes","isRequired","defaults","SortableTable","data","options","columns","dropCallback","orderField","idField","_options$actions2","_options$actions2$sav","_options$actions3","_options$actions3$sav","rows","setRows","useState","newRow","setNewRow","useEffect","renderRow","row","moveRow","onDropItem","createRow","cells","col","i","TableCell","title","columnKey","push","sortRows","rows2Sort","sort","b","x","useCallback","filter","indexOf","prevRows","update","$splice","parseInt","newOrder","sortedRows","tableClass","shouldRenderNewRow","save","T","colWidth","length","Array","isArray","console","warn","DndProvider","backend","HTML5Backend","renderNewRow","new_row","addNew","handleChange","cell_value","input","onChange","checked","placeholder","_options$actions","_options$actions$save","field","target","newRowTmp","defaultProps"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"components/table-sortable.js","mappings":"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","sources":["webpack://openstack-uicore-foundation/webpack/universalModuleDefinition","webpack://openstack-uicore-foundation/./src/components/raw-html/index.js","webpack://openstack-uicore-foundation/./src/components/table/TableCell.js","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/defineProperty\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/extends\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/objectWithoutProperties\"","webpack://openstack-uicore-foundation/external commonjs \"i18n-react/dist/i18n-react\"","webpack://openstack-uicore-foundation/external commonjs \"prop-types\"","webpack://openstack-uicore-foundation/external commonjs \"react\"","webpack://openstack-uicore-foundation/external commonjs \"react-dnd\"","webpack://openstack-uicore-foundation/webpack/bootstrap","webpack://openstack-uicore-foundation/webpack/runtime/compat get default export","webpack://openstack-uicore-foundation/webpack/runtime/define property getters","webpack://openstack-uicore-foundation/webpack/runtime/hasOwnProperty shorthand","webpack://openstack-uicore-foundation/webpack/runtime/make namespace object","webpack://openstack-uicore-foundation/external commonjs \"immutability-helper\"","webpack://openstack-uicore-foundation/external commonjs \"react-dnd-html5-backend\"","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTableHeading.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableActionsTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTableRow.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTable.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"openstack-uicore-foundation\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"openstack-uicore-foundation\"] = factory();\n\telse\n\t\troot[\"openstack-uicore-foundation\"] = factory();\n})(this, () => {\nreturn ","import React from 'react';\n\nconst RawHTML = ({children, replaceNewLine = false, className = \"\", ...rest}) =>\n <span className={className}\n dangerouslySetInnerHTML={{ __html: replaceNewLine ? children?.replace(/\\n/g, '<br />') : children}} {...rest}/>\n\nexport default RawHTML;","import React from 'react';\nimport RawHTML from '../raw-html';\n\nconst TableCell = (props) => {\n let {children} = props;\n\tlet value = '';\n\tif(children) {\n\t if (React.isValidElement(children)) {\n\t value = children;\n } else {\n\t value = <RawHTML>{children.toString()}</RawHTML>\n }\n }\n\n\treturn (\n\t\t<td {...props}>\n {value}\n\t\t</td>\n\t);\n};\n\nexport default TableCell;\n","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@babel/runtime/helpers/extends\");","module.exports = require(\"@babel/runtime/helpers/objectWithoutProperties\");","module.exports = require(\"i18n-react/dist/i18n-react\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"react-dnd\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutability-helper\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dnd-html5-backend\");","import React from 'react';\n\nclass SortableTableHeading extends React.Component {\n\n\tconstructor (props) {\n\t\tsuper(props);\n\t}\n\n\trender () {\n\t\treturn (\n\t\t\t<th width={this.props.width}>\n\t\t\t\t{this.props.children}\n\t\t\t</th>\n\t\t);\t\n\t}\n\t\n}\n\nexport default SortableTableHeading;","import React from 'react';\n\nexport default class SortableActionsTableCell extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleAction = this.handleAction.bind(this);\n\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleAction(action, id, ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n action(id);\n }\n\n render() {\n let {actions, id} = this.props;\n return (\n <td className=\"actions\" key=\"actions\">\n {actions.hasOwnProperty('edit') && this.shouldDisplayAction(actions.edit) &&\n <a href=\"\" data-tip=\"edit\" onClick={this.handleAction.bind(this, actions.edit.onClick, id)} >\n <i className=\"fa fa-pencil-square-o\"></i>\n </a>\n }\n {actions.hasOwnProperty('delete') && this.shouldDisplayAction(actions.delete) &&\n <a href=\"\" data-tip=\"delete\" onClick={this.handleAction.bind(this, actions.delete.onClick, id)} >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n }\n {'custom' in actions && actions.custom.map(a =>\n this.shouldDisplayAction(a, id) &&\n <a href=\"\" data-tip={a.tooltip} key={'custom_' + a.name} onClick={this.handleAction.bind(this, a.onClick, id)}>\n {a.icon}\n </a>\n )}\n </td>\n );\n }\n};\n","import React, { useRef } from 'react';\nimport { useDrag, useDrop } from 'react-dnd';\nimport PropTypes from 'prop-types';\n\nconst SortableTableRow = ({ text, even, id, index, moveCard, dropItem, children, findRow }) => {\n const originalIndex = findRow(id).index;\n\n const style = {\n border: '1px dashed gray',\n padding: '0.5rem 1rem',\n marginBottom: '.5rem',\n backgroundColor: 'white',\n cursor: 'move',\n };\n\n const refRow = useRef(null);\n const [{ handlerId }, drop] = useDrop({\n accept: 'row',\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n };\n },\n hover(item, monitor) {\n if (!refRow.current) {\n return;\n }\n const dragIndex = item.index;\n const hoverIndex = index;\n // Don't replace items with themselves\n if (dragIndex === hoverIndex) {\n return;\n }\n // Determine rectangle on screen\n const hoverBoundingRect = refRow.current?.getBoundingClientRect();\n // Get vertical middle\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n // Determine mouse position\n const clientOffset = monitor.getClientOffset();\n // Get pixels to the top\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n // Only perform the move when the mouse has crossed half of the items height\n // When dragging downwards, only move when the cursor is below 50%\n // When dragging upwards, only move when the cursor is above 50%\n // Dragging downwards\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n // Dragging upwards\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n // Time to actually perform the action\n moveCard(dragIndex, hoverIndex);\n // Note: we're mutating the monitor item here!\n // Generally it's better to avoid mutations,\n // but it's good here for the sake of performance\n // to avoid expensive index searches.\n item.index = hoverIndex;\n },\n });\n const [{ isDragging }, drag] = useDrag({\n type: 'row',\n item: () => {\n return { id, index };\n },\n end:(_item, monitor) => {\n const { id: droppedId, index } = _item;\n const didDrop = monitor.didDrop()\n if(didDrop)\n return dropItem(droppedId, index + 1)\n // rollback\n return moveCard(index, originalIndex);\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const opacity = isDragging ? 0 : 1;\n\n drag(drop(refRow));\n\n return (\n <tr id={id} ref={refRow} role=\"row\" className={even ? 'even' : 'odd'} style={{ ...style, opacity }}>\n {children}\n </tr>\n );\n}\n\nSortableTableRow.propTypes = {\n index: PropTypes.number.isRequired,\n id: PropTypes.any.isRequired,\n moveCard: PropTypes.func.isRequired,\n};\n\nexport default SortableTableRow;\n\n","import React, {useEffect, useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport update from 'immutability-helper';\nimport {DndProvider} from 'react-dnd'\nimport {HTML5Backend} from 'react-dnd-html5-backend'\nimport SortableTableHeading from './SortableTableHeading';\nimport SortableActionsTableCell from './SortableActionsTableCell';\nimport SortableTableRow from './SortableTableRow';\nimport T from 'i18n-react/dist/i18n-react';\nimport TableCell from \"../table/TableCell\";\n\nimport './table-sortable.less';\n\nconst defaults = {\n colWidth: ''\n}\n\nconst createRow = (row, columns, actions) => {\n\n let cells = columns.map((col, i) => {\n if (col.hasOwnProperty(\"render\"))\n return (\n <TableCell key={'cell_' + i} title={col.hasOwnProperty(\"title\") ? row[col.columnKey] : null}>\n {col.render(row, row[col.columnKey])}\n </TableCell>\n );\n\n return (\n <TableCell key={'cell_' + i} title={col.hasOwnProperty(\"title\") ? row[col.columnKey] : null}>\n {row[col.columnKey]}\n </TableCell>\n );\n });\n\n if (actions) {\n cells.push(<SortableActionsTableCell key='actions' id={row['id']} actions={actions}/>);\n }\n\n return cells;\n};\n\n\nconst renderNewRow = (columns, new_row, addNew, handleChange) => {\n\n let cells = columns.map((col, i) => {\n let cell_value = (typeof new_row[col.columnKey] !== 'undefined') ? new_row[col.columnKey] : '';\n\n if (col?.input === \"checkbox\")\n return (\n <td key={'new_row_' + i} className=\"checkbox-cell\">\n <input type=\"checkbox\"\n id={'new_' + col.columnKey}\n name={col.columnKey}\n onChange={handleChange}\n checked={cell_value}\n title={col?.value}\n />\n </td>);\n else\n return (\n <td key={'new_row_' + i}>\n <input\n className=\"form-control\"\n id={'new_' + col.columnKey}\n name={col.columnKey}\n placeholder={col?.value}\n onChange={handleChange}\n value={cell_value}/>\n </td>);\n\n });\n\n cells.push(\n <td key='add_new'>\n <button className=\"btn btn-default\" onClick={addNew}> Add</button>\n </td>\n );\n\n return cells;\n};\n\nconst SortableTable = ({data, options, columns, dropCallback, orderField, idField}) => {\n\n const [rows, setRows] = useState(data);\n const [newRow, setNewRow] = useState({});\n\n useEffect(() => {\n setRows(data);\n }, [data])\n\n\n const renderRow = (row, columns, options, index) => {\n return (\n <SortableTableRow even={index % 2 === 0} key={row.id} index={index} id={row.id}\n moveCard={moveRow}\n findRow={findRow}\n dropItem={onDropItem}>\n {createRow(row, columns, options.actions)}\n </SortableTableRow>\n )\n };\n\n const saveNewRow = (ev) => {\n ev.preventDefault();\n options?.actions?.save?.onClick(newRow);\n setNewRow({});\n }\n\n const sortRows = (rows2Sort) => {\n rows2Sort.sort(function (a, b) {\n const x = a[orderField];\n const y = b[orderField];\n return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n });\n return rows2Sort;\n }\n\n const findRow = useCallback(\n (id) => {\n const row = rows.filter((r) => r[idField] === id)[0]\n return {\n row,\n index: rows.indexOf(row),\n }\n },\n [rows],\n )\n\n const moveRow = useCallback(\n (dragIndex, hoverIndex) => {\n\n setRows((prevRows) => {\n\n prevRows = update(prevRows, {\n $splice: [\n [dragIndex, 1],\n [hoverIndex, 0, prevRows[dragIndex]],\n ],\n });\n\n for (let i in prevRows) {\n prevRows[i][orderField] = parseInt(i) + 1;\n }\n\n return sortRows(prevRows)\n });\n },\n [rows, setRows],\n )\n\n const onDropItem = (id, newOrder) => {\n const sortedRows = sortRows(rows);\n setRows(sortedRows);\n dropCallback(sortedRows, id, newOrder)\n }\n\n const handleNewChange = (ev) => {\n let field = ev.target;\n let newRowTmp = {...newRow};\n let {name, value} = field;\n\n if (field.type === 'checkbox') {\n value = field.checked;\n }\n newRowTmp[name] = value;\n setNewRow(newRowTmp);\n }\n\n let tableClass = options.hasOwnProperty('className') ? options.className : '';\n let shouldRenderNewRow = options?.actions?.save?.onClick && options?.actions?.save?.onClick !== null;\n\n return (\n <div className=\"sortable-table-box\">\n <i>{T.translate(\"general.drag_and_drop\")}</i>\n <table className={\"table table-striped table-hover sortableTable \" + tableClass}>\n <thead>\n <tr>\n {columns.map((col, i) => {\n let colWidth = (col.width) ? col.width : defaults.colWidth;\n return (\n <SortableTableHeading width={colWidth} key={i}>\n {col.value}\n </SortableTableHeading>\n );\n })}\n {options.actions &&\n <SortableTableHeading key='actions'>\n Actions\n </SortableTableHeading>\n }\n </tr>\n </thead>\n <tbody>\n {columns.length > 0 && rows.map((row, i) => {\n if (Array.isArray(row) && row.length !== columns.length) {\n console.warn(`Data at row ${i} is ${row.length}. It should be ${columns.length}.`);\n return <tr/>\n }\n return (\n <DndProvider backend={HTML5Backend} key={i}>\n {renderRow(row, columns, options, i)}\n </DndProvider>\n );\n })}\n </tbody>\n {shouldRenderNewRow &&\n <tfoot>\n <tr>\n {renderNewRow(columns, newRow, saveNewRow, handleNewChange)}\n </tr>\n </tfoot>\n }\n </table>\n </div>\n );\n};\n\nSortableTable.defaultProps = {\n idField: 'id',\n}\n\nSortableTable.propTypes = {\n data: PropTypes.array.isRequired,\n options: PropTypes.shape({\n className: PropTypes.string,\n actions: PropTypes.object\n }).isRequired,\n columns: PropTypes.arrayOf(PropTypes.shape({\n columnKey: PropTypes.string.isRequired,\n value: PropTypes.any.isRequired,\n input: PropTypes.string,\n render: PropTypes.func,\n })).isRequired,\n dropCallback: PropTypes.func.isRequired,\n orderField: PropTypes.string.isRequired,\n idField: PropTypes.string,\n}\n\nexport default SortableTable;\n"],"names":["root","factory","exports","module","define","amd","this","_ref","children","replaceNewLine","className","rest","_objectWithoutProperties","_excluded","React","_extends","dangerouslySetInnerHTML","__html","replace","props","value","RawHTML","toString","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","SortableTableHeading","constructor","super","render","width","SortableActionsTableCell","handleAction","bind","shouldDisplayAction","action","id","display","ev","stopPropagation","preventDefault","actions","edit","href","onClick","delete","custom","map","tooltip","name","icon","SortableTableRow","text","even","index","moveCard","dropItem","findRow","originalIndex","refRow","useRef","handlerId","drop","useDrop","accept","collect","monitor","getHandlerId","hover","item","_refRow$current","current","dragIndex","hoverIndex","hoverBoundingRect","getBoundingClientRect","hoverMiddleY","bottom","top","hoverClientY","getClientOffset","y","isDragging","drag","useDrag","type","end","_item","droppedId","didDrop","opacity","ref","role","style","_objectSpread","border","padding","marginBottom","backgroundColor","cursor","propTypes","PropTypes","isRequired","defaults","SortableTable","data","options","columns","dropCallback","orderField","idField","_options$actions2","_options$actions2$sav","_options$actions3","_options$actions3$sav","rows","setRows","useState","newRow","setNewRow","useEffect","renderRow","row","moveRow","onDropItem","createRow","cells","col","i","TableCell","title","columnKey","push","sortRows","rows2Sort","sort","b","x","useCallback","filter","indexOf","prevRows","update","$splice","parseInt","newOrder","sortedRows","tableClass","shouldRenderNewRow","save","T","colWidth","length","Array","isArray","console","warn","DndProvider","backend","HTML5Backend","renderNewRow","new_row","addNew","handleChange","cell_value","input","onChange","checked","placeholder","_options$actions","_options$actions$save","field","target","newRowTmp","defaultProps"],"sourceRoot":""}
|
package/lib/security/actions.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(()=>(()=>{"use strict";var e={5097:(e,t,o)=>{o.r(t),o.d(t,{CLEAR_SESSION_STATE:()=>S,LOGOUT_USER:()=>R,RECEIVE_USER_INFO:()=>p,REQUEST_USER_INFO:()=>E,SESSION_STATE_STATUS_CHANGED:()=>O,SESSION_STATE_STATUS_ERROR:()=>w,SESSION_STATE_STATUS_UNCHANGED:()=>g,SET_LOGGED_USER:()=>_,UPDATE_SESSION_STATE_STATUS:()=>f,UPDATE_USER_INFO:()=>T,doLogout:()=>h,getUserInfo:()=>A,onUserAuth:()=>y,updateSessionStateStatus:()=>m,updateUserInfo:()=>U});var r=o(1116),n=o.n(r),s=o(6842),i=o.n(s),a=o(9087),l=o(9558),c=o(2183);function u(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function d(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?u(Object(o),!0).forEach((function(t){n()(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):u(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}const _="SET_LOGGED_USER",R="LOGOUT_USER",E="REQUEST_USER_INFO",p="RECEIVE_USER_INFO",S="CLEAR_SESSION_STATE",f="UPDATE_SESSION_STATE_STATUS",g="unchanged",O="changed",w="error",T="UPDATE_USER_INFO",y=(e,t,o,r=0,n=null)=>s=>{(0,c.storeAuthInfo)(e,r,n,t),s({type:_,payload:{sessionState:o}})},h=e=>(t,o)=>{t({type:R,payload:{backUrl:e}})},A=(e="groups",t="",o=null,r=null,n=null)=>async(s,u)=>{let d=(0,l.getAllowedUserGroups)();d=""!==d?d.split(" "):[];let{loggedUserState:_}=u(),{member:R}=_,S=await(0,c.getAccessToken)();if(null!=R)return null!=r&&null!=o&&r.push(o),Promise.resolve();null==n&&(n=a.authErrorHandler),s((0,a.startLoading)());let f={access_token:S,expand:e};return t&&(f.fields=t),(0,a.getRequest)((0,a.createAction)(E),(0,a.createAction)(p),(0,l.buildAPIBaseUrl)("/api/v1/members/me"),n)(f)(s,u).then((()=>{s((0,a.stopLoading)());let{member:e}=u().loggedUserState;if(null==e){let e={title:"ERROR",html:i().translate("errors.user_not_set"),type:"error"};s((0,a.showMessage)(e,c.initLogOut))}if(d.length>0){if(0===e.groups.filter(((e,t)=>d.includes(e.code))).length){let e={title:"ERROR",html:i().translate("errors.user_not_authz"),type:"error"};return void s((0,a.showMessage)(e,c.initLogOut))}}null!=r&&null!=o&&r.push(o)}))},U=e=>(t,o)=>{let{loggedUserState:r}=o(),{member:n}=r;if(null==n)throw Error("Member is not set.");if(e.id!=n.id)throw Error("Member is not the same.");t({type:T,payload:d({},e)})},m=e=>(t,o)=>{t({type:f,payload:{sessionStateStatus:e}})}},3195:(e,t,o)=>{o.d(t,{AUTH_ERROR_ACCESS_TOKEN_EXPIRED:()=>s,AUTH_ERROR_LOCK_ACQUIRE_ERROR:()=>i,AUTH_ERROR_MISSING_AUTH_INFO:()=>r,AUTH_ERROR_MISSING_REFRESH_TOKEN:()=>n,AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR:()=>l,AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR:()=>a});const r="AUTH_ERROR_MISSING_AUTH_INFO",n="AUTH_ERROR_MISSING_REFRESH_TOKEN",s="AUTH_ERROR_ACCESS_TOKEN_EXPIRED",i="AUTH_ERROR_LOCK_ACQUIRE_ERROR",a="AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR",l="AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR"},2183:(e,t,o)=>{o.d(t,{doLogin:()=>T,getAccessToken:()=>U,initLogOut:()=>j,storeAuthInfo:()=>k});var r=o(9558),n=o(5812),s=o.n(n);o(806);const i=require("browser-tabs-lock");var a=o.n(i);const l=require("js-cookie");var c=o.n(l),u=o(8041),d=o.n(u),_=(o(9891),o(5097),o(8853)),R=o(3195);const Lock=new(a()),GET_TOKEN_SILENTLY_LOCK_KEY="openstackuicore.lock.getTokenSilently",E="code",p="authInfo",S="nonce",f="pkce",g="idToken",O="BackUrl",w=e=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o="";for(let r=0;r<e;r++)o+=t.charAt(Math.floor(62*Math.random()));return o},T=(e=null,t=null,o=null,n=null,s=null,i=null)=>{let a=((e=null,t=null,o=null,n=null,s=null,i=null,a=null,l=O)=>{let c=L(),u=(0,r.getAuthCallback)(),_=C(),R=P(),p=H();null!=e&&(u+=`?${l}=${encodeURIComponent(e)}`);let g=w(16);(0,r.putOnLocalStorage)(S,g);let T=d()(`${_}/oauth2/auth`),h={response_type:encodeURI(p),scope:encodeURI(R),nonce:g,response_mode:"fragment",client_id:encodeURI(c),redirect_uri:encodeURI(u)};if(p===E){const e=y();(0,r.putOnLocalStorage)(f,JSON.stringify(e)),h.code_challenge=e.codeChallenge,h.code_challenge_method="S256",h.approval_prompt="force"}return t&&(h.prompt=t),R&&R.includes("offline_access")&&(h.prompt="consent"),o&&(h.id_token_hint=o),n&&(h.provider=n),i&&(h.otp_login_hint=i),s&&(h.login_hint=encodeURI(s)),a&&(h.tenant=a),T=T.query(h),T})(e,o,null,t,n,s,i);(0,r.getCurrentLocation)().replace(a.toString())},y=()=>{const e=(0,r.base64URLEncode)((0,_.dz)(64));return{codeVerifier:e,codeChallenge:(0,_.gl)(e,"Base64url"),createdAt:new Date}},h=async(e,t)=>{if(e===E&&v()){if(!t)throw I(),Error(R.AUTH_ERROR_MISSING_REFRESH_TOKEN);let e=await(async(e,t=5,o=1e3)=>{for(let r=0;r<t;r++)try{return await e()}catch(e){if(!e.message||!e.message.startsWith(R.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR)||r===t-1)throw e;const n=o*Math.pow(2,r);console.log(`retryWithBackoff retry ${r+1}/${t} in ${n}ms`),await new Promise((e=>setTimeout(e,n)))}})((()=>m(t))),{access_token:o,expires_in:r,refresh_token:n,id_token:s}=e;return void 0===n&&(n=null),k(o,r,n,s),o}throw I(),Error(R.AUTH_ERROR_ACCESS_TOKEN_EXPIRED)},A=async()=>{console.log("openstack-uicore-foundation::Security::methods::_getAccessToken");let e=b();if(!e)throw console.log("openstack-uicore-foundation::Security::methods::_getAccessToken AUTH_ERROR_MISSING_AUTH_INFO"),Error(R.AUTH_ERROR_MISSING_AUTH_INFO);let{accessToken:t,expiresIn:o,accessTokenUpdatedAt:r,refreshToken:n}=e,i=H();const a=s()().unix();let l=a-r;return o-=60,console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken now ${a} accessTokenUpdatedAt ${r} expiresIn ${o} timeElapsedSecs ${l}`),(l>=o||null==t)&&(console.log("openstack-uicore-foundation::Security::methods::_getAccessToken access token expired, refreshing it ..."),t=await h(i,n)),t},U=async()=>{if("undefined"!=typeof navigator&&navigator.locks)return await navigator.locks.request(GET_TOKEN_SILENTLY_LOCK_KEY,(async e=>(console.log("openstack-uicore-foundation::Security::methods::getAccessToken web lock api",e),await A())));if(!await(0,r.retryPromise)((()=>Lock.acquireLock(GET_TOKEN_SILENTLY_LOCK_KEY,6e3)),10))throw Error(R.AUTH_ERROR_LOCK_ACQUIRE_ERROR);try{return await A()}finally{await Lock.releaseLock(GET_TOKEN_SILENTLY_LOCK_KEY)}},m=async e=>{let t=C(),o=L();const n={grant_type:"refresh_token",client_id:encodeURI(o),refresh_token:e},s=new AbortController,i=setTimeout((()=>s.abort()),1e4);let a,l;try{a=await fetch(`${t}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(n),signal:s.signal})}catch(e){throw console.log("refreshAccessToken network error:",e.message),Error(`${R.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: ${e.message}`)}finally{clearTimeout(i)}if(!a.ok){if(console.log(`refreshAccessToken server error: ${a.status} - ${a.statusText}`),a.status>=500||408===a.status||429===a.status)throw Error(`${R.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: ${a.status} - ${a.statusText}`);throw(0,r.setSessionClearingState)(!0),Error(`${R.AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: ${a.status} - ${a.statusText}`)}try{l=await a.json()}catch(e){throw Error(`${R.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: invalid JSON response from IDP`)}let{access_token:c,refresh_token:u,expires_in:d,id_token:_}=l;if(!c)throw(0,r.setSessionClearingState)(!0),Error(`${R.AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: missing access_token in refresh response`);return{access_token:c,refresh_token:u,expires_in:d,id_token:_}},k=(e,t,o=null,n=null)=>{let s=b(),i={accessToken:e,expiresIn:t,accessTokenUpdatedAt:Math.floor(Date.now()/1e3)};null==o&&s&&(o=s.refreshToken),null==n&&s&&(n=s.idToken),o&&(i.refreshToken=o),n?(i[g]=n,c().set(g,n,{secure:!0,sameSite:"Lax"})):c().remove(g),(0,r.putOnLocalStorage)(p,JSON.stringify(i))},b=()=>{try{let e=(0,r.getFromLocalStorage)(p,!1);return e?JSON.parse(e):null}catch(e){return null}},I=()=>{"undefined"!=typeof window&&((0,r.removeFromLocalStorage)(p),c().remove(g))},N=()=>{if("undefined"!=typeof window){const e=b();return e?e.idToken:null}return null},L=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,H=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",v=()=>"undefined"==typeof window||new Boolean(window.OAUTH2_USE_REFRESH_TOKEN||!0),C=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,P=()=>"undefined"!=typeof window?window.SCOPES:null,j=()=>{(0,r.getCurrentLocation)().replace(((e=null)=>{let t=C(),o=L(),n=d()(`${t}/oauth2/end-session`),s=w(16),i=`${(0,r.getOrigin)()}/auth/logout`;(0,r.putOnLocalStorage)("post_logout_state",s);const a={post_logout_redirect_uri:encodeURI(i),client_id:encodeURI(o),state:s};return e&&(a.id_token_hint=e),n.query(a)})(N()).toString())}},9087:(e,t,o)=>{o.d(t,{authErrorHandler:()=>b,createAction:()=>g,getRequest:()=>I,showMessage:()=>C,startLoading:()=>O,stopLoading:()=>w});var r=o(2462),n=o.n(r),s=(o(1116),o(806)),i=o.n(s),a=o(8041),l=o.n(a),c=o(9236),u=o.n(c),d=o(6842),_=o.n(d),R=o(9558),E=o(5097),p=o(2183);o(3209);const S=["access_token"];l().escapeQuerySpace=!1;let f=i();const g=e=>t=>({type:e,payload:t}),O=(g("RESET_LOADING"),g("START_LOADING")),w=g("STOP_LOADING"),T={},y={},h=e=>0===Object.keys(e).length&&e.constructor===Object,A=(e,t,o,r)=>({httpCode:e,title:t,html:o,type:r}),U=(e,t,o)=>A(e,t,o,"error"),m=(e,t,o)=>A(e,t,o,"warning"),k=()=>e=>{const t=(0,R.getCurrentPathName)(),o=(0,R.isClearingSessionState)();e({type:E.CLEAR_SESSION_STATE,payload:{}}),o||((0,R.setSessionClearingState)(!0),console.log("authErrorHandler 401 - re login"),(0,p.doLogin)(t))},b=(e,t,o=C)=>t=>{var r,n,s,i;const a=e.status;let l,c,u="";switch(t(w()),a){case 401:o!==C?(l=U(a,"ERROR",_().translate("errors.user_not_auth")),c=()=>t(k())):t(k());break;case 403:l=U(a,"ERROR",_().translate("errors.user_not_authz")),c=p.initLogOut;break;case 404:u=(null===(r=e.response.body)||void 0===r?void 0:r.message)||(null===(n=e.response.error)||void 0===n?void 0:n.message)||e.message,null!==(s=e.response.body)&&void 0!==s&&null!==(i=s.errors)&&void 0!==i&&i.length&&(u+=`<br>${e.response.body.errors.join("<br>")}`),l=m(a,"Not Found",u);break;case 412:for(const[t,o]of Object.entries(e.response.body.errors))u+=isNaN(t)?`${t}: `:"",u+=`${o}<br>`;t({type:"VALIDATE",payload:{errors:e.response.body.errors}}),l=m(a,"Validation error",u);break;default:l=U(a,"ERROR",_().translate("errors.server_error"))}l&&t(o(l,c))},I=(e,t,o,r=N,s={},i=!1)=>(a={})=>(c,u)=>{let d=l()(o),_=d.toString();if(!h(a)){const{access_token:e}=a,t=n()(a,S);_=d.query(t).toString(),d=d.query(a)}return e&&"function"==typeof e&&c(e(s)),(e=>{T[e]&&(T[e].abort(),console.log(`aborted request ${e}`),delete T[e])})(_),new Promise(((e,o)=>{let n=f.get(d.toString());if(i&&y.hasOwnProperty(_)){const{etag:e}=y[_];e&&n.set("If-None-Match",e)}n.timeout({response:6e4,deadline:6e4}).end(v(c,u,t,r,e,o,_,i)),((e,t)=>{T[e]=t})(_,n)}))},N=(e,t)=>e=>{let o=t.body,r="";o instanceof Object&&o.hasOwnProperty("message")&&(r=o.message),u().fire(t.statusText,r,"error")},L=e=>e.toLowerCase(),H=(e,t={})=>{const o=(e=>Object.keys(e))(t).find((e=>t=>L(t)===e)(e));return o?t[o]:void 0},v=(e,t,o,r,n,s,i=null,a=!1)=>(l,c)=>{if(l||!c.ok){if(304===l.status&&y.hasOwnProperty(i)&&a){const{body:t}=y[i];return"function"==typeof o?(e(o({response:t})),n({response:t})):(e(o),n({response:t}))}return r&&r(l,c)(e,t),s({err:l,res:c,dispatch:e,state:t})}let u=c.body;if(a){const e=H("etag",c.headers);e&&(y[i]={etag:e,body:u})}return"function"==typeof o?(e(o({response:u})),n({response:u})):(e(o),n({response:u}))},C=(e,t=null)=>o=>{o(w()),u().fire(e).then((e=>{e.value&&"function"==typeof t&&t()}))}},3209:(e,t,o)=>{},8853:(e,t,o)=>{o.d(t,{dz:()=>_,gl:()=>R});require("spark-md5");const r=require("crypto-js/sha256");var n=o.n(r);const s=require("crypto-js/enc-base64url");var i=o.n(s);const l=require("crypto-js/enc-hex");var c=o.n(l);const u=65536,d="undefined"!=typeof window?window.crypto||window.msCrypto:null,_=e=>{if(e>4294967295)throw new RangeError("requested too many random bytes");const t=Buffer.allocUnsafe(e);if(!d)return a;if(e>0)if(e>u)for(let o=0;o<e;o+=u)d.getRandomValues(t.slice(o,o+u));else d.getRandomValues(t);return t},R=(e,t="hex")=>{let o=c();return"Base64url"===t&&(o=i()),n()(e).toString(o)}},9558:(e,t,o)=>{o.d(t,{base64URLEncode:()=>E,buildAPIBaseUrl:()=>l,getAllowedUserGroups:()=>a,getAuthCallback:()=>r,getCurrentLocation:()=>n,getCurrentPathName:()=>i,getFromLocalStorage:()=>u,getOrigin:()=>s,isClearingSessionState:()=>_,putOnLocalStorage:()=>c,removeFromLocalStorage:()=>d,retryPromise:()=>p,setSessionClearingState:()=>R});o(5812),o(8041);const r=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,n=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},s=()=>"undefined"!=typeof window?window.location.origin:null,i=()=>"undefined"!=typeof window?window.location.pathname:null,a=()=>"undefined"!=typeof window?window.ALLOWED_USER_GROUPS||"":null,l=e=>"undefined"!=typeof window?`${window.API_BASE_URL}${e}`:null``,c=(e,t)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,t)},u=(e,t)=>{if("undefined"!=typeof window){let o=window.localStorage.getItem(e);return t&&(console.log(`getFromLocalStorage removing key ${e}`),d(e)),o}return null},d=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},_=()=>"undefined"!=typeof window&&window.clearing_session_state,R=e=>{"undefined"!=typeof window&&(window.clearing_session_state=e)},E=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),p=async(e,t=3)=>{for(let o=0;o<t;o++)if(await e())return!0;return!1}},1116:e=>{e.exports=require("@babel/runtime/helpers/defineProperty")},2462:e=>{e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},6842:e=>{e.exports=require("i18n-react/dist/i18n-react")},9891:e=>{e.exports=require("idtoken-verifier")},5812:e=>{e.exports=require("moment-timezone")},806:e=>{e.exports=require("superagent/lib/client")},9236:e=>{e.exports=require("sweetalert2")},8041:e=>{e.exports=require("urijs")}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,o),s.exports}return(()=>{o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t}})(),(()=>{o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),o(5097)})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(()=>(()=>{"use strict";var e={5097:(e,t,o)=>{o.r(t),o.d(t,{CLEAR_SESSION_STATE:()=>S,LOGOUT_USER:()=>R,RECEIVE_USER_INFO:()=>p,REQUEST_USER_INFO:()=>E,SESSION_STATE_STATUS_CHANGED:()=>O,SESSION_STATE_STATUS_ERROR:()=>w,SESSION_STATE_STATUS_UNCHANGED:()=>g,SET_LOGGED_USER:()=>_,UPDATE_SESSION_STATE_STATUS:()=>f,UPDATE_USER_INFO:()=>T,doLogout:()=>h,getUserInfo:()=>A,onUserAuth:()=>y,updateSessionStateStatus:()=>m,updateUserInfo:()=>U});var r=o(1116),n=o.n(r),s=o(6842),i=o.n(s),a=o(9087),l=o(9558),c=o(2183);function u(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function d(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?u(Object(o),!0).forEach((function(t){n()(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):u(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}const _="SET_LOGGED_USER",R="LOGOUT_USER",E="REQUEST_USER_INFO",p="RECEIVE_USER_INFO",S="CLEAR_SESSION_STATE",f="UPDATE_SESSION_STATE_STATUS",g="unchanged",O="changed",w="error",T="UPDATE_USER_INFO",y=(e,t,o,r=0,n=null)=>s=>{(0,c.storeAuthInfo)(e,r,n,t),s({type:_,payload:{sessionState:o}})},h=e=>(t,o)=>{t({type:R,payload:{backUrl:e}})},A=(e="groups",t="",o=null,r=null,n=null,s=!1)=>async(u,d)=>{let _=(0,l.getAllowedUserGroups)();_=""!==_?_.split(" "):[];let{loggedUserState:R}=d(),{member:S}=R,f=await(0,c.getAccessToken)();if(null!=S&&!s)return null!=r&&null!=o&&r.push(o),Promise.resolve();null==n&&(n=a.authErrorHandler),u((0,a.startLoading)());let g={access_token:f,expand:e};return t&&(g.fields=t),(0,a.getRequest)((0,a.createAction)(E),(0,a.createAction)(p),(0,l.buildAPIBaseUrl)("/api/v1/members/me"),n)(g)(u,d).then((()=>{u((0,a.stopLoading)());let{member:e}=d().loggedUserState;if(null==e){let e={title:"ERROR",html:i().translate("errors.user_not_set"),type:"error"};u((0,a.showMessage)(e,c.initLogOut))}if(_.length>0){if(0===e.groups.filter(((e,t)=>_.includes(e.code))).length){let e={title:"ERROR",html:i().translate("errors.user_not_authz"),type:"error"};return void u((0,a.showMessage)(e,c.initLogOut))}}null!=r&&null!=o&&r.push(o)}))},U=e=>(t,o)=>{let{loggedUserState:r}=o(),{member:n}=r;if(null==n)throw Error("Member is not set.");if(e.id!=n.id)throw Error("Member is not the same.");t({type:T,payload:d({},e)})},m=e=>(t,o)=>{t({type:f,payload:{sessionStateStatus:e}})}},3195:(e,t,o)=>{o.d(t,{AUTH_ERROR_ACCESS_TOKEN_EXPIRED:()=>s,AUTH_ERROR_LOCK_ACQUIRE_ERROR:()=>i,AUTH_ERROR_MISSING_AUTH_INFO:()=>r,AUTH_ERROR_MISSING_REFRESH_TOKEN:()=>n,AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR:()=>l,AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR:()=>a});const r="AUTH_ERROR_MISSING_AUTH_INFO",n="AUTH_ERROR_MISSING_REFRESH_TOKEN",s="AUTH_ERROR_ACCESS_TOKEN_EXPIRED",i="AUTH_ERROR_LOCK_ACQUIRE_ERROR",a="AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR",l="AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR"},2183:(e,t,o)=>{o.d(t,{doLogin:()=>T,getAccessToken:()=>U,initLogOut:()=>j,storeAuthInfo:()=>k});var r=o(9558),n=o(5812),s=o.n(n);o(806);const i=require("browser-tabs-lock");var a=o.n(i);const l=require("js-cookie");var c=o.n(l),u=o(8041),d=o.n(u),_=(o(9891),o(5097),o(8853)),R=o(3195);const Lock=new(a()),GET_TOKEN_SILENTLY_LOCK_KEY="openstackuicore.lock.getTokenSilently",E="code",p="authInfo",S="nonce",f="pkce",g="idToken",O="BackUrl",w=e=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o="";for(let r=0;r<e;r++)o+=t.charAt(Math.floor(62*Math.random()));return o},T=(e=null,t=null,o=null,n=null,s=null,i=null)=>{let a=((e=null,t=null,o=null,n=null,s=null,i=null,a=null,l=O)=>{let c=L(),u=(0,r.getAuthCallback)(),_=C(),R=P(),p=H();null!=e&&(u+=`?${l}=${encodeURIComponent(e)}`);let g=w(16);(0,r.putOnLocalStorage)(S,g);let T=d()(`${_}/oauth2/auth`),h={response_type:encodeURI(p),scope:encodeURI(R),nonce:g,response_mode:"fragment",client_id:encodeURI(c),redirect_uri:encodeURI(u)};if(p===E){const e=y();(0,r.putOnLocalStorage)(f,JSON.stringify(e)),h.code_challenge=e.codeChallenge,h.code_challenge_method="S256",h.approval_prompt="force"}return t&&(h.prompt=t),R&&R.includes("offline_access")&&(h.prompt="consent"),o&&(h.id_token_hint=o),n&&(h.provider=n),i&&(h.otp_login_hint=i),s&&(h.login_hint=encodeURI(s)),a&&(h.tenant=a),T=T.query(h),T})(e,o,null,t,n,s,i);(0,r.getCurrentLocation)().replace(a.toString())},y=()=>{const e=(0,r.base64URLEncode)((0,_.dz)(64));return{codeVerifier:e,codeChallenge:(0,_.gl)(e,"Base64url"),createdAt:new Date}},h=async(e,t)=>{if(e===E&&v()){if(!t)throw I(),Error(R.AUTH_ERROR_MISSING_REFRESH_TOKEN);let e=await(async(e,t=5,o=1e3)=>{for(let r=0;r<t;r++)try{return await e()}catch(e){if(!e.message||!e.message.startsWith(R.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR)||r===t-1)throw e;const n=o*Math.pow(2,r);console.log(`retryWithBackoff retry ${r+1}/${t} in ${n}ms`),await new Promise((e=>setTimeout(e,n)))}})((()=>m(t))),{access_token:o,expires_in:r,refresh_token:n,id_token:s}=e;return void 0===n&&(n=null),k(o,r,n,s),o}throw I(),Error(R.AUTH_ERROR_ACCESS_TOKEN_EXPIRED)},A=async()=>{console.log("openstack-uicore-foundation::Security::methods::_getAccessToken");let e=b();if(!e)throw console.log("openstack-uicore-foundation::Security::methods::_getAccessToken AUTH_ERROR_MISSING_AUTH_INFO"),Error(R.AUTH_ERROR_MISSING_AUTH_INFO);let{accessToken:t,expiresIn:o,accessTokenUpdatedAt:r,refreshToken:n}=e,i=H();const a=s()().unix();let l=a-r;return o-=60,console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken now ${a} accessTokenUpdatedAt ${r} expiresIn ${o} timeElapsedSecs ${l}`),(l>=o||null==t)&&(console.log("openstack-uicore-foundation::Security::methods::_getAccessToken access token expired, refreshing it ..."),t=await h(i,n)),t},U=async()=>{if("undefined"!=typeof navigator&&navigator.locks)return await navigator.locks.request(GET_TOKEN_SILENTLY_LOCK_KEY,(async e=>(console.log("openstack-uicore-foundation::Security::methods::getAccessToken web lock api",e),await A())));if(!await(0,r.retryPromise)((()=>Lock.acquireLock(GET_TOKEN_SILENTLY_LOCK_KEY,6e3)),10))throw Error(R.AUTH_ERROR_LOCK_ACQUIRE_ERROR);try{return await A()}finally{await Lock.releaseLock(GET_TOKEN_SILENTLY_LOCK_KEY)}},m=async e=>{let t=C(),o=L();const n={grant_type:"refresh_token",client_id:encodeURI(o),refresh_token:e},s=new AbortController,i=setTimeout((()=>s.abort()),1e4);let a,l;try{a=await fetch(`${t}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(n),signal:s.signal})}catch(e){throw console.log("refreshAccessToken network error:",e.message),Error(`${R.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: ${e.message}`)}finally{clearTimeout(i)}if(!a.ok){if(console.log(`refreshAccessToken server error: ${a.status} - ${a.statusText}`),a.status>=500||408===a.status||429===a.status)throw Error(`${R.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: ${a.status} - ${a.statusText}`);throw(0,r.setSessionClearingState)(!0),Error(`${R.AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: ${a.status} - ${a.statusText}`)}try{l=await a.json()}catch(e){throw Error(`${R.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: invalid JSON response from IDP`)}let{access_token:c,refresh_token:u,expires_in:d,id_token:_}=l;if(!c)throw(0,r.setSessionClearingState)(!0),Error(`${R.AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: missing access_token in refresh response`);return{access_token:c,refresh_token:u,expires_in:d,id_token:_}},k=(e,t,o=null,n=null)=>{let s=b(),i={accessToken:e,expiresIn:t,accessTokenUpdatedAt:Math.floor(Date.now()/1e3)};null==o&&s&&(o=s.refreshToken),null==n&&s&&(n=s.idToken),o&&(i.refreshToken=o),n?(i[g]=n,c().set(g,n,{secure:!0,sameSite:"Lax"})):c().remove(g),(0,r.putOnLocalStorage)(p,JSON.stringify(i))},b=()=>{try{let e=(0,r.getFromLocalStorage)(p,!1);return e?JSON.parse(e):null}catch(e){return null}},I=()=>{"undefined"!=typeof window&&((0,r.removeFromLocalStorage)(p),c().remove(g))},N=()=>{if("undefined"!=typeof window){const e=b();return e?e.idToken:null}return null},L=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,H=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",v=()=>"undefined"==typeof window||new Boolean(window.OAUTH2_USE_REFRESH_TOKEN||!0),C=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,P=()=>"undefined"!=typeof window?window.SCOPES:null,j=()=>{(0,r.getCurrentLocation)().replace(((e=null)=>{let t=C(),o=L(),n=d()(`${t}/oauth2/end-session`),s=w(16),i=`${(0,r.getOrigin)()}/auth/logout`;(0,r.putOnLocalStorage)("post_logout_state",s);const a={post_logout_redirect_uri:encodeURI(i),client_id:encodeURI(o),state:s};return e&&(a.id_token_hint=e),n.query(a)})(N()).toString())}},9087:(e,t,o)=>{o.d(t,{authErrorHandler:()=>b,createAction:()=>g,getRequest:()=>I,showMessage:()=>C,startLoading:()=>O,stopLoading:()=>w});var r=o(2462),n=o.n(r),s=(o(1116),o(806)),i=o.n(s),a=o(8041),l=o.n(a),c=o(9236),u=o.n(c),d=o(6842),_=o.n(d),R=o(9558),E=o(5097),p=o(2183);o(3209);const S=["access_token"];l().escapeQuerySpace=!1;let f=i();const g=e=>t=>({type:e,payload:t}),O=(g("RESET_LOADING"),g("START_LOADING")),w=g("STOP_LOADING"),T={},y={},h=e=>0===Object.keys(e).length&&e.constructor===Object,A=(e,t,o,r)=>({httpCode:e,title:t,html:o,type:r}),U=(e,t,o)=>A(e,t,o,"error"),m=(e,t,o)=>A(e,t,o,"warning"),k=()=>e=>{const t=(0,R.getCurrentPathName)(),o=(0,R.isClearingSessionState)();e({type:E.CLEAR_SESSION_STATE,payload:{}}),o||((0,R.setSessionClearingState)(!0),console.log("authErrorHandler 401 - re login"),(0,p.doLogin)(t))},b=(e,t,o=C)=>t=>{var r,n,s,i;const a=e.status;let l,c,u="";switch(t(w()),a){case 401:o!==C?(l=U(a,"ERROR",_().translate("errors.user_not_auth")),c=()=>t(k())):t(k());break;case 403:l=U(a,"ERROR",_().translate("errors.user_not_authz")),c=p.initLogOut;break;case 404:u=(null===(r=e.response.body)||void 0===r?void 0:r.message)||(null===(n=e.response.error)||void 0===n?void 0:n.message)||e.message,null!==(s=e.response.body)&&void 0!==s&&null!==(i=s.errors)&&void 0!==i&&i.length&&(u+=`<br>${e.response.body.errors.join("<br>")}`),l=m(a,"Not Found",u);break;case 412:for(const[t,o]of Object.entries(e.response.body.errors))u+=isNaN(t)?`${t}: `:"",u+=`${o}<br>`;t({type:"VALIDATE",payload:{errors:e.response.body.errors}}),l=m(a,"Validation error",u);break;default:l=U(a,"ERROR",_().translate("errors.server_error"))}l&&t(o(l,c))},I=(e,t,o,r=N,s={},i=!1)=>(a={})=>(c,u)=>{let d=l()(o),_=d.toString();if(!h(a)){const{access_token:e}=a,t=n()(a,S);_=d.query(t).toString(),d=d.query(a)}return e&&"function"==typeof e&&c(e(s)),(e=>{T[e]&&(T[e].abort(),console.log(`aborted request ${e}`),delete T[e])})(_),new Promise(((e,o)=>{let n=f.get(d.toString());if(i&&y.hasOwnProperty(_)){const{etag:e}=y[_];e&&n.set("If-None-Match",e)}n.timeout({response:6e4,deadline:6e4}).end(v(c,u,t,r,e,o,_,i)),((e,t)=>{T[e]=t})(_,n)}))},N=(e,t)=>e=>{let o=t.body,r="";o instanceof Object&&o.hasOwnProperty("message")&&(r=o.message),u().fire(t.statusText,r,"error")},L=e=>e.toLowerCase(),H=(e,t={})=>{const o=(e=>Object.keys(e))(t).find((e=>t=>L(t)===e)(e));return o?t[o]:void 0},v=(e,t,o,r,n,s,i=null,a=!1)=>(l,c)=>{if(l||!c.ok){if(304===l.status&&y.hasOwnProperty(i)&&a){const{body:t}=y[i];return"function"==typeof o?(e(o({response:t})),n({response:t})):(e(o),n({response:t}))}return r&&r(l,c)(e,t),s({err:l,res:c,dispatch:e,state:t})}let u=c.body;if(a){const e=H("etag",c.headers);e&&(y[i]={etag:e,body:u})}return"function"==typeof o?(e(o({response:u})),n({response:u})):(e(o),n({response:u}))},C=(e,t=null)=>o=>{o(w()),u().fire(e).then((e=>{e.value&&"function"==typeof t&&t()}))}},3209:(e,t,o)=>{},8853:(e,t,o)=>{o.d(t,{dz:()=>_,gl:()=>R});require("spark-md5");const r=require("crypto-js/sha256");var n=o.n(r);const s=require("crypto-js/enc-base64url");var i=o.n(s);const l=require("crypto-js/enc-hex");var c=o.n(l);const u=65536,d="undefined"!=typeof window?window.crypto||window.msCrypto:null,_=e=>{if(e>4294967295)throw new RangeError("requested too many random bytes");const t=Buffer.allocUnsafe(e);if(!d)return a;if(e>0)if(e>u)for(let o=0;o<e;o+=u)d.getRandomValues(t.slice(o,o+u));else d.getRandomValues(t);return t},R=(e,t="hex")=>{let o=c();return"Base64url"===t&&(o=i()),n()(e).toString(o)}},9558:(e,t,o)=>{o.d(t,{base64URLEncode:()=>E,buildAPIBaseUrl:()=>l,getAllowedUserGroups:()=>a,getAuthCallback:()=>r,getCurrentLocation:()=>n,getCurrentPathName:()=>i,getFromLocalStorage:()=>u,getOrigin:()=>s,isClearingSessionState:()=>_,putOnLocalStorage:()=>c,removeFromLocalStorage:()=>d,retryPromise:()=>p,setSessionClearingState:()=>R});o(5812),o(8041);const r=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,n=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},s=()=>"undefined"!=typeof window?window.location.origin:null,i=()=>"undefined"!=typeof window?window.location.pathname:null,a=()=>"undefined"!=typeof window?window.ALLOWED_USER_GROUPS||"":null,l=e=>"undefined"!=typeof window?`${window.API_BASE_URL}${e}`:null``,c=(e,t)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,t)},u=(e,t)=>{if("undefined"!=typeof window){let o=window.localStorage.getItem(e);return t&&(console.log(`getFromLocalStorage removing key ${e}`),d(e)),o}return null},d=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},_=()=>"undefined"!=typeof window&&window.clearing_session_state,R=e=>{"undefined"!=typeof window&&(window.clearing_session_state=e)},E=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),p=async(e,t=3)=>{for(let o=0;o<t;o++)if(await e())return!0;return!1}},1116:e=>{e.exports=require("@babel/runtime/helpers/defineProperty")},2462:e=>{e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},6842:e=>{e.exports=require("i18n-react/dist/i18n-react")},9891:e=>{e.exports=require("idtoken-verifier")},5812:e=>{e.exports=require("moment-timezone")},806:e=>{e.exports=require("superagent/lib/client")},9236:e=>{e.exports=require("sweetalert2")},8041:e=>{e.exports=require("urijs")}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,o),s.exports}return(()=>{o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t}})(),(()=>{o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),o(5097)})()));
|
|
2
2
|
//# sourceMappingURL=actions.js.map
|