{"version":3,"sources":["components/NotFound.js","areas/user/ForgotPassword.js","areas/user/UserAccount.js","areas/user/LoginPage.js","components/TopNav.js","components/Unauthorised.js","components/LeftNav.js","components/TopAndLeftNavLayout.js","areas/home/Home.js","areas/user/User.js","App.js","index.js","components/TendrilApi.js","components/ErrorMessage.js"],"names":["__webpack_require__","d","__webpack_exports__","NotFound","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","n","semantic_ui_react__WEBPACK_IMPORTED_MODULE_1__","semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__","react_router_dom__WEBPACK_IMPORTED_MODULE_3__","props","a","createElement","style","display","alignItems","justifyContent","width","height","size","negative","header","content","padded","basic","textAlign","to","idleStep","ForgotPasswordBase","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","state","step","email","resetState","bind","assertThisInitialized","handleSubmit","handleChange","setState","event","preventDefault","knownEmail","tendrilApi","length","Error","functions","fetch","console","log","_context","t0","err","e","name","_ref","value","defineProperty","_this$props2","trigger","_this$state","react_default","Modal","closeIcon","onOpen","Header","as","Icon","Content","Message","success","Form","loading","undefined","Input","autoFocus","label","type","onChange","ErrorMessage","error","Button","primary","onClick","Component","ForgotPassword","withTendrilApi","PasswordChanger","oldPassword","newPassword","confirmNewPassword","handleUpdatePassword","claims","userId","result","setToken","token","_this$state2","Group","inline","cursor","tabIndex","Email","UserAccountBase","_this$props","user","accessAny","concat","scrolling","Segment","List","Item","Description","userName","fullName","Divider","UserAccount_PasswordChanger","Unauthorised","UserAccount","initialStep","LoginBase","password","history","trim","message","login","push","_this2","onSubmit","icon","iconPosition","autoComplete","target","Login","TopNavBase","customers","location","match","launcherMenu","launcherValue","addToLauncher","text","url","startsWith","isRsgUser","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","next","done","c","customerOrgCode","customerName","return","padding","Menu","secondary","Image","src","marginRight","Dropdown","item","compact","options","position","disabled","lineHeight","logout","TopNav","LeftNav","_Component","displayName","accordionTitleClick","inherits","createClass","key","titleProps","parentpath","path","navItems","color","inverted","vertical","map","idx","selected","pathname","active","_","isString","TopAndLeftNavLayout","_getPrototypeOf2","_len","arguments","args","Array","_key","apply","leftNavOpen","children","leftNavItems","rest","objectWithoutProperties","left","right","top","flexDirection","zIndex","flex","margin","className","bottom","transition","marginTop","overflowY","LeftNav_LeftNav","assign","Hero","objectSpread","background","Container","Footer","_ref2","backgroundColor","href","HomeBase","isLoading","load","mounted","prevProps","prevState","snapshot","Fragment","Home_Hero","flexGrow","Home_Footer","flexShrink","paddingBottom","marginBottom","warning","raised","Home","Loading","EmailConfirmation","Loadable","loader","then","module","PasswordReset","RegistrationExtEmailConfirmation","User","react_router","exact","component","Admin","Promise","all","Customer","App","TendrilApi","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","react_router_dom","basename","FetchError","_Error","status","data","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_5__","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_8__","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_wrapNativeSuper__WEBPACK_IMPORTED_MODULE_9__","DeleteVerbBit","PostVerbBit","PutVerbBit","AllVerbBits","TendrilApiContext","React","createContext","TendrilApiProvider","_React$Component","timerId","checkClaimsAndReschedule","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__","accessAll","refresh","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_3__","localStorage","getItem","userString","decode","JSON","parse","claimsHaveExpired","deleteStoredData","setTimeout","clearTimeout","exp","Date","now","removeItem","cookie","react__WEBPACK_IMPORTED_MODULE_10___default","Provider","_fetch","_x","_x2","toString","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","mark","_callee","body","method","headers","opts","response","json","_args","wrap","prev","Accept","Content-Type","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__","stringify","sent","ok","abrupt","stop","_x3","_x4","_this3","setItem","_login","_callee2","identifier","_this4","_context2","_x5","_x6","_refresh","_callee3","_this5","_context3","resource","resources","resourceClaims","Resource","isArray","parts","split","verbs","parseInt","sortBy","reverse","find","r","allowedVerbs","Consumer","flatMap","f","arr","reduce","x","y","_home_runner_work_290_0_arqten_server_290_0_arqten_server_Tendril_Web_ClientApp_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_1___default","visible","list","k","keys"],"mappings":"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","file":"static/js/main.47a8d9c8.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport { Message, Segment } from 'semantic-ui-react';\nimport { Link } from 'react-router-dom';\n\n\n\nexport function NotFound(props) {\n return (\n
\n
\n \n \n Home\n \n
\n
\n );\n}\n\n","import _ from 'lodash';\nimport React, { Component } from 'react';\nimport { Form, Header, Button, Container, Divider, Message, Modal, Icon } from 'semantic-ui-react';\nimport { TopAndLeftNavLayout } from '../../components/TopAndLeftNavLayout';\nimport { withTendrilApi } from '../../components/TendrilApi';\nimport { Unauthorised } from '../../components/Unauthorised';\nimport { ErrorMessage } from '../../components/ErrorMessage';\n\n\n\n\nconst idleStep = \"idle\";\nconst updatingStep = \"updating\";\nconst successStep = \"success\";\nconst errorStep = \"error\";\n\nclass ForgotPasswordBase extends Component {\n\n constructor(props) {\n super(props);\n this.state = { step: idleStep, email: '' };\n this.resetState = this.resetState.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleChange = this.handleChange.bind(this);\n }\n\n resetState() {\n this.setState({ step: idleStep, email: '' });\n }\n\n async handleSubmit(event) {\n\n event.preventDefault();\n\n try {\n const { knownEmail, tendrilApi } = this.props;\n const email = knownEmail || this.state.email;\n\n if (email.length === 0)\n throw new Error(\"An email address is required.\");\n\n this.setState({ step: updatingStep });\n\n await tendrilApi.functions.fetch(\"/api/user/requestpasswordreset\", { email });\n\n this.setState({ step: successStep });\n }\n catch (e) {\n console.log(e);\n this.setState({ err: e, step: errorStep });\n }\n }\n\n handleChange(e, { name, value }) {\n this.setState({ [name]: value });\n }\n\n render() {\n const { trigger, knownEmail } = this.props;\n const { step, email, err } = this.state;\n\n return (\n \n \n
\n \n \n Forgot password\n \n
\n
\n\n \n {step === successStep\n ? \n :
\n {knownEmail\n ?

Click the button below and we will send instructions for resetting your password to {knownEmail}.

\n :

Please enter your email address below and we will send instructions for resetting your password.

}\n\n {!knownEmail &&\n }\n\n {step === errorStep && }\n \n }\n
\n
);\n }\n}\n\n\nexport const ForgotPassword = withTendrilApi(ForgotPasswordBase);\n","import _ from 'lodash';\nimport React, { Component } from 'react';\nimport { Form, Header, Button, Container, Divider, Message, Modal, Icon, List, Segment } from 'semantic-ui-react';\nimport { TopAndLeftNavLayout } from '../../components/TopAndLeftNavLayout';\nimport { withTendrilApi } from '../../components/TendrilApi';\nimport { Unauthorised } from '../../components/Unauthorised';\nimport { ErrorMessage } from '../../components/ErrorMessage';\nimport { ForgotPassword } from './ForgotPassword';\n\n\n\n\nconst idleStep = \"idle\";\nconst updatingStep = \"updating\";\nconst successStep = \"success\";\nconst errorStep = \"error\";\n\nclass PasswordChanger extends Component {\n\n constructor(props) {\n super(props);\n this.state = { step: idleStep, oldPassword: '', newPassword: '', confirmNewPassword: '' };\n this.handleUpdatePassword = this.handleUpdatePassword.bind(this);\n this.handleChange = this.handleChange.bind(this);\n }\n\n async handleUpdatePassword(event) {\n event.preventDefault();\n try {\n const { oldPassword, newPassword, confirmNewPassword } = this.state;\n\n if (oldPassword.length === 0)\n throw new Error(\"Old password is required.\");\n\n if (confirmNewPassword !== newPassword)\n throw new Error(\"New passwords do not match.\");\n\n if (newPassword.length === 0)\n throw new Error(\"New password cannot be blank.\");\n\n const { tendrilApi } = this.props;\n const { claims } = tendrilApi;\n const userId = claims[\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier\"];\n\n this.setState({ step: updatingStep });\n\n const result = await tendrilApi.functions.fetch(\"/api/user/changepassword\", { userId, oldPassword, newPassword });\n\n tendrilApi.functions.setToken(result.token);\n this.setState({ step: successStep, oldPassword: '', newPassword: '', confirmNewPassword: '' });\n }\n catch (e) {\n console.log(e);\n this.setState({ err: e, step: errorStep });\n }\n }\n\n handleChange(e, { name, value }) {\n this.setState({ [name]: value });\n }\n\n render() {\n const { step, err } = this.state;\n const { tendrilApi } = this.props;\n const { claims } = tendrilApi;\n\n return (
\n
\n \n \n \n \n\n \n {step === errorStep && }\n\n \n \n\n   \n I forgot my password}\n knownEmail={claims.Email}\n />\n \n\n \n
);\n }\n}\n\n\n\n\n\n\n\nclass UserAccountBase extends Component {\n\n\n constructor(props) {\n super(props);\n\n }\n\n render() {\n const { trigger, tendrilApi } = this.props;\n const { claims, user, functions } = tendrilApi;\n if (claims) {\n\n if (functions.accessAny(`/api/user/${user.userId}`)) {\n\n return (\n \n \n
\n \n \n Account Settings\n \n
\n
\n\n \n\n \n
\n\n \n \n \n \n Username\n {user.userName}\n \n \n \n \n \n Email\n {user.email}\n \n \n \n \n \n Full name\n {user.fullName}\n \n \n \n \n\n \n \n \n \n \n \n );\n\n }\n }\n return ;\n }\n}\n\n\nexport const UserAccount = withTendrilApi(UserAccountBase);\n","import React, { Component } from 'react';\nimport { withRouter, Redirect } from 'react-router-dom';\nimport { withTendrilApi } from '../../components/TendrilApi';\nimport { ErrorMessage } from '../../components/ErrorMessage';\nimport { Form, Button, Message, Grid, Header, Segment, Modal, Icon } from 'semantic-ui-react';\nimport { ForgotPassword } from './ForgotPassword';\n\n\nconst initialStep = \"initial\";\nconst loggingInStep = \"loggingIn\";\n\nclass LoginBase extends Component {\n\n constructor(props) {\n super(props);\n this.state = { step: initialStep };\n this.handleSubmit = this.handleSubmit.bind(this);\n this.resetState = this.resetState.bind(this);\n }\n\n\n componentDidMount() {\n this.resetState();\n }\n\n resetState() {\n this.setState({\n userName: '',\n password: '',\n error: null,\n step: initialStep\n });\n }\n\n\n\n\n async handleSubmit(event) {\n\n event.preventDefault();\n\n const { history } = this.props;\n\n if (!this.state.userName || !this.state.userName.trim()) {\n this.setState({ error: { message: \"Username is required.\" } });\n return;\n }\n\n if (!this.state.password || !this.state.password.trim()) {\n this.setState({ error: { message: \"Password is required.\" } });\n return;\n }\n\n\n this.setState({ error: null, step: loggingInStep });\n\n try {\n await this.props.tendrilApi.functions.login(this.state.userName, this.state.password);\n\n history.push(\"/\");\n }\n catch (e) {\n this.setState({\n step: initialStep,\n error: e\n });\n }\n }\n\n\n\n render() {\n const { trigger } = this.props;\n\n return (\n \n \n
\n \n \n Log in to ARQTEN\n \n
\n
\n \n
\n this.setState({ userName: event.target.value })} />\n this.setState({ password: event.target.value })} />\n\n \n\n } />\n )}\n\n \n \n );\n }\n}\n\n\nexport const TopNav = withTendrilApi(TopNavBase);\n\n\n","import React, { Component } from 'react';\nimport { Message, Segment } from 'semantic-ui-react';\nimport { Link } from 'react-router-dom';\n\n\nexport function Unauthorised(props) {\n return (\n
\n
\n \n \n Home\n \n
\n
\n );\n}\n\n","import React, { Component } from 'react';\nimport {\n Menu, Icon\n} from 'semantic-ui-react';\nimport _ from 'lodash';\n\n\n\nexport class LeftNav extends Component {\n\n displayName = LeftNav.name;\n\n constructor(props) {\n super(props);\n\n this.accordionTitleClick = this.accordionTitleClick.bind(this);\n\n this.state = {};\n }\n\n accordionTitleClick(e, titleProps) {\n const { parentpath, path } = titleProps;\n\n // for each parent path, store which child is open\n if (this.state[parentpath] === path)\n this.setState({ [parentpath]: null }); // close\n else\n this.setState({ [parentpath]: path }); // closes existing, opens new\n }\n\n\n render() {\n const { location, history, match, navItems } = this.props;\n\n\n return (\n {navItems.map((item, idx) => {\n\n if (item.key) return item; // bit of a hack to allow supply of pre-made components. probably a better way\n\n const key = item.url ? item.url : item.label;\n\n const selected = location.pathname.startsWith(item.url);\n\n return (\n {\n if (_.isString(item.url))\n history.push(item.url);\n else\n item.url();\n })}>\n {item.icon && }\n {item.label}\n );\n })}\n );\n }\n\n}\n\n","import React, { Component } from 'react';\nimport { Button } from 'semantic-ui-react';\nimport { TopNav } from './TopNav';\nimport { LeftNav } from './LeftNav';\n\nexport class TopAndLeftNavLayout extends Component {\n state = {\n leftNavOpen: true\n };\n\n render() {\n const { children, leftNavItems, ...rest } = this.props;\n const { leftNavOpen } = this.state;\n\n const topNavHeight = 70;\n const leftNavWidth = 250;\n\n return (\n
\n
\n {leftNavItems &&\n
\n
}\n\n
\n \n
\n
\n\n {leftNavItems &&\n
\n \n
\n }\n\n
\n
\n {children}\n
\n
\n
\n );\n }\n}\n\n","import PropTypes from 'prop-types'\nimport React, { Component } from 'react'\n\nimport {\n Container,\n Header,\n Icon,\n Segment,\n Message, Image\n} from 'semantic-ui-react'\nimport { TopNav } from '../../components/TopNav';\nimport { TendrilApiContext, withTendrilApi, AllVerbBits } from '../../components/TendrilApi';\n\n\n\n\nconst Hero = ({ style }) => (\n //
\n
\n \n \n

XR Content Management Portal

\n
\n \n
\n);\n\n\n\nconst Footer = ({ style }) =>\n \n \n

