2021-08-09 19:29:15 +02:00
|
|
|
<template>
|
2022-07-12 10:55:28 +02:00
|
|
|
<p>{{ t("Redirecting in progress…") }}</p>
|
2021-08-09 19:29:15 +02:00
|
|
|
</template>
|
2022-07-12 10:55:28 +02:00
|
|
|
<script lang="ts" setup>
|
2020-11-27 19:27:44 +01:00
|
|
|
import { ICurrentUserRole } from "@/types/enums";
|
|
|
|
import { UPDATE_CURRENT_USER_CLIENT, LOGGED_USER } from "../../graphql/user";
|
2020-06-27 19:12:45 +02:00
|
|
|
import RouteName from "../../router/name";
|
2022-07-12 10:55:28 +02:00
|
|
|
import { saveUserData } from "../../utils/auth";
|
|
|
|
import { changeIdentity } from "../../utils/identity";
|
|
|
|
import { ICurrentUser, IUser } from "../../types/current-user.model";
|
|
|
|
import { useRouter } from "vue-router";
|
|
|
|
import { useMutation, useQuery } from "@vue/apollo-composable";
|
|
|
|
import { useI18n } from "vue-i18n";
|
|
|
|
import { useHead } from "@vueuse/head";
|
|
|
|
import { computed } from "vue";
|
2020-06-27 19:12:45 +02:00
|
|
|
|
2022-07-12 10:55:28 +02:00
|
|
|
const { t } = useI18n({ useScope: "global" });
|
|
|
|
useHead({
|
|
|
|
title: computed(() => t("Redirecting to Mobilizon")),
|
|
|
|
});
|
2020-06-27 19:12:45 +02:00
|
|
|
|
2022-07-12 10:55:28 +02:00
|
|
|
const getValueFromMeta = (name: string): string | null => {
|
|
|
|
const element = document.querySelector(`meta[name="${name}"]`);
|
|
|
|
if (element && element.getAttribute("content")) {
|
|
|
|
return element.getAttribute("content");
|
2020-06-27 19:12:45 +02:00
|
|
|
}
|
2022-07-12 10:55:28 +02:00
|
|
|
return null;
|
|
|
|
};
|
|
|
|
|
|
|
|
const accessToken = getValueFromMeta("auth-access-token");
|
|
|
|
const refreshToken = getValueFromMeta("auth-refresh-token");
|
|
|
|
const userId = getValueFromMeta("auth-user-id");
|
|
|
|
const userEmail = getValueFromMeta("auth-user-email");
|
|
|
|
const userRole = getValueFromMeta("auth-user-role") as ICurrentUserRole;
|
|
|
|
|
|
|
|
const router = useRouter();
|
|
|
|
|
|
|
|
const { onDone, mutate } = useMutation<{ updateCurrentUser: ICurrentUser }>(
|
|
|
|
UPDATE_CURRENT_USER_CLIENT
|
|
|
|
);
|
2020-06-27 19:12:45 +02:00
|
|
|
|
2022-07-12 10:55:28 +02:00
|
|
|
onDone(() => {
|
|
|
|
const { onResult: onLoggedUserResult } = useQuery<{ loggedUser: IUser }>(
|
|
|
|
LOGGED_USER
|
|
|
|
);
|
|
|
|
|
|
|
|
onLoggedUserResult(async ({ data: { loggedUser } }) => {
|
|
|
|
if (loggedUser.defaultActor) {
|
|
|
|
await changeIdentity(loggedUser.defaultActor);
|
|
|
|
await router.push({ name: RouteName.HOME });
|
|
|
|
} else {
|
|
|
|
// No need to push to REGISTER_PROFILE, the navbar will do it for us
|
2020-06-27 19:12:45 +02:00
|
|
|
}
|
2022-07-12 10:55:28 +02:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
if (!(userId && userEmail && userRole && accessToken && refreshToken)) {
|
|
|
|
await router.push("/");
|
|
|
|
} else {
|
|
|
|
const login = {
|
|
|
|
user: {
|
|
|
|
id: userId,
|
|
|
|
email: userEmail,
|
|
|
|
role: userRole,
|
|
|
|
isLoggedIn: true,
|
|
|
|
},
|
|
|
|
accessToken,
|
|
|
|
refreshToken,
|
|
|
|
};
|
|
|
|
saveUserData(login);
|
|
|
|
|
|
|
|
mutate({
|
|
|
|
id: userId,
|
|
|
|
email: userEmail,
|
|
|
|
isLoggedIn: true,
|
|
|
|
role: userRole,
|
|
|
|
});
|
2020-06-27 19:12:45 +02:00
|
|
|
}
|
|
|
|
</script>
|