diff --git a/package.json b/package.json index 637f95c74d42db53979c45f6b75e32d355755d5e..41728ed840917081b389365f35e764d38db4c707 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "uuid": "^9.0.1", "vue": "^2.7.15", "vue-demi": "^0.14.6", - "vue-dompurify-html": "4.1.4", + "vue-dompurify-html": "^5.0.1", "vue-i18n": "^8.28.2", "vue-multiselect": "^2.1.8", "vue-observe-visibility": "^1.0.0", diff --git a/src/modules/login/LoginModule.vue b/src/modules/login/LoginModule.vue index dccb126a60942df6649ef8179f13de916e959027..9179e48161472de31898e308ca35a78fdd182c30 100644 --- a/src/modules/login/LoginModule.vue +++ b/src/modules/login/LoginModule.vue @@ -45,6 +45,7 @@ import { defineComponent } from "vue"; // import the store for current module import useLoginStore from "./store"; +import { Partner } from "../login/types"; export default defineComponent({ setup() { @@ -57,49 +58,50 @@ export default defineComponent({ moduleIsReady(): boolean { return true; }, - partners() { + partners(): Partner[] { return [ { key: "aims", - name: this.$t("page.partners.aims.headline"), - logo: this.$t("page.partners.aims.logo"), - url: this.$t("page.partners.aims.url"), + name: this.$t("page.partners.aims.headline").toString(), + logo: this.$t("page.partners.aims.logo").toString(), + url: this.$t("page.partners.aims.url").toString(), }, { key: "nfdi4ing", - name: this.$t("page.partners.nfdi4ing.headline"), - logo: this.$t("page.partners.nfdi4ing.logo"), - url: this.$t("page.partners.nfdi4ing.url"), + name: this.$t("page.partners.nfdi4ing.headline").toString(), + logo: this.$t("page.partners.nfdi4ing.logo").toString(), + url: this.$t("page.partners.nfdi4ing.url").toString(), }, { key: "nfdiMatWerk", - name: this.$t("page.partners.nfdiMatWerk.headline"), - logo: this.$t("page.partners.nfdiMatWerk.logo"), - url: this.$t("page.partners.nfdiMatWerk.url"), + name: this.$t("page.partners.nfdiMatWerk.headline").toString(), + logo: this.$t("page.partners.nfdiMatWerk.logo").toString(), + url: this.$t("page.partners.nfdiMatWerk.url").toString(), }, { key: "fdmNrw", - name: this.$t("page.partners.fdmNrw.headline"), - logo: this.$t("page.partners.fdmNrw.logo"), - url: this.$t("page.partners.fdmNrw.url"), + name: this.$t("page.partners.fdmNrw.headline").toString(), + logo: this.$t("page.partners.fdmNrw.logo").toString(), + url: this.$t("page.partners.fdmNrw.url").toString(), }, { key: "itCenter", - name: this.$t("page.partners.itCenter.headline"), - logo: this.$t("page.partners.itCenter.logo"), - url: this.$t("page.partners.itCenter.url"), + name: this.$t("page.partners.itCenter.headline").toString(), + logo: this.$t("page.partners.itCenter.logo").toString(), + url: this.$t("page.partners.itCenter.url").toString(), }, + { key: "dfg", - name: this.$t("page.partners.dfg.headline"), - logo: this.$t("page.partners.dfg.logo"), - url: this.$t("page.partners.dfg.url"), + name: this.$t("page.partners.dfg.headline").toString(), + logo: this.$t("page.partners.dfg.logo").toString(), + url: this.$t("page.partners.dfg.url").toString(), }, { key: "mkwNrw", - name: this.$t("page.partners.mkwNrw.headline"), - logo: this.$t("page.partners.mkwNrw.logo"), - url: this.$t("page.partners.mkwNrw.url"), + name: this.$t("page.partners.mkwNrw.headline").toString(), + logo: this.$t("page.partners.mkwNrw.logo").toString(), + url: this.$t("page.partners.mkwNrw.url").toString(), }, ]; }, diff --git a/src/modules/login/components/LoginMain.vue b/src/modules/login/components/LoginMain.vue index b8a8abaa83a043ad1703636028ffee06d67bab1a..21afc0137e63a16ef5ae19e54dd5ce9bb024e714 100644 --- a/src/modules/login/components/LoginMain.vue +++ b/src/modules/login/components/LoginMain.vue @@ -17,16 +17,15 @@ <div v-else class="v_gapped_container"> <!-- Institution Shibboleth Login --> <b-button - v-if="selectedInstitution" + v-if="selectedInstitution && !isFirstLogin" variant="primary" @click="toInstitutionLoginPage" > {{ selectedInstitution.displayName }} </b-button> - - <!-- Other Institutional Account --> + <!-- Institutional Account --> <b-button variant="primary" @click="switchInstitution"> - {{ $t("page.login.button_other_institution") }} + {{ institutionButtonText }} </b-button> <!-- ORCID Login Button --> @@ -85,10 +84,15 @@ export default defineComponent({ }, redirectUrl(): string | null { const query = this.$route.query["redirect"]; - if (query) { - return query as string; - } - return null; + return query ? (query as string) : null; + }, + isFirstLogin(): boolean { + return !this.selectedInstitution; + }, + institutionButtonText(): string { + return this.isFirstLogin + ? this.$t("page.login.button_institution").toString() + : this.$t("page.login.button_other_institution").toString(); }, }, diff --git a/src/modules/login/i18n/de.ts b/src/modules/login/i18n/de.ts index 7b47a16612a3e27c2c22aeca2e44e7e8e88855e7..0eaa0cd7e91fa48b116872a507e6c82a934d5608 100644 --- a/src/modules/login/i18n/de.ts +++ b/src/modules/login/i18n/de.ts @@ -70,6 +70,7 @@ export default { title: "Einloggen", button_orcid: "Anmelden mit ORCIDĀ®", button_other_institution: "Anderes institutionelles Konto", + button_institution: "Institutionelles Konto", }, logout: { diff --git a/src/modules/login/i18n/en.ts b/src/modules/login/i18n/en.ts index e4cebc4c1a28c47474298d12f95da0e32f366f51..7f812a082f2df46f49c7964439daff5694440bee 100644 --- a/src/modules/login/i18n/en.ts +++ b/src/modules/login/i18n/en.ts @@ -70,6 +70,7 @@ export default { title: "Login", button_orcid: "Sign in with ORCIDĀ®", button_other_institution: "Other Institutional Account", + button_institution: "Institutional Account", }, logout: { diff --git a/src/modules/login/types.ts b/src/modules/login/types.ts index 5e19685607ae269dd1a4bc81f927bdc56ad27aec..dfbed14c81754b5792bee6cadffaebd01b44c4fc 100644 --- a/src/modules/login/types.ts +++ b/src/modules/login/types.ts @@ -27,3 +27,9 @@ export interface DFNAAIData { }; logo?: string; } +export interface Partner { + key: string; + name: string; + logo: string; + url: string; +} diff --git a/yarn.lock b/yarn.lock index d70becbd7b37b9368ae03f22cb2af983dc75d244..783620e6c91384a9d7db08cfe673e3775a5176dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13540,7 +13540,7 @@ __metadata: vitest: "npm:^0.34.6" vue: "npm:^2.7.15" vue-demi: "npm:^0.14.6" - vue-dompurify-html: "npm:4.1.4" + vue-dompurify-html: "npm:^5.0.1" vue-i18n: "npm:^8.28.2" vue-multiselect: "npm:^2.1.8" vue-observe-visibility: "npm:^1.0.0" @@ -14241,31 +14241,14 @@ __metadata: languageName: node linkType: hard -"vue-demi@npm:^0.14.0": - version: 0.14.7 - resolution: "vue-demi@npm:0.14.7" - peerDependencies: - "@vue/composition-api": ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - "@vue/composition-api": - optional: true - bin: - vue-demi-fix: bin/vue-demi-fix.js - vue-demi-switch: bin/vue-demi-switch.js - checksum: 10/04884677b8790320bcd3cbbf8dae1c4da9f4ab304659bf18d69b11255f7d16825d2135d2d0e565b1a1f1b7f601100eb26760254129c6bacec2c7e72ab0f61d52 - languageName: node - linkType: hard - -"vue-dompurify-html@npm:4.1.4": - version: 4.1.4 - resolution: "vue-dompurify-html@npm:4.1.4" +"vue-dompurify-html@npm:^5.0.1": + version: 5.0.1 + resolution: "vue-dompurify-html@npm:5.0.1" dependencies: dompurify: "npm:^3.0.0" - vue-demi: "npm:^0.14.0" peerDependencies: - vue: ^2.7.0 || ^3.0.0 - checksum: 10/1e5ff02dfcfd898dfacd21d81a7a1e04a990f85e6d25cc4ceb7af5dc095ad58ebeb1b06ba192ec148254eb9a20e47968c408d770a89a92cb46954d6b2af77f5a + vue: ^3.0.0 + checksum: 10/cc1ada3f3bee2061d38c055a7d9e7ff668e1d4f2fbf63c24ba680d5c81431f5bd4627d6898971a825741e11ded1a93fe8646669126ed7543207dbe521fd6c98a languageName: node linkType: hard