diff --git a/backend/src/apis/gms/GmsClient.ts b/backend/src/apis/gms/GmsClient.ts index 46cf38e54..b39a46a4f 100644 --- a/backend/src/apis/gms/GmsClient.ts +++ b/backend/src/apis/gms/GmsClient.ts @@ -202,7 +202,7 @@ export async function verifyAuthToken( } try { const result = await axios.get(baseUrl.concat(service), config) - logger.debug('GET-Response of verify-auth-token:', result) + console.log('GET-Response of verify-auth-token:', result) if (result.status !== 200) { throw new LogError( 'HTTP Status Error in verify-auth-token:', @@ -210,11 +210,11 @@ export async function verifyAuthToken( result.statusText, ) } - logger.debug('responseData:', result.data.responseData) + console.log('responseData:', result.data.responseData) // eslint-disable-next-line @typescript-eslint/no-unsafe-call - const playgroundUri: string = JSON.parse(result.data.responseData.data) - logger.debug('verifyAuthToken=', playgroundUri) - return playgroundUri + const token: string = result.data.responseData.token + console.log('verifyAuthToken=', token) + return token } catch (error: any) { logger.error('Error in verifyAuthToken:', error) throw new LogError(error.message) diff --git a/backend/src/graphql/model/GmsUserAuthenticationResult.ts b/backend/src/graphql/model/GmsUserAuthenticationResult.ts new file mode 100644 index 000000000..b1fb2c246 --- /dev/null +++ b/backend/src/graphql/model/GmsUserAuthenticationResult.ts @@ -0,0 +1,10 @@ +import { Field, ObjectType } from 'type-graphql' + +@ObjectType() +export class GmsUserAuthenticationResult { + @Field(() => String) + url: string + + @Field(() => String) + token: string +} diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 44ae3e722..cbeb740f1 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -79,6 +79,7 @@ import { Location2Point } from './util/Location2Point' import { setUserRole, deleteUserRole } from './util/modifyUserRole' import { sendUserToGms } from './util/sendUserToGms' import { validateAlias } from './util/validateAlias' +import { GmsUserAuthenticationResult } from '../model/GmsUserAuthenticationResult' const LANGUAGES = ['de', 'en', 'es', 'fr', 'nl'] const DEFAULT_LANGUAGE = 'de' @@ -676,18 +677,18 @@ export class UserResolver { } @Authorized([RIGHTS.GMS_USER_PLAYGROUND]) - @Query(() => String) - async authenticateGmsUserSearch(@Ctx() context: Context): Promise { + @Query(() => GmsUserAuthenticationResult) + async authenticateGmsUserSearch(@Ctx() context: Context): Promise { logger.info(`authUserForGmsUserSearch()...`) const dbUser = getUser(context) - let gmsPlaygroundUri: string + let result: GmsUserAuthenticationResult if (context.token) { - gmsPlaygroundUri = await authenticateGmsUserPlayground(context.token, dbUser) - logger.debug('authUserForGmsUserSearch=', gmsPlaygroundUri) + result = await authenticateGmsUserPlayground(context.token, dbUser) + console.log('authUserForGmsUserSearch=', result) } else { throw new LogError('authUserForGmsUserSearch without token') } - return gmsPlaygroundUri + return result } @Authorized([RIGHTS.SEARCH_ADMIN_USERS]) diff --git a/backend/src/graphql/resolver/util/authenticateGmsUserPlayground.ts b/backend/src/graphql/resolver/util/authenticateGmsUserPlayground.ts index 5ad51ee42..53c752b5d 100644 --- a/backend/src/graphql/resolver/util/authenticateGmsUserPlayground.ts +++ b/backend/src/graphql/resolver/util/authenticateGmsUserPlayground.ts @@ -1,9 +1,16 @@ import { User as DbUser } from '@entity/User' import { verifyAuthToken } from '@/apis/gms/GmsClient' +import { CONFIG } from '@/config' +import { GmsUserAuthenticationResult } from '@/graphql/model/GmsUserAuthenticationResult' -export async function authenticateGmsUserPlayground(token: string, dbUser: DbUser): Promise { - const gmsPlaygroundUri = await verifyAuthToken(dbUser.communityUuid, token) - - return gmsPlaygroundUri +export async function authenticateGmsUserPlayground( + token: string, + dbUser: DbUser, +): Promise { + const result = new GmsUserAuthenticationResult() + result.url = CONFIG.GMS_URL.concat('/playground') + result.token = await verifyAuthToken(dbUser.communityUuid, token) + console.log('GmsUserAuthenticationResult:', result) + return result } diff --git a/backend/src/seeds/graphql/queries.ts b/backend/src/seeds/graphql/queries.ts index 904b097fc..b097a2710 100644 --- a/backend/src/seeds/graphql/queries.ts +++ b/backend/src/seeds/graphql/queries.ts @@ -18,7 +18,8 @@ export const verifyLogin = gql` export const authenticateGmsUserSearch = gql` query { authenticateGmsUserSearch { - gmsPlaygroundUri + url + token } } ` diff --git a/frontend/src/components/Menu/Sidebar.vue b/frontend/src/components/Menu/Sidebar.vue index 8f6176b03..8e19acb15 100644 --- a/frontend/src/components/Menu/Sidebar.vue +++ b/frontend/src/components/Menu/Sidebar.vue @@ -28,13 +28,13 @@ {{ $t('GDT') }} - + {{ $t('navigation.info') }} - {{ $t('usersearch') }} + {{ $t('navigation.usersearch') }}
diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index 87914ca6a..696963b78 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -22,12 +22,12 @@ export const verifyLogin = gql` export const authenticateGmsUserSearch = gql` query { authenticateGmsUserSearch { - gmsPlaygroundUri + url + token } } ` - export const transactionsQuery = gql` query($currentPage: Int = 1, $pageSize: Int = 25, $order: Order = DESC) { transactionList(currentPage: $currentPage, pageSize: $pageSize, order: $order) { diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 1c37d5e24..bae15f0de 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -268,7 +268,8 @@ "send": "Senden", "settings": "Einstellung", "support": "Support", - "transactions": "Transaktionen" + "transactions": "Transaktionen", + "usersearch": "Nutzersuche" }, "openHours": "Offene Stunden", "pageTitle": { diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 7c607ecbb..4a4fe4c7f 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -268,7 +268,8 @@ "send": "Send", "settings": "Settings", "support": "Support", - "transactions": "Transactions" + "transactions": "Transactions", + "usersearch": "User Search" }, "openHours": "Open Hours", "pageTitle": { diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json index 94bac00a6..fef19e169 100644 --- a/frontend/src/locales/fr.json +++ b/frontend/src/locales/fr.json @@ -250,7 +250,8 @@ "send": "Envoyer", "settings": "Configuration", "support": "Aide", - "transactions": "Transactions" + "transactions": "Transactions", + "usersearch": "Recherche d'Utilisateur" }, "openHours": "Heures ouverte", "pageTitle": { diff --git a/frontend/src/pages/UserSearch.vue b/frontend/src/pages/UserSearch.vue index 8ceeb9ac6..465f19bdd 100644 --- a/frontend/src/pages/UserSearch.vue +++ b/frontend/src/pages/UserSearch.vue @@ -10,18 +10,10 @@ export default { name: 'GMS User Playground', data() { return { - gmsPlaygroundUri: '', + gmsPlaygroundUrl: 'unknown', + gmsAuthToken: '', } }, - /* - async mounted() { - let query = `{ - authenticateGmsUserSearch() { - gmsPlaygroundUri - } - }`; - }, - */ methods: { authenticateGmsUserPlayground() { this.$apollo @@ -29,13 +21,23 @@ export default { query: authenticateGmsUserSearch, }) .then((result) => { - this.gmsPlaygroundUri = result.data.authenticateGmsUserSearch.gmsPlaygroundUri + this.gmsPlaygroundUrl = result.data.url, + this.gmsAuthToken = result.data.token }) .catch(() => { this.toastError('listContributionLinks has no result, use default data') }) }, }, + /* + openGmsUserPlayground: function () { + // window.open(this.gmsPlaygroundUrl + '?' + this.gmsAuthToken, '_blank') + let uri = this.gmsPlaygroundUrl + '?' + this.gmsAuthToken + let route = this.$router.resolve({path: uri}); + // let route = this.$router.resolve('/link/to/page'); // This also works. + window.open(route.href, '_blank'); + }, + */ created() { this.authenticateGmsUserPlayground() }, diff --git a/frontend/src/routes/routes.js b/frontend/src/routes/routes.js index 8c8022c06..2636b963b 100755 --- a/frontend/src/routes/routes.js +++ b/frontend/src/routes/routes.js @@ -87,11 +87,6 @@ const routes = [ requiresAuth: true, pageTitle: 'user search', }, - /* - redirect: (to) => { - return { path: '/login' } - }, - */ }, // { // path: '/storys',