{"version":3,"sources":["authentication/PublicClientApplication.js","App.js","reportWebVitals.js","index.js"],"names":["scopes","process","publicClientApplication","PublicClientApplication","auth","clientId","authority","cache","cacheLocation","getTokenRedirect","account","a","acquireTokenSilent","accessToken","acquireTokenRedirect","App","React","forwardRef","props","applicationRef","useImperativeHandle","getObjectId","bizExaminerData","exmBookingsId","getObjectUrl","directAccessExamUrl","uploadFile","objectId","name","type","blob","console","log","containerClient","BlobServiceClient","proctoringUploadUrl","getContainerClient","blobName","Date","getTime","getBlockBlobClient","uploadData","useState","accountInfo","setAccountInfo","setBizExaminerData","fetchData","useCallback","examId","token","fetch","method","headers","Headers","then","res","json","data","catch","useEffect","queryString","window","location","search","URLSearchParams","get","handleRedirectPromise","tokenReponse","accounts","getAllAccounts","length","loginRedirect","username","toLowerCase","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","ref","document","getElementById"],"mappings":"2MAKaA,EAAS,CAAC,SAAD,OACZC,uCADY,wBAITC,EAA0B,IAAIC,IAAwB,CAClEC,KAAM,CACLC,SAAS,GAAD,OAAKJ,wCACbK,UAAU,qCAAD,OAAuCL,yCAEjDM,MAAO,CACNC,cAAe,kBAIJC,EAAgB,uCAAG,WAAOC,GAAP,SAAAC,EAAA,+EAEhBT,EAAwBU,mBAAmB,CAAEF,UAASV,WAFtC,uCAEiDa,aAFjD,uCAI9BX,EAAwBY,qBAAqB,CAAEd,WAJjB,kBAKvB,IALuB,yDAAH,sDC6Dde,EA5EHC,IAAMC,YAAW,SAACC,EAAOC,GACnCC,8BAAoBD,GAAgB,iBAAO,CACzCE,YAAa,WACX,OAA2B,OAApBC,EAA2B,GAAKA,EAAgBC,eAEzDC,aAAc,WACZ,OAA2B,OAApBF,EAA2B,6BAA+BA,EAAgBG,qBAEnFC,WAAY,SAACC,EAAUC,EAAMC,EAAMC,GACjCC,QAAQC,IAAI,aAAeH,EAAO,KAAOD,EAAO,cAAgBD,GAEhE,IACMM,EADoB,IAAIC,IAAkBZ,EAAgBa,qBACtBC,mBAAmB,IACvDC,EAAWT,EAAO,IAAMD,EAAW,KAAM,IAAIW,MAAOC,WAAsB,UAATV,EAAmB,OAAS,QAC3EI,EAAgBO,mBAAmBH,GAC3CI,WAAWX,GAE3BC,QAAQC,IAAR,8BAAmCK,SAjBe,MAqBhBK,mBAAS,MArBO,mBAqB/CC,EArB+C,KAqBlCC,EArBkC,OAsBRF,mBAAS,IAtBD,mBAsB/CpB,EAtB+C,KAsB9BuB,EAtB8B,KAwBhDC,EAAYC,sBAAW,uCAAC,WAAOC,GAAP,eAAArC,EAAA,0DACxBgC,EADwB,gCAENlC,EAAiBkC,GAFX,OAGZ,QADRM,EAFoB,SAGO,IAAXD,GACpBE,MAAM,GAAD,OAAIjD,kCAAJ,+DAA4F+C,GAAU,CACzGG,OAAQ,MACRC,QAAS,IAAIC,QACX,CACE,cAAiB,UAAYJ,EAC7B,eAAgB,uBAGrBK,MAAK,SAAAC,GAAG,OAAIA,EAAIC,UAChBF,MAAK,SAAAG,GAAI,OAAIZ,EAAmBY,MAChCC,OAAM,kBAAM,QAdW,2CAAD,sDAiB1B,CAACf,IA2BJ,OAzBAgB,qBAAU,WACR,IAAMC,EAAcC,OAAOC,SAASC,OAE9Bf,EADY,IAAIgB,gBAAgBJ,GACbK,IAAI,UAC7BnB,EAAUE,KACT,CAACF,IAEJa,qBAAU,WAEV,sBAAC,8BAAAhD,EAAA,sEAC2BT,EAAwBgE,wBADnD,QACMC,EADN,QAGCvB,EAAeuB,EAAazD,UAIJ,KAFlB0D,EAAWlE,EAAwBmE,kBAE5BC,QACZ1B,EAAe1C,EAAwBmE,iBAAiB,IAEjC,IAApBD,EAASE,QACZpE,EAAwBqE,cAAc,CAAEvE,YAX1C,0CAAD,KAcK,IAGG2C,GACE,8BACE,0CAAY,qCAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAaf,KAAjB,YAAyBe,QAAzB,IAAyBA,OAAzB,EAAyBA,EAAa6B,SAASC,cAA/C,eC/DXC,EAZS,SAAAC,GAClBA,GAAeA,aAAuBC,UACxC,8BAAqBtB,MAAK,YAAkD,IAA/CuB,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,OCFdO,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,EAAD,CAAKC,IAAK,SAAClE,GAAoB0C,OAAO1C,eAAiBA,OAEzDmE,SAASC,eAAe,SAM1Bb,K","file":"static/js/main.98958787.chunk.js","sourcesContent":["import {\n\tAccountInfo,\n\tPublicClientApplication\n} from \"@azure/msal-browser\"\n\nexport const scopes = [\n\t`api://${process.env.REACT_APP_MICROSOFT_IDENTITY_WEB_API_CLIENT_ID}/user_impersonation`\n]\n\nexport const publicClientApplication = new PublicClientApplication({\n\tauth: {\n\t\tclientId: `${process.env.REACT_APP_MICROSOFT_IDENTITY_CLIENT_ID}`,\n\t\tauthority: `https://login.microsoftonline.com/${process.env.REACT_APP_MICROSOFT_IDENTITY_AUTHORITY}`\n\t},\n\tcache: {\n\t\tcacheLocation: \"localStorage\"\n\t}\n})\n\nexport const getTokenRedirect = async (account) => {\n\ttry {\n\t\treturn (await publicClientApplication.acquireTokenSilent({ account, scopes })).accessToken\n\t} catch (error) {\n\t\tpublicClientApplication.acquireTokenRedirect({ scopes })\n\t\treturn {}\n\t}\n}","import React, { useState, useEffect, useCallback, useImperativeHandle } from 'react';\nimport { BlobServiceClient } from '@azure/storage-blob';\nimport { getTokenRedirect, publicClientApplication, scopes } from \"./authentication/PublicClientApplication\";\n\nconst App = React.forwardRef((props, applicationRef) => {\n useImperativeHandle(applicationRef, () => ({ \n getObjectId: () => { \n return bizExaminerData === null ? \"\" : bizExaminerData.exmBookingsId;\n }, \n getObjectUrl: () => {\n return bizExaminerData === null ? \"https://www.fh-krems.ac.at\" : bizExaminerData.directAccessExamUrl;\n }, \n uploadFile: (objectId, name, type, blob) => { \n console.log(\"uploading \" + type + \" '\" + name + \"' for exam \" + objectId);\n \n const blobServiceClient = new BlobServiceClient(bizExaminerData.proctoringUploadUrl); \n const containerClient = blobServiceClient.getContainerClient(\"\");\n const blobName = name + \"_\" + objectId + \"_\" + new Date().getTime() + (type === \"image\" ? \".jpg\" : \".wav\");\n const blockBlobClient = containerClient.getBlockBlobClient(blobName);\n blockBlobClient.uploadData(blob);\n \n console.log(`uploaded block blob ${blobName}`);\n }\n }));\n\n const [accountInfo, setAccountInfo] = useState(null);\n const [bizExaminerData, setBizExaminerData] = useState({}); \n\n const fetchData = useCallback(async (examId) => {\n if (accountInfo) {\n const token = await getTokenRedirect(accountInfo);\n if (token !== null && examId !== 0) {\n fetch(`${process.env.REACT_APP_API_BASEURL}/students/exams/GetBizExaminerBooking?exmBookingsId=${examId}`, {\n method: 'get',\n headers: new Headers(\n {\n 'Authorization': 'Bearer ' + token,\n 'Content-Type': 'application/json' \n })\n })\n .then(res => res.json())\n .then(data => setBizExaminerData(data))\n .catch(() => null); \n } \n }\n }, [accountInfo]);\n \n useEffect(() => {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const examId = urlParams.get('examid'); \n fetchData(examId);\n }, [fetchData]);\n\n useEffect(() => {\n\t\t// https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/v1-migration.md#3-update-your-code\n\t\t(async () => {\n\t\t\tconst tokenReponse = await publicClientApplication.handleRedirectPromise()\n\t\t\tif (tokenReponse)\n\t\t\t\tsetAccountInfo(tokenReponse.account)\n\t\t\telse {\n\t\t\t\tconst accounts = publicClientApplication.getAllAccounts()\n\n\t\t\t\tif (accounts.length === 1)\n\t\t\t\t\tsetAccountInfo(publicClientApplication.getAllAccounts()[0])\n\n\t\t\t\tif (accounts.length === 0)\n\t\t\t\t\tpublicClientApplication.loginRedirect({ scopes })\n\t\t\t}\n\t\t})()\n }, []);\n\n return (\n accountInfo &&\n
\n

Account: {accountInfo?.name} ({accountInfo?.username.toLowerCase()})

\n
\n);\n });\n\nexport default App;","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n {window.applicationRef = applicationRef}} />\n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}