ARQTEN © 2024 Real Serious Games

\n

Unauthorised access prohibited.

\n
\n
;\n\n\n\n\n\n\nclass HomeBase extends Component {\n\n constructor(props) {\n super(props);\n\n this.state = { user: null, isLoading: false };\n\n this.load = this.load.bind(this);\n }\n\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { tendrilApi } = this.props;\n const { claims } = tendrilApi;\n if (claims && claims !== prevProps.tendrilApi.claims) {\n this.load();\n }\n }\n\n componentWillUnmount() {\n this.mounted = false;\n }\n\n\n\n async load() {\n const { tendrilApi } = this.props;\n const { claims, functions } = tendrilApi;\n\n try {\n this.setState({ user: null, isLoading: true });\n const userId = claims[\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier\"];\n const user = await functions.fetch(`/api/user/${userId}`);\n if (this.mounted) {\n this.setState({ user });\n }\n }\n catch (e) {\n console.log(e);\n }\n if (this.mounted) { this.setState({ isLoading: false }); }\n }\n\n\n\n\n render() {\n\n const { tendrilApi, history } = this.props;\n const { claims, functions } = tendrilApi;\n const { user, isLoading } = this.state;\n\n return (\n
\n\n \n\n {!claims &&\n \n \n
\n \n }\n\n\n {claims && !isLoading && user &&\n \n\n
\n\n
\n
\n \n\n {!(user.isRsgUser || user.customers.length > 0) &&\n \n

Although you have a Tendril account, you have not been granted access to any areas.

\n

Please contact your administrator or Real Serious Games.

\n

Once access has been granted, either reload this page or log out and log in for changes to take effect.

\n }\n />}\n\n\n\n\n {user.isRsgUser &&\n history.push(\"/admin\")} padded='very'>\n
\n \n }\n\n {user.customers.map(c => (\n history.push(`/customer/${c.customerOrgCode}`)} padded='very'>\n
\n ))}\n\n \n
\n
\n \n }\n
\n );\n }\n}\n\nexport const Home = withTendrilApi(HomeBase);\n","import React, { Component } from 'react';\nimport Loadable from 'react-loadable';\nimport { NotFound } from '../../components/NotFound';\nimport { BrowserRouter, Router, Switch, Route } from 'react-router-dom';\n\n\nconst Loading = () =>
Loading...
;\n\n\nconst EmailConfirmation = Loadable({ loader: () => import('./EmailConfirmation').then(module => module.EmailConfirmation), loading: Loading });\nconst PasswordReset = Loadable({ loader: () => import('./PasswordReset').then(module => module.PasswordReset), loading: Loading });\n\nconst RegistrationExtEmailConfirmation = Loadable({ loader: () => import('./registrationext/RegistrationExtEmailConfirmation').then(module => module.RegistrationExtEmailConfirmation), loading: Loading });\n\nexport default class User extends Component {\n\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\n\n","import React, { Component } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport Loadable from 'react-loadable';\nimport { TendrilApiProvider } from './components/TendrilApi';\nimport { NotFound } from './components/NotFound';\nimport { Home } from './areas/home/Home';\nimport User from './areas/user/User';\n\n\nconst Loading = () =>
Loading...
;\n\nconst Admin = Loadable({\n loader: () => import('./areas/admin/Admin').then(module => module.Admin),\n loading: Loading\n});\n\nconst Customer = Loadable({\n loader: () => import('./areas/customer/Customer').then(module => module.Customer),\n loading: Loading\n});\n\n\n\n\nexport default class App extends Component {\n displayName = App.name;\n\n constructor(props) {\n super(props);\n }\n\n\n render() {\n\n return (\n \n \n \n\n \n\n \n \n {/* Also don't forget to route by customer name, not just id... eg /customer/Coates_Hire/... */}\n\n \n \n \n );\n }\n}\n","import 'semantic-ui-react';\nimport 'semantic-ui-css/semantic.min.css';\nimport './index.css';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter, Switch, Route } from 'react-router-dom';\n//import registerServiceWorker from './registerServiceWorker';\n\n\n\n\nimport App from './App';\n\n\n//const Page = Loadable({\n// loader: () => import('./Page'),\n// loading: Loading,\n//});\n\n\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\nconst rootElement = document.getElementById('root');\n\nReactDOM.render(\n \n \n \n \n \n ,\n rootElement);\n\n// DJB disabled this\n//registerServiceWorker();\n","import React, { Component } from 'react';\nimport decode from 'jwt-decode';\nimport 'whatwg-fetch';\nimport _ from 'lodash';\n\n\nexport class FetchError extends Error {\n\n constructor(message, status = null, data = null) {\n //console.log(`FetchError ctor: ${message} ${status} ${data}`);\n super(message);\n this.status = status;\n this.data = data;\n this.name = \"FetchError\";\n }\n}\n\nexport const NoneVerbBit = 0;\nexport const DeleteVerbBit = 1;\nexport const GetVerbBit = 2;\nexport const PatchVerbBit = 4;\nexport const PostVerbBit = 8;\nexport const PutVerbBit = 16;\nexport const AllVerbBits = DeleteVerbBit | GetVerbBit | PatchVerbBit | PostVerbBit | PutVerbBit;\n\n\n// https://stackoverflow.com/questions/10593013/delete-cookie-by-name\nfunction delete_cookie(name) {\n document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n}\n\n\n// Auth token will be refreshed at this interval, which is a network call and full UI redraw / reload, so don't make it too short.\n// However too long and the UI won't reflect user permission changes (ie granted or revoked access to areas).\n\nconst claimsCheckIntervalMs = 60 * 60 * 1000;\n\n\n\n// https://daveceddia.com/context-api-vs-redux/\n\nexport const TendrilApiContext = React.createContext();\n\nexport class TendrilApiProvider extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.timerId = null;\n\n // usual js bind garbage\n this.checkClaimsAndReschedule = this.checkClaimsAndReschedule.bind(this);\n\n // Functions available to consumers\n\n this.functions = {\n fetch: this.fetch.bind(this),\n login: this.login.bind(this),\n logout: this.logout.bind(this),\n setToken: this.setToken.bind(this),\n accessAny: this.accessAny.bind(this),\n accessAll: this.accessAll.bind(this),\n refresh: this.refresh.bind(this)\n };\n\n this.state = {\n value: {\n token: null,\n claims: null,\n user: null,\n functions: this.functions\n },\n };\n }\n\n componentDidMount() {\n\n try {\n const token = localStorage.getItem('tendril_token');\n const userString = localStorage.getItem('tendril_user');\n const claims = token ? decode(token) : null;\n const user = userString ? JSON.parse(userString) : null;\n\n if ((claims && this.claimsHaveExpired(claims)) || !user) {\n this.deleteStoredData();\n this.setState({ value: { token: null, claims: null, user: null, functions: this.functions } });\n } else {\n // We have valid claims and user\n // But immediately refresh and get user data, so the UI shows latest state\n this.setState({ value: { token: token, claims: claims, user: user, functions: this.functions } },\n this.refresh);\n }\n }\n catch (e) {\n // something bad has happened, just reset everything, make user log in again\n console.log(e);\n this.deleteStoredData();\n this.setState({ value: { token: null, claims: null, user: null, functions: this.functions } });\n }\n\n this.timerId = setTimeout(this.checkClaimsAndReschedule, claimsCheckIntervalMs);\n }\n\n\n componentWillUnmount() {\n clearTimeout(this.timerId);\n }\n\n\n checkClaimsAndReschedule() {\n\n const { claims } = this.state.value;\n\n if (claims) {\n if (this.claimsHaveExpired(claims)) {\n console.log(\"claims have expired\");\n this.deleteStoredData();\n this.setState({ value: { token: null, claims: null, user: null, functions: this.functions } });\n }\n else {\n // Just do the refresh, this makes sure that UI will fairly quickly reflect any role changes.\n // Make sure we set a reasonable refresh interval.\n this.refresh();\n }\n }\n this.timerId = setTimeout(this.checkClaimsAndReschedule, claimsCheckIntervalMs);\n }\n\n claimsHaveExpired(claims) {\n if (!claims) return false;\n if (!claims.exp) return false;\n if (claims.exp > Date.now() / 1000) return false; // CHECK ME\n return true;\n }\n\n\n deleteStoredData() {\n localStorage.removeItem('tendril_token');\n localStorage.removeItem('tendril_user');\n delete_cookie('tendril_token');\n }\n\n\n\n\n render() {\n // NOTE\n // For consumers to re-render, we have to actually change the value of 'value'\n // I wanted to just pass down 'this', and maybe that's possible, but this follows the React docs: https://reactjs.org/docs/context.html#caveats\n return (\n \n {this.props.children}\n \n );\n }\n\n\n // General purpose fetch, parsing json on success and error\n //\n // On success (HTTP status code 200-299):\n // - JSON-deserialised response body is returned, or null if no body\n //\n // On network error:\n // - FetchError is thrown, with generic error message and no status code, no data\n //\n // On error returned by server\n // - FetchError is thrown, with status code and data object of form { key : [values ...], ... }\n //\n\n\n async fetch(url, body, method = (body ? \"POST\" : \"GET\"), options) {\n // performs api calls sending the required authentication headers\n const headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n\n // Setting Authorization header\n // Authorization: Bearer xxxxxxx.xxxxxxxx.xxxxxx\n if (this.state.value.token) {\n headers['Authorization'] = 'Bearer ' + this.state.value.token;\n }\n\n let opts = {\n method,\n headers,\n body: JSON.stringify(body),\n ...options\n };\n\n let response = null;\n let json = null;\n try {\n response = await fetch(url, opts);\n const text = await response.text();\n if (text !== '')\n json = JSON.parse(text);\n }\n catch (e) {\n console.log(e);\n throw new FetchError(\"Error fetching data from server.\");\n }\n\n if (response.ok)\n return json;\n\n throw new FetchError(json ? json.message : \"Error fetching data from server.\", response.status, json ? json.data : null);\n }\n\n\n setToken(token) {\n // Using jwt-decode npm package to decode the token\n const claims = decode(token);\n\n localStorage.setItem('tendril_token', token);\n this.setState(prevState => ({ value: { token: token, claims: claims, user: prevState.value.user, functions: this.functions } }));\n }\n\n\n async login(identifier, password) {\n try {\n const result = await this.fetch('/api/user/authenticate', { identifier, password });\n\n if (!result.token)\n throw new Error(\"Expected token in login result\");\n\n if (!result.user)\n throw new Error(\"Expected user in login result\");\n\n const claims = decode(result.token);\n\n localStorage.setItem('tendril_token', result.token);\n localStorage.setItem('tendril_user', JSON.stringify(result.user));\n this.setState(prevState => ({ value: { token: result.token, claims: claims, user: result.user, functions: this.functions } }));\n }\n catch (e) {\n console.log(e);\n this.deleteStoredData();\n this.setState({ value: { token: null, claims: null, user: null, functions: this.functions } });\n if (e.status === 401)\n throw new Error(\"Invalid username or password.\");\n throw new Error(\"An error occurred during login.\");\n }\n }\n\n\n logout() {\n console.log(\"logging out\");\n // Clear user token and profile data from localStorage\n this.deleteStoredData();\n\n this.setState({ value: { token: null, claims: null, user: null, functions: this.functions } });\n }\n\n\n async refresh() {\n try {\n console.log(\"Refreshing auth token\");\n\n const result = await this.fetch('/api/user/refresh', null, 'POST');\n\n if (!result.token)\n throw new Error(\"Expected token in refresh result\");\n\n if (!result.user)\n throw new Error(\"Expected user in refresh result\");\n\n const claims = decode(result.token);\n\n localStorage.setItem('tendril_token', result.token);\n localStorage.setItem('tendril_user', JSON.stringify(result.user));\n this.setState(prevState => ({ value: { token: result.token, claims: claims, user: result.user, functions: this.functions } }));\n }\n catch (e) {\n console.log(e);\n // don't throw an error. let the claims check retry, and eventually the auth token will expire\n }\n }\n\n\n\n\n\n // --- Check access to server resources by path \n\n\n allowedVerbs(resource) {\n\n const { claims } = this.state.value;\n if (!claims) return 0;\n\n // keep resources on the claims object so it is forced to refresh when claims change\n if (!claims.resources) {\n // lazy init\n let resourceClaims = claims.Resource;\n if (!resourceClaims) return 0;\n if (!Array.isArray(resourceClaims)) resourceClaims = [resourceClaims];\n let resources = resourceClaims.map(c => {\n const parts = c.split('|');\n const path = parts[0];\n const verbs = parseInt(parts[1]);\n return { path, verbs };\n });\n resources = _.sortBy(resources, 'path').reverse();\n claims.resources = resources;\n }\n\n const { resources } = claims;\n\n let match = resources.find(r => resource.startsWith(r.path));\n \n if (!match) return 0;\n\n return match.verbs;\n }\n\n\n accessAny(resource, verbs = AllVerbBits) {\n const v = this.allowedVerbs(resource);\n //console.log(`allowedVerbs(${resource}) => ${v}`);\n\n return !!(v & verbs);\n }\n\n accessAll(resource, verbs = AllVerbBits) {\n const v = this.allowedVerbs(resource);\n //console.log(`allowedVerbs(${resource}) => ${v}`);\n\n return (v & verbs) === verbs;\n }\n}\n\n\n\n\nexport function withTendrilApi(Component) {\n // ...and returns another component...\n return (props) => {\n // ... and renders the wrapped component with the context theme!\n // Notice that we pass through any additional props as well\n return (\n \n {value => }\n\n \n );\n };\n}\n\n","import React from 'react';\nimport { Message } from 'semantic-ui-react';\n\nconst flatMap = (f, arr) => arr.reduce((x, y) => [...x, ...f(y)], []);\n\n\n/*\n * Props:\n * error: object, or null to not show the error box\n * fields are\n * {\n * \"message\" : \"An error happened\",\n * \"data\" : { \"email\" : [\"Email address was invalid\"] }\n * \"status\" : 400\n * }\n * \n */\n\nexport function ErrorMessage(props) {\n\n const { error } = props;\n\n if (!error)\n return null;\n\n let { data, message, status } = error;\n\n if (!(data || message || status))\n return ;\n\n if (!(data || message)) {\n switch (status) {\n case 400: message = 'A bad request was sent to the server.'; break;\n case 401: message = 'You need to log in to perform this action.'; break;\n case 403: message = 'You are not authorised to perform this action.'; break;\n case 404: message = 'The requested data could not be found.'; break;\n case 409: message = \"Could not create or update as there's a conflict with existing data.\"; break;\n default: message = `The server returned an error (code ${status})`; break;\n }\n }\n\n if (!data)\n return (\n \n );\n\n const list = flatMap(k => data[k], Object.keys(data));\n switch (list.length) {\n case 0: return (\n \n );\n case 1: return (\n \n );\n default: return (\n \n );\n }\n}\n\n"],"sourceRoot":""}