From 0f2b456ad8e12a862d5af70fd62423226fe8a90f Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Tue, 10 Sep 2024 18:54:42 +0800 Subject: [PATCH] Added SSO --- dbrepo-ui/bun.lockb | Bin 376041 -> 378608 bytes dbrepo-ui/components/user/UserToolbar.vue | 23 +- dbrepo-ui/composables/axios-instance.ts | 36 +-- dbrepo-ui/layouts/default.vue | 79 ++--- dbrepo-ui/middleware/auth.ts | 7 + dbrepo-ui/nuxt.config.ts | 349 +++++++++++++--------- dbrepo-ui/package.json | 1 + dbrepo-ui/pages/user/authentication.vue | 7 +- dbrepo-ui/pages/user/developer.vue | 230 -------------- dbrepo-ui/pages/user/index.vue | 23 +- dbrepo-ui/pages/user/info.vue | 42 ++- dbrepo-ui/stores/user.js | 32 +- 12 files changed, 286 insertions(+), 543 deletions(-) create mode 100644 dbrepo-ui/middleware/auth.ts delete mode 100644 dbrepo-ui/pages/user/developer.vue diff --git a/dbrepo-ui/bun.lockb b/dbrepo-ui/bun.lockb index 34e1f3dd06864bd64d099c2212a7b45cb5140d8f..35d4d918b6b74562ce445a20d60ebc12b72ae319 100755 GIT binary patch delta 71165 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 delta 69666 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 diff --git a/dbrepo-ui/components/user/UserToolbar.vue b/dbrepo-ui/components/user/UserToolbar.vue index b7452e52c7..3a16503673 100644 --- a/dbrepo-ui/components/user/UserToolbar.vue +++ b/dbrepo-ui/components/user/UserToolbar.vue @@ -11,32 +11,35 @@ <v-tab :text="$t('toolbars.user.authentication')" to="/user/authentication" /> - <v-tab - :text="$t('toolbars.user.developer')" - to="/user/developer" /> </v-tabs> </template> </v-toolbar> </div> </template> +<script setup> +definePageMeta({ + middleware: ['auth'] +}) +const { $oidc } = useNuxtApp() +</script> <script> -import { useUserStore } from '@/stores/user' - export default { data () { return { - tab: null, - userStore: useUserStore() + tab: null } }, computed: { user () { - return this.userStore.getUser + return this.$oidc.user }, roles () { - return this.userStore.getRoles - } + if (!this.user || !this.user.realm_access) { + return [] + } + return this.user.realm_access.roles + }, } } </script> diff --git a/dbrepo-ui/composables/axios-instance.ts b/dbrepo-ui/composables/axios-instance.ts index d4f274b717..55799aa741 100644 --- a/dbrepo-ui/composables/axios-instance.ts +++ b/dbrepo-ui/composables/axios-instance.ts @@ -1,11 +1,10 @@ import axios, {type AxiosInstance} from 'axios' -import {useUserStore} from '@/stores/user' let instance: AxiosInstance | null = null; export const useAxiosInstance = () => { - const config = useRuntimeConfig(); const userStore = useUserStore() + const config = useRuntimeConfig(); if (!instance) { instance = axios.create({ timeout: 90_000, @@ -19,37 +18,8 @@ export const useAxiosInstance = () => { }); instance.interceptors.request.use((config) => { const token = userStore.getToken - const refreshToken = userStore.getRefreshToken - if (!token || !refreshToken) { - return config - } - const authenticationService = useAuthenticationService() - if (authenticationService.isExpiredToken(refreshToken)) { - console.warn('Refresh token is expired: trigger logout of user') - userStore.logout() - return config - } - if (!authenticationService.isExpiredToken(token)) { - config.headers.Authorization = `Bearer ${token}` - return config - } - console.warn('Access token expired: request a new one') - const userService = useUserService() - return userService.refreshToken(refreshToken) - .then((response: KeycloakOpenIdTokenDto) => { - userStore.setToken(response.access_token) - userStore.setRefreshToken(response.refresh_token) - console.debug('new access token expires:', authenticationService.tokenToExpiryDate(response.access_token)) - config.headers.Authorization = `Bearer ${response.access_token}` - return config - }) - .catch((error: ApiErrorDto) => { - if (error.code === 'error.user.credentials') { - console.warn('User session expired.') - userStore.logout() - } - return config - }); + config.headers.Authorization = `Bearer ${token}` + return config }) } return instance; diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index fb4c40266b..c3bd070422 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -90,16 +90,16 @@ @click:append-inner="retrieve" /> <v-spacer /> <v-btn - v-if="!user" + v-if="!$oidc.isLoggedIn" class="mr-2" color="secondary" variant="flat" prepend-icon="mdi-login" - to="/login"> + @click="$oidc.login()"> {{ $t('navigation.login') }} </v-btn> <v-btn - v-if="!user" + v-if="!$oidc.isLoggedIn" color="primary" variant="flat" prepend-icon="mdi-account-plus" @@ -107,12 +107,12 @@ {{ $t('navigation.signup') }} </v-btn> <v-btn - v-if="user" + v-if="$oidc.user" to="/user" variant="plain" - :text="user.username" /> + :text="$oidc.user.preferred_username" /> <v-menu - v-if="user" + v-if="$oidc.isLoggedIn" location="bottom"> <template v-slot:activator="{ props }"> <v-btn @@ -121,20 +121,19 @@ </template> <v-list> <v-list-item - v-if="user" + v-if="$oidc.user" exact - :to="`/search?type=database&owner.username=${user.username}`"> + :to="`/search?type=database&owner.username=${$oidc.user.username}`"> {{ $t('navigation.databases') + ' ' + $t('navigation.mine')}} </v-list-item> <v-list-item - v-if="user" + v-if="$oidc.user" exact - :to="`/search?type=identifier&identifiers.creator.username=${user.username}`"> + :to="`/search?type=identifier&identifiers.creator.username=${$oidc.user.username}`"> {{ $t('navigation.identifiers') + ' ' + $t('navigation.mine') }} </v-list-item> <v-list-item - v-if="user" - @click="logout"> + @click="logout()"> {{ $t('navigation.logout') }} </v-list-item> </v-list> @@ -144,12 +143,17 @@ <v-main> <v-container> <slot /> + <pre>{{ accessToken }}</pre> + <pre>$oidc.isLoggedIn={{ $oidc.isLoggedIn }}</pre> + <pre v-if="$oidc.isLoggedIn" style="background:green;">$oidc.user={{$oidc.user}}</pre> </v-container> </v-main> </v-app> </template> <script setup> +const { $oidc } = useNuxtApp() +const accessToken = useCookie('oidc._access_token') const config = useRuntimeConfig() useServerHead({ title: config.public.title @@ -158,7 +162,6 @@ useServerHead({ <script> import { useUserStore } from '@/stores/user' import { useCacheStore } from '@/stores/cache' - export default { data () { return { @@ -172,31 +175,20 @@ export default { loadingSearch: false, loadingDatabases: false, search: null, - userStore: useUserStore(), - cacheStore: useCacheStore() } }, computed: { - token () { - return this.userStore.getToken - }, - user () { - return this.userStore.getUser - }, - locale () { - return this.userStore.getLocale - }, messages () { - return this.cacheStore.getMessages + const cacheStore = useCacheStore() + return cacheStore.getMessages }, table () { - return this.cacheStore.getTable + const cacheStore = useCacheStore() + return cacheStore.getTable }, database () { - return this.cacheStore.getDatabase - }, - roles () { - return this.userStore.getRoles + const cacheStore = useCacheStore() + return cacheStore.getDatabase }, version () { return this.$config.public.version @@ -231,22 +223,23 @@ export default { return } /* load database and optional access */ + const cacheStore = useCacheStore() this.cacheStore.setRouteDatabase(newObj.database_id) if (this.user) { - this.userStore.setRouteAccess(newObj.database_id) + const userStore = useUserStore() + userStore.setRouteAccess(newObj.database_id) } if (!newObj.table_id) { return } /* load table */ - this.cacheStore.setRouteTable(newObj.database_id, newObj.table_id) + cacheStore.setRouteTable(newObj.database_id, newObj.table_id) }, deep: true, immediate: true } }, mounted () { - this.initEnvironment() if (this.$route.query && this.$route.query.q) { this.search = this.$route.query.q } @@ -254,7 +247,8 @@ export default { return } this.setTheme() - this.cacheStore.reloadMessages() + const cacheStore = useCacheStore() + cacheStore.reloadMessages() }, methods: { login () { @@ -263,23 +257,12 @@ export default { }, logout () { this.$vuetify.theme.global.name = 'tuwThemeLight' - this.userStore.logout() - this.$router.push('/database') + this.$oidc.logout() }, retrieve () { console.debug('performing fuzzy search') this.$router.push({ path: '/search', query: { q: this.search } }) }, - initEnvironment () { - if (this.token && !this.user) { - console.error('Something went wrong with loading the user: reset user cache') - this.userStore.logout() - } - if (!this.locale) { - this.userStore.setLocale('en') - } - this.$i18n.locale = this.locale - }, setTheme () { switch (this.user.attributes.theme) { case 'dark': @@ -295,10 +278,6 @@ export default { this.$vuetify.theme.global.name = 'tuwThemeDarkContrast' break } - }, - setLocale (code) { - this.userStore.setLocale(code) - this.$i18n.locale = this.locale } } } diff --git a/dbrepo-ui/middleware/auth.ts b/dbrepo-ui/middleware/auth.ts new file mode 100644 index 0000000000..b16dfb5bbf --- /dev/null +++ b/dbrepo-ui/middleware/auth.ts @@ -0,0 +1,7 @@ +export default defineNuxtRouteMiddleware((to, from) => { + if (import.meta.server) { return } + const { $oidc } = useNuxtApp() + if (!$oidc.isLoggedIn) { + $oidc.login(to.fullPath) + } +}) diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index dc65c7ac3a..6b5d1a622b 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -1,6 +1,7 @@ -import { transformAssetUrls } from 'vite-plugin-vuetify' +import {transformAssetUrls} from 'vite-plugin-vuetify' + +const proxy: any = {} -const proxy : any = {} /* proxies the backend calls, >>NOT<< the frontend calls (clicking) */ if (process.env.NODE_ENV === 'development') { @@ -19,153 +20,203 @@ if (process.env.NODE_ENV === 'development') { /** * https://nuxt.com/docs/guide/concepts/rendering#hybrid-rendering */ -const routeRules = { -} +const routeRules = {} export default defineNuxtConfig({ - app: { - head: { - charset: 'utf-8', - viewport: 'width=device-width, initial-scale=1', - meta: [ - { 'http-equiv': 'Content-Security-Policy', content: 'upgrade-insecure-requests' } - ], - htmlAttrs: { - lang: 'en-US' - } - } - }, - - build: { - transpile: ['vuetify'], - }, - - css: [ - 'vuetify/lib/styles/main.sass', - '@mdi/font/css/materialdesignicons.min.css', - '@/assets/globals.css', - '@/assets/overrides.css', - ], - - runtimeConfig: { - public: { - commit: '', - title: 'Database Repository', - logo: '/logo.svg', - icon: '/favicon.ico', - touch: '/apple-touch-icon.png', - version: 'bun-dev', - broker: { - host: 'localhost', - port: { - '5672': false - }, - extra: '' - }, - variant: { - input: { - normal: 'underlined', - contrast: 'outlined', - }, - button: { - normal: 'flat', - contrast: 'outlined', - }, - list: { - normal: '', - contrast: 'flat', - } - }, - api: { - client: 'http://localhost', - server: 'http://gateway-service', - }, - upload: { - client: 'http://localhost/api/upload/files' - }, - database: { - unsupported: '*,AVG,BIT_AND,BIT_OR,BIT_XOR,COUNT,COUNTDISTINCT,GROUP_CONCAT,JSON_ARRAYAGG,JSON_OBJECTAGG,MAX,MIN,STD,STDDEV,STDDEV_POP,STDDEV_SAMP,SUM,VARIANCE,VAR_POP,VAR_SAMP,--', - image: { - width: 200, - height: 200 - }, - extra: '' - }, - pid: { - default: { - publisher: 'Example University' - } - }, - doi: { - enabled: false, - endpoint: 'https://doi.org' - }, - links: { - rabbitmq: { - text: 'RabbitMQ Admin', - href: '/admin/broker/' - }, - keycloak: { - text: 'Keycloak Admin', - href: '/api/auth/' - } - } - } - }, - - routeRules, - - devServer: { - port: 3001 - }, - - modules: [ - '@pinia/nuxt', - '@pinia-plugin-persistedstate/nuxt', - '@nuxtjs/i18n' - ], - - pinia: { - storesDirs: ['./stores/**'], - }, - - piniaPersistedstate: { - storage: 'localStorage' - }, - - i18n: { - lazy: false, - langDir: 'locales', - strategy: 'no_prefix', - defaultLocale: 'de', - locales: [ - { - 'code': 'en', - 'file': 'en-US.json', - 'name': 'English (US)', - 'iso': 'en-US' - }, - { - 'code': 'de', - 'file': 'de-AT.json', - 'name': 'German (AT)', - 'iso': 'de-AT' - } - ] - - }, - - vite: { - server: { - proxy - }, - vue: { - template: { - transformAssetUrls, - }, - }, - }, - - devtools: { enabled: true }, - compatibilityDate: '2024-07-24' + app: { + head: { + charset: 'utf-8', + viewport: 'width=device-width, initial-scale=1', + meta: [ + {'http-equiv': 'Content-Security-Policy', content: 'upgrade-insecure-requests'} + ], + htmlAttrs: { + lang: 'en-US' + } + } + }, + + openidConnect: { + addPlugin: true, + op: { + issuer: 'http://localhost/api/auth/realms/dbrepo', + clientId: 'dbrepo-client', + clientSecret: 'MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG', + scope: [ + 'openid', + 'roles', + 'attributes' + ] + }, + config: { + debug: false, + response_type: 'code', + secret: 'oidc._sessionid', + isCookieUserInfo: false, // whether save userinfo into cookie. + cookie: { loginName: '' }, + cookiePrefix: 'oidc._', + cookieEncrypt: true, + cookieEncryptKey: 'bfnuxt9c2470cb477d907b1e0917oidc', + cookieEncryptIV: 'ab83667c72eec9e4', + cookieEncryptALGO: 'aes-256-cbc', + cookieMaxAge: 24 * 60 * 60, // default one day + hasCookieRefreshExpireDate: false, // Set this to true if your provider has an refresh_expires_in date for the refresh token + cookieRefreshDefaultMaxAge: 24 * 60 * 60, // default one day if the hasCookieRefreshExpireDate is false + cookieFlags: { + access_token: { + httpOnly: true, + secure: false + } + } + } + }, + + build: { + transpile: ['vuetify'], + }, + + css: [ + 'vuetify/lib/styles/main.sass', + '@mdi/font/css/materialdesignicons.min.css', + '@/assets/globals.css', + '@/assets/overrides.css', + ], + + runtimeConfig: { + openidConnect: { + op: { + issuer: '', + clientId: '', + clientSecret: '', + }, + config: { + cookieFlags: { + access_token: { + httpOnly: true, + secure: false + } + } + } + }, + public: { + commit: '', + title: 'Database Repository', + logo: '/logo.svg', + icon: '/favicon.ico', + touch: '/apple-touch-icon.png', + version: 'bun-dev', + broker: { + host: 'localhost', + port: { + '5672': false + }, + extra: '' + }, + variant: { + input: { + normal: 'underlined', + contrast: 'outlined', + }, + button: { + normal: 'flat', + contrast: 'outlined', + }, + list: { + normal: '', + contrast: 'flat', + } + }, + api: { + client: 'http://localhost', + server: 'http://gateway-service', + }, + upload: { + client: 'http://localhost/api/upload/files' + }, + database: { + unsupported: '*,AVG,BIT_AND,BIT_OR,BIT_XOR,COUNT,COUNTDISTINCT,GROUP_CONCAT,JSON_ARRAYAGG,JSON_OBJECTAGG,MAX,MIN,STD,STDDEV,STDDEV_POP,STDDEV_SAMP,SUM,VARIANCE,VAR_POP,VAR_SAMP,--', + image: { + width: 200, + height: 200 + }, + extra: '' + }, + pid: { + default: { + publisher: 'Example University' + } + }, + doi: { + enabled: false, + endpoint: 'https://doi.org' + }, + links: { + rabbitmq: { + text: 'RabbitMQ Admin', + href: '/admin/broker/' + }, + keycloak: { + text: 'Keycloak Admin', + href: '/api/auth/' + } + } + } + }, + + routeRules, + + devServer: { + port: 3001 + }, + + modules: [ + '@pinia/nuxt', + '@pinia-plugin-persistedstate/nuxt', + '@nuxtjs/i18n', + 'nuxt-openid-connect' + ], + + pinia: { + storesDirs: ['./stores/**'], + }, + + piniaPersistedstate: { + storage: 'localStorage' + }, + + i18n: { + lazy: false, + langDir: 'locales', + strategy: 'no_prefix', + defaultLocale: 'de', + locales: [ + { + 'code': 'en', + 'file': 'en-US.json', + 'name': 'English (US)', + 'iso': 'en-US' + }, + { + 'code': 'de', + 'file': 'de-AT.json', + 'name': 'German (AT)', + 'iso': 'de-AT' + } + ] + + }, + + vite: { + server: { + proxy + }, + vue: { + template: { + transformAssetUrls, + }, + }, + }, + + devtools: {enabled: true}, + compatibilityDate: '2024-07-24' }) diff --git a/dbrepo-ui/package.json b/dbrepo-ui/package.json index 2bbe6696bc..5dfce95973 100644 --- a/dbrepo-ui/package.json +++ b/dbrepo-ui/package.json @@ -25,6 +25,7 @@ "merkle-json": "^2.6.0", "moment": "^2.30.1", "nuxt": "^3.10.3", + "nuxt-openid-connect": "^0.8.1", "parse-md": "^3.0.3", "pinia": "^2.1.7", "qs": "^6.11.2", diff --git a/dbrepo-ui/pages/user/authentication.vue b/dbrepo-ui/pages/user/authentication.vue index 4cb3e11a02..3c346a8bce 100644 --- a/dbrepo-ui/pages/user/authentication.vue +++ b/dbrepo-ui/pages/user/authentication.vue @@ -60,6 +60,11 @@ </div> </template> +<script setup> +definePageMeta({ + middleware: ['auth'] +}) +</script> <script> import UserToolbar from '@/components/user/UserToolbar.vue' import { useUserStore } from '@/stores/user' @@ -112,7 +117,7 @@ export default { changePassword () { this.loadingUpdate = true const userService = useUserService() - userService.updatePassword(this.user.id, {'password': this.password}) + userService.updatePassword(this.user.sub, {'password': this.password}) .then(() => { const toast = useToastInstance() toast.success(this.$t('success.user.password')) diff --git a/dbrepo-ui/pages/user/developer.vue b/dbrepo-ui/pages/user/developer.vue deleted file mode 100644 index 9b6f80a591..0000000000 --- a/dbrepo-ui/pages/user/developer.vue +++ /dev/null @@ -1,230 +0,0 @@ -<template> - <div> - <UserToolbar /> - <v-window - v-model="tab"> - <v-window-item> - <v-card - v-if="canHandleMessages" - :title="$t('pages.settings.subpages.developer.maintenance.title')" - rounded="0" - variant="flat"> - <v-data-table - :headers="headers" - :items="messages" - :loading="loadingMessages" - :items-per-page="10"> - <template v-slot:item.action="{ item }"> - <v-btn - size="x-small" - variant="flat" - :text="$t('pages.settings.subpages.developer.maintenance.modify.text')" - @click="modifyMessage(item)" /> - </template> - </v-data-table> - <v-card-text> - <v-btn - size="small" - variant="flat" - :text="$t('pages.settings.subpages.developer.maintenance.add.text')" - :disabled="!canCreateMessage" - @click="createMessage" /> - </v-card-text> - </v-card> - <v-divider - v-if="canHandleMessages" /> - <v-card - :title="$t('pages.settings.subpages.developer.token.title')" - :subtitle="$t('pages.settings.subpages.developer.token.subtitle')" - variant="flat" - rounded="0"> - <v-card-text> - <v-row dense> - <v-col xl="4"> - <v-text-field - v-model="accessTokenField" - disabled - :variant="inputVariant" - :label="$t('pages.settings.subpages.developer.token.access.label')" /> - </v-col> - <v-col xl="2"> - <v-text-field - v-model="tokenExpiry" - disabled - :variant="inputVariant" - :label="expiryLabel(token)" /> - </v-col> - </v-row> - <v-row dense> - <v-col xl="4"> - <v-text-field - v-model="refreshTokenField" - disabled - :variant="inputVariant" - :label="$t('pages.settings.subpages.developer.token.refresh.label')" /> - </v-col> - <v-col xl="2"> - <v-text-field - v-model="refreshTokenExpiry" - disabled - :variant="inputVariant" - :label="expiryLabel(refreshToken)" /> - </v-col> - </v-row> - </v-card-text> - </v-card> - </v-window-item> - </v-window> - <v-breadcrumbs :items="items" class="pa-0 mt-2" /> - <v-dialog - v-model="dialog" - persistent - max-width="640"> - <EditMaintenanceMessage - :id="messageId" - @close-dialog="closeDialog" /> - </v-dialog> - </div> -</template> - -<script> -import UserToolbar from '@/components/user/UserToolbar.vue' -import EditMaintenanceMessage from '@/components/dialogs/EditMaintenanceMessage.vue' -import { formatTimestampUTCLabel, isActiveMessage, timestampsToHumanDifference } from '@/utils' -import { useUserStore } from '@/stores/user' -import { useCacheStore } from '@/stores/cache' - -export default { - components: { - UserToolbar, - EditMaintenanceMessage - }, - data () { - return { - tab: 0, - accessTokenField: null, - refreshTokenField: null, - headers: [ - { title: this.$t('pages.settings.subpages.developer.maintenance.active'), value: 'active' }, - { title: this.$t('pages.settings.subpages.developer.maintenance.type'), value: 'type' }, - { title: this.$t('pages.settings.subpages.developer.maintenance.message'), value: 'message' }, - { title: this.$t('pages.settings.subpages.developer.maintenance.action'), value: 'action' } - ], - items: [ - { - title: this.$t('navigation.user'), - to: '/user' - }, - { - title: this.$t('toolbars.user.developer'), - to: `/user/developer`, - disabled: true - } - ], - messages: [], - loadingMessages: false, - dialog: false, - messageId: null, - userStore: useUserStore(), - cacheStore: useCacheStore() - } - }, - computed: { - token () { - return this.userStore.getToken - }, - tokenExpiry () { - if (!this.token) { - return null - } - const authenticationService = useAuthenticationService() - return formatTimestampUTCLabel(authenticationService.tokenToExpiryDate(this.token)) - }, - refreshToken () { - return this.userStore.getRefreshToken - }, - refreshTokenExpiry () { - if (!this.refreshToken) { - return null - } - const authenticationService = useAuthenticationService() - return formatTimestampUTCLabel(authenticationService.tokenToExpiryDate(this.refreshToken)) - }, - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, - canCreateMessage () { - if (!this.roles) { - return false - } - return this.roles.includes('create-maintenance-message') - }, - canModifyMessage () { - if (!this.roles) { - return false - } - return this.roles.includes('modify-maintenance-message') - }, - canHandleMessages () { - return this.canCreateMessage || this.canModifyMessage - }, - inputVariant () { - const runtimeConfig = useRuntimeConfig() - return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.input.contrast : runtimeConfig.public.variant.input.normal - }, - buttonVariant () { - const runtimeConfig = useRuntimeConfig() - return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.button.contrast : runtimeConfig.public.variant.button.normal - } - }, - mounted () { - this.loadMessages() - if (!this.token || !this.refreshToken) { - return - } - this.accessTokenField = this.token - this.refreshTokenField = this.refreshToken - }, - methods: { - submit () { - }, - modifyMessage (message) { - this.messageId = message.id - this.dialog = true - }, - createMessage () { - this.messageId = null - this.dialog = true - }, - expiryLabel (token) { - const authenticationService = useAuthenticationService() - return this.$t('pages.settings.subpages.developer.token.expiry') + ' ' + timestampsToHumanDifference(Date.now(), authenticationService.tokenToExpiryDate(token)) - }, - loadMessages () { - const messageService = useMessageService() - messageService.findAll() - .then((messages) => { - this.messages = messages.map((message) => { - message.active = isActiveMessage(message) ? '● true' : 'false' - return message - }) - }) - .catch(() => { - this.loadingMessages = false - }) - .finally(() => { - this.loadingMessages = false - }) - }, - closeDialog (event) { - if (event.success) { - this.cacheStore.reloadMessages() - } - this.dialog = false - } - } -} -</script> diff --git a/dbrepo-ui/pages/user/index.vue b/dbrepo-ui/pages/user/index.vue index e729d9086f..d6691d8302 100644 --- a/dbrepo-ui/pages/user/index.vue +++ b/dbrepo-ui/pages/user/index.vue @@ -2,27 +2,14 @@ <div /> </template> +<script setup> +definePageMeta({ + middleware: ['auth'] +}) +</script> <script> -import { useUserStore } from '@/stores/user' - export default { - data () { - return { - userStore: useUserStore() - } - }, - computed: { - token () { - return this.userStore.getToken - }, - user () { - return this.userStore.getUser - } - }, mounted () { - if (!this.user) { - return - } this.$router.push('/user/info') } } diff --git a/dbrepo-ui/pages/user/info.vue b/dbrepo-ui/pages/user/info.vue index 3501818ca0..cb0e3fd922 100644 --- a/dbrepo-ui/pages/user/info.vue +++ b/dbrepo-ui/pages/user/info.vue @@ -13,18 +13,17 @@ <v-row dense> <v-col md="6"> <v-text-field - v-model="model.id" + v-model="user.sub" readonly + disabled :variant="inputVariant" - :label="$t('pages.user.subpages.info.id.label')" - append-inner-icon="mdi-content-copy" - @click:append-inner="copy" /> + :label="$t('pages.user.subpages.info.id.label')" /> </v-col> </v-row> <v-row dense> <v-col md="6"> <v-text-field - v-model="model.username" + v-model="user.preferred_username" disabled :variant="inputVariant" :label="$t('pages.user.subpages.info.username.label')" /> @@ -124,6 +123,12 @@ </div> </template> +<script setup> +definePageMeta({ + middleware: ['auth'] +}) +const { $oidc } = useNuxtApp() +</script> <script> import UserToolbar from '@/components/user/UserToolbar.vue' import { useUserStore } from '@/stores/user' @@ -143,7 +148,6 @@ export default { theme: null, orcidLoading: false, model: { - id: null, username: null, firstname: null, lastname: null, @@ -176,10 +180,13 @@ export default { }, computed: { user () { - return this.userStore.getUser + return this.$oidc.user }, roles () { - return this.userStore.getRoles + if (!this.user || !this.user.realm_access) { + return [] + } + return this.user.realm_access.roles }, locale () { return this.userStore.getLocale @@ -216,14 +223,12 @@ export default { language: this.model.language, } const userService = useUserService() - userService.update(this.user.id, payload) + userService.update(this.user.sub, payload) .then((user) => { console.info('Updated user information') const toast = useToastInstance() toast.success(this.$t('success.user.info')) - this.userStore.setUser(user) /* language */ - this.userStore.setLocale(this.model.language) this.$i18n.locale = this.locale /* theme */ switch (this.model.theme) { @@ -253,14 +258,12 @@ export default { return } this.model = { - id: this.user.id, - username: this.user.username, firstname: this.user.given_name, lastname: this.user.family_name, - orcid: this.user.attributes.orcid, - affiliation: this.user.attributes.affiliation, - theme: this.user.attributes.theme, - language: this.user.attributes.language + orcid: this.user.attributes?.orcid, + affiliation: this.user.attributes?.affiliation, + theme: this.user.attributes?.theme, + language: this.user.attributes?.language } }, retrieve () { @@ -284,11 +287,6 @@ export default { .finally(() => { this.orcidLoading = false }) - }, - copy () { - navigator.clipboard.writeText(this.model.id) - const toast = useToastInstance() - toast.success(this.$t('success.clipboard.user')) } } } diff --git a/dbrepo-ui/stores/user.js b/dbrepo-ui/stores/user.js index 522ce02a06..e857a0681e 100644 --- a/dbrepo-ui/stores/user.js +++ b/dbrepo-ui/stores/user.js @@ -4,50 +4,22 @@ export const useUserStore = defineStore('user', { persist: true, state: () => { return { - /** @type String */ - token: null, - /** @type String */ - refreshToken: null, - roles: [], - user: null, access: null, - locale: null + /** @type String */ + token: null } }, getters: { getToken: (state) => state.token, - getRefreshToken: (state) => state.refreshToken, - getRoles: (state) => state.roles, - getUser: (state) => state.user, getAccess: (state) => state.access, - getLocale: (state) => state.locale }, actions: { setToken(token) { this.token = token }, - setRefreshToken(refreshToken) { - this.refreshToken = refreshToken - }, - setRoles(roles) { - this.roles = roles - }, - setUser(user) { - this.user = user - }, setAccess(access) { this.access = access }, - setLocale (locale) { - this.locale = locale - }, - logout() { - this.token = null - this.refreshToken = null - this.roles = [] - this.user = null - this.access = null - }, setRouteAccess(databaseId) { if (!databaseId || !this.user || !this.user.id) { return -- GitLab