{"version":3,"sources":["webpack:///./src/helpers/tuitionfees/unauthorized-helper.ts","webpack:///./src/views/TuitionFees/CardPayment.vue?9bba","webpack:///./src/services/tuition-fees/payment-service.ts","webpack:///./src/views/TuitionFees/CardPayment.vue","webpack:///./src/views/TuitionFees/CardPayment.vue?e138","webpack:///./src/components/tuition-fees/MirroringUserBanner.vue?6eb6","webpack:///./src/components/tuition-fees/MirroringUserBanner.vue?3f8c","webpack:///./src/components/tuition-fees/MirroringUserBanner.vue","webpack:///./src/components/tuition-fees/MirroringUserBanner.vue?1d4b","webpack:///./src/components/tuition-fees/BackToInvoicesButton.vue?4f75","webpack:///./src/components/tuition-fees/BackToInvoicesButton.vue","webpack:///./src/components/tuition-fees/BackToInvoicesButton.vue?4834","webpack:///./src/assets/visa_mastercard.png"],"names":["UnauthorizedHelper","currentUser","isMirroringUser","getItem","IsMirroringUser","isEmployee","entitlements","includes","console","warn","this","routeToUnauthorized","openLogin","url","popupParams","window","open","push","name","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","src","_hoisted_6","_hoisted_7","_hoisted_8","render","_ctx","_cache","$props","$setup","$data","$options","_component_MirroringUserBanner","_component_BackToInvoicesButton","key","personalId","personName","lucatId","id","type","onClick","$event","performPayment","action","netsUrl","method","ref","registerCardRequest","endpointController","enpointRoute","registerPayment","baseApiUrl","log","fetch","headers","body","JSON","stringify","terminalResponse","components","BackToInvoicesButton","MirroringUserBanner","data","computed","$store","state","methods","getUserId","mirroredUser","MirroredUser","displayName","luEduPersonPrimaryId","commit","invoiceNo","$route","params","customerEmail","email","then","registerPaymentResponse","resourceUrl","redirectToNetsPaymentTerminal","error","saveTransactionResultAndRouteToResultPage","catch","e","netsForm","$refs","submit","getNetsResponse","transactionId","query","responseCode","terminalRespone","invoiceNumber","handleNetsTerminalResponse","result","operationResult","setItem","PaymentResponse","$router","getCurrentEntitlements","getters","getCurrentUser","checkIfUserIsStudentOrAdminMirroringUser","scrollToTop","scrollTo","mounted","__exports__","_component_font_awesome_icon","icon","$t","nullLucatId","shortPersonalId","onStopMirroringClicked","props","String","required","substr","length","goToTuitionFeeHome","module","exports"],"mappings":"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","file":"assets/js/chunk-7cbb86bf.c7defb16.js","sourcesContent":["import SessionStorageService from \"@/services/sessionstorage-service\";\nimport { SessionStorageKeys } from \"@/constants/constants\";\nimport router from \"@/router\";\nimport { IUser } from \"@/interfaces/IUser\";\n\nclass UnauthorizedHelper {\n /**\n * The function checks if the current user is a student or an admin mirroring a user and returns a boolean value based on the conditions.\n * @param {IUser | undefined} currentUser - Represents the current user who is interacting with the system.\n * If the user is not logged in, the `currentUser` parameter wil be `undefined` otherwise it will contain the user's information.\n * @returns Returns a boolean value representing whether the current user is an admin mirroring a user.\n * If the current user is not logged in, the function will open a popup log in window to authorize the user.\n * If the current user is logged in but is not an admin mirroring a user or a student,\n * the function will redirect the user to the \"Unauthorized\" page.\n */\n checkIfUserIsStudentOrAdminMirroringUser(\n currentUser: IUser | undefined\n ): boolean {\n const isMirroringUser = SessionStorageService.getItem(\n SessionStorageKeys.IsMirroringUser\n );\n\n const isEmployee = currentUser\n ? currentUser.entitlements?.includes(\"Employee\")\n : false;\n\n if (!isMirroringUser || isMirroringUser === \"false\") {\n if (!currentUser) {\n this.openLogin();\n } else if (isEmployee) {\n console.warn(\n \"🚀 ~ UnauthorizedHelper ~ routing to unauthorized:\",\n currentUser\n );\n\n this.routeToUnauthorized();\n }\n }\n\n return isMirroringUser === \"true\";\n }\n\n /**\n * Opens a a popup log in window to authorize the user.\n * It is called when the user is not logged in and tries to access a page that requires authentication.\n */\n private openLogin() {\n const url = `${process.env.VUE_APP_BASE_API_URL}authorize`;\n const popupParams =\n \"scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no\";\n window.open(url, \"Login\", popupParams);\n }\n\n /**\n * Redirects the user to the \"Unauthorized\" page.\n * It is called when the user is logged in but is not a student and tries to access a page that requires student privileges.\n */\n private routeToUnauthorized() {\n router.push({\n name: \"Unauthorized\",\n });\n }\n}\n\nexport default new UnauthorizedHelper();\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '@/assets/visa_mastercard.png'\n\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"page-heading\" }, \"Tuition Fees\", -1)\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"h2\", { class: \"page-heading\" }, \"Card payment\", -1)\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"p\", null, \"You have selected to pay the invoice via a credit or debit card.\", -1)\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"p\", null, \" We accept payment by the following credit/debit cards: Visa, MasterCard. \", -1)\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"p\", null, [\n /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_0 })\n], -1)\nconst _hoisted_6 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_7 = /*#__PURE__*/_createElementVNode(\"p\", null, \" Lund University will have no access to the data recorded in the payment window and no third party will gain access to your personal or financial details. \", -1)\nconst _hoisted_8 = [\"action\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_MirroringUserBanner = _resolveComponent(\"MirroringUserBanner\")!\n const _component_BackToInvoicesButton = _resolveComponent(\"BackToInvoicesButton\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (this.isMirroringUser)\n ? (_openBlock(), _createBlock(_component_MirroringUserBanner, {\n key: 0,\n personalId: _ctx.personalId,\n personName: _ctx.personName,\n lucatId: _ctx.lucatId\n }, null, 8, [\"personalId\", \"personName\", \"lucatId\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_1,\n _hoisted_2,\n _hoisted_3,\n _hoisted_4,\n _hoisted_5,\n _createElementVNode(\"button\", {\n id: \"paymentBtn\",\n type: \"button\",\n class: \"btn btn-primary mb-3\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.performPayment()))\n }, \" Perform payment \"),\n _hoisted_6,\n _hoisted_7,\n _createElementVNode(\"form\", {\n action: _ctx.netsUrl,\n method: \"post\",\n ref: \"netsForm\"\n }, null, 8, _hoisted_8),\n _createVNode(_component_BackToInvoicesButton)\n ], 64))\n}","import BaseService from \"@/services/base-service\";\nimport {\n RegisterCardRequest,\n RegisterCardResponse,\n NetsTerminalResponse,\n} from \"@/interfaces/api\";\n\nclass PaymentService extends BaseService {\n /**\n * Registers a payment for the given invoice number\n *\n * @param {RegisterCardRequest} registerCardRequest - An object containing the invoice number and the customer email\n * @returns {Promise>} A promise with a response containing either the url of the payment page or an error message\n */\n async registerPayment(\n registerCardRequest: RegisterCardRequest\n ): Promise {\n const endpointController = \"Payment\";\n const enpointRoute = \"register\";\n const registerPayment = `${this.baseApiUrl}api/${endpointController}/${enpointRoute}`;\n console.log(\"Calling fetch with:\", registerPayment, registerCardRequest);\n return this.fetch(registerPayment, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(registerCardRequest),\n });\n }\n\n /**\n * Handles the response from the nets payment terminal by sending the results to the backend\n * which in turn will process the payment and return the result which will redirect to the\n * payment response page\n * @param {NetsTerminalResponse} terminalResponse - The response from the nets payment terminal\n * @returns {Promise>} A promise with a response\n */\n async handleNetsTerminalResponse(\n terminalResponse: NetsTerminalResponse\n ): Promise {\n const endpointController = \"Payment\";\n const enpointRoute = \"terminalResponse\";\n const registerPayment = `${this.baseApiUrl}api/${endpointController}/${enpointRoute}`;\n return this.fetch(registerPayment, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(terminalResponse),\n });\n }\n}\n\nexport default new PaymentService();\n","\nimport { Options, Vue } from \"vue-class-component\";\nimport BackToInvoicesButton from \"@/components/tuition-fees/BackToInvoicesButton.vue\";\nimport MirroringUserBanner from \"@/components/tuition-fees/MirroringUserBanner.vue\";\nimport { SessionStorageKeys } from \"@/constants/constants\";\nimport UnauthorizedHelper from \"@/helpers/tuitionfees/unauthorized-helper\";\nimport {\n RegisterCardResponse,\n NetsTerminalResponse,\n RegisterCardRequest,\n TfPerson,\n} from \"@/interfaces/api\";\nimport SessionStorageService from \"@/services/sessionstorage-service\";\nimport PaymentService from \"@/services/tuition-fees/payment-service\";\n\n@Options({\n components: {\n BackToInvoicesButton,\n MirroringUserBanner,\n },\n data: () => ({\n /**\n * The current user object\n */\n currentUser: {},\n /**\n * The personal id of the user being mirrored by admin\n */\n personalId: \"\",\n /**\n * The name of the user being mirrored by admin\n */\n personName: \"\",\n /**\n * The lucat id of the user being mirrored by admin\n */\n lucatId: \"\",\n /**\n * A boolean to indicate if tfp-admin is mirroring user or not\n */ isMirroringUser: false,\n }),\n computed: {\n /**\n * The current user\n */\n currentUser() {\n return this.$store.state.currentUser;\n },\n },\n methods: {\n /**\n * Gets the personal id, lucat id and name of the person being mirrored\n */\n getUserId(): void {\n const mirroredUser: TfPerson | undefined = SessionStorageService.getItem(\n SessionStorageKeys.MirroredUser\n );\n\n if (mirroredUser) {\n this.personName = mirroredUser.displayName;\n this.personalId = mirroredUser.personalId;\n this.lucatId = mirroredUser.luEduPersonPrimaryId;\n }\n },\n /**\n * Makes a register payment call to backend and redirects to payment page via nets API\n */\n performPayment(): void {\n this.$store.commit(\"showSpinner\", true);\n\n const invoiceNo = this.$route.params.invoiceNo;\n const customerEmail = this.currentUser.email;\n\n const registerCardRequest: RegisterCardRequest = {\n invoiceNo: invoiceNo,\n customerEmail: customerEmail,\n };\n\n PaymentService.registerPayment(registerCardRequest)\n .then((registerPaymentResponse: RegisterCardResponse) => {\n if (registerPaymentResponse.resourceUrl) {\n this.netsUrl = registerPaymentResponse.resourceUrl;\n try {\n this.redirectToNetsPaymentTerminal(\n registerPaymentResponse.resourceUrl\n );\n } catch (error) {\n this.saveTransactionResultAndRouteToResultPage(error);\n }\n } else {\n this.saveTransactionResultAndRouteToResultPage(\n registerPaymentResponse.error\n );\n }\n })\n .catch((e: Error) => {\n console.error(e);\n });\n },\n /**\n * Submits the form in order to redirect to the nets payment terminal\n */\n redirectToNetsPaymentTerminal(resourceUrl: string): void {\n try {\n const netsForm = this.$refs.netsForm;\n netsForm.action = resourceUrl;\n netsForm.submit();\n } catch (e) {\n this.saveTransactionResultAndRouteToResultPage(e);\n }\n },\n /**\n * Gets the nets response from the route query\n * and calls the backend to process the payment\n */\n getNetsResponse(): void {\n const invoiceNo = this.$route.params.invoiceNo;\n const transactionId = this.$route.query.transactionId;\n const responseCode = this.$route.query.responseCode;\n\n if (transactionId) {\n this.$store.commit(\"showSpinner\", true);\n\n const terminalRespone: NetsTerminalResponse = {\n transactionId: transactionId,\n responseCode: responseCode,\n invoiceNumber: invoiceNo,\n };\n\n PaymentService.handleNetsTerminalResponse(terminalRespone)\n .then((result: string) => {\n this.saveTransactionResultAndRouteToResultPage(result);\n })\n .catch((e: Error) => {\n this.saveTransactionResultAndRouteToResultPage(e);\n });\n }\n },\n /**\n * Saves the transaction result in session storage and routes to the payment response page\n */\n saveTransactionResultAndRouteToResultPage(operationResult: string): void {\n this.getUserId();\n\n SessionStorageService.setItem(\n SessionStorageKeys.PaymentResponse,\n operationResult\n );\n\n this.$router.push({\n name: \"PaymentResponse\",\n });\n },\n\n getCurrentEntitlements() {\n this.currentUser = this.$store.getters.getCurrentUser;\n },\n /**\n * If not logged in or not a student, redirect to unauthorized page\n * Otherwise, check if admin is mirroring a user, if so show banner\n * if not redirect to unauthorized page\n */\n checkIfUserIsStudentOrAdminMirroringUser(): void {\n this.isMirroringUser =\n UnauthorizedHelper.checkIfUserIsStudentOrAdminMirroringUser(\n this.currentUser\n );\n },\n /**\n * Scrolls to the top of the page to solve a problem where the page is scrolled down\n * on load from when the user is positioned low on tuition fees page\n */\n scrollToTop() {\n window.scrollTo(0, 0);\n },\n },\n mounted() {\n this.getUserId();\n this.getNetsResponse();\n this.scrollToTop();\n this.getCurrentEntitlements();\n this.checkIfUserIsStudentOrAdminMirroringUser();\n },\n})\nexport default class CardPayment extends Vue {}\n","import { render } from \"./CardPayment.vue?vue&type=template&id=5fae30d6&ts=true\"\nimport script from \"./CardPayment.vue?vue&type=script&lang=ts\"\nexport * from \"./CardPayment.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\GIT\\\\StudentPortal\\\\student-portal-web\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MirroringUserBanner.vue?vue&type=style&index=0&id=ce0bfae8&scoped=true&lang=css\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ce0bfae8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mirroring\" }\nconst _hoisted_2 = [\"aria-label\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", null, [\n _createVNode(_component_font_awesome_icon, {\n icon: 'info-circle',\n class: \"info\"\n }),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t(\"tuition-fees.mirroring\")) + \": \" + _toDisplayString(_ctx.nullLucatId) + \" - \" + _toDisplayString(_ctx.shortPersonalId) + \" - \" + _toDisplayString(_ctx.personName), 1)\n ]),\n _createElementVNode(\"button\", {\n id: \"stopMirroringBtn\",\n class: \"btn btn-outline-primary mr-2 stop-btn\",\n \"aria-label\": _ctx.$t('tuition-fees.back'),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onStopMirroringClicked()))\n }, _toDisplayString(_ctx.$t(\"tuition-fees.stop-mirroring\")), 9, _hoisted_2)\n ]))\n}","\nimport SessionStorageService from \"@/services/sessionstorage-service\";\nimport { SessionStorageKeys } from \"@/constants/constants\";\nimport { PropType } from \"@vue/runtime-core\";\nimport { Options, Vue } from \"vue-class-component\";\n\n@Options({\n props: {\n /**\n * The personal id of the user being mirrored by admin\n */\n personalId: {\n type: String as PropType,\n required: false,\n },\n /**\n * The name of the user being mirrored by admin\n */\n personName: {\n type: String as PropType,\n required: false,\n },\n /**\n * The lucat id of the user being mirrored by admin\n */\n lucatId: {\n type: String as PropType,\n required: false,\n },\n },\n computed: {\n /**\n * The shortened personal id of only the last 10 digits\n */\n shortPersonalId(): string {\n const personalId = this.$props.personalId;\n return personalId ? personalId.substr(personalId.length - 10) : \"\";\n },\n /**\n * If the student cannot be found in Ladok, the lucat id will be null\n */\n nullLucatId(): string {\n const lucatId = this.$props.lucatId;\n return lucatId ? lucatId : \"\";\n },\n },\n methods: {\n /**\n * Routes to search user page\n */\n onStopMirroringClicked(): void {\n SessionStorageService.setItem(SessionStorageKeys.IsMirroringUser, false);\n this.$router.push({\n name: \"MirrorUser\",\n });\n },\n },\n})\nexport default class MirroringUserBanner extends Vue {}\n","import { render } from \"./MirroringUserBanner.vue?vue&type=template&id=ce0bfae8&scoped=true&ts=true\"\nimport script from \"./MirroringUserBanner.vue?vue&type=script&lang=ts\"\nexport * from \"./MirroringUserBanner.vue?vue&type=script&lang=ts\"\n\nimport \"./MirroringUserBanner.vue?vue&type=style&index=0&id=ce0bfae8&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\GIT\\\\StudentPortal\\\\student-portal-web\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ce0bfae8\"]])\n\nexport default __exports__","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"button\", {\n id: \"backBtn\",\n type: \"button\",\n class: \"btn btn-outline-primary mb-3\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.goToTuitionFeeHome()))\n }, \" Return to list of invoices \"))\n}","\nimport { Options, Vue } from \"vue-class-component\";\n\n@Options({\n methods: {\n /**\n * Redirects to the tuition fee home page\n */\n goToTuitionFeeHome(): void {\n this.$router.push({\n name: \"TuitionFeeHome\",\n });\n },\n },\n})\nexport default class BackToInvoicesButton extends Vue {}\n","import { render } from \"./BackToInvoicesButton.vue?vue&type=template&id=5fca811e&ts=true\"\nimport script from \"./BackToInvoicesButton.vue?vue&type=script&lang=ts\"\nexport * from \"./BackToInvoicesButton.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\GIT\\\\StudentPortal\\\\student-portal-web\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","module.exports = __webpack_public_path__ + \"assets/img/visa_mastercard.8503f2b8.png\";"],"sourceRoot":""}