fix: dashboard auth redirection and magic link login issues (#76)
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
This commit is contained in:
committed by
GitHub
parent
7668be50ae
commit
67f7e6a6d2
@@ -61,17 +61,21 @@ async function logout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function signInUserWithGithubFB() {
|
async function signInUserWithGithubFB() {
|
||||||
window.location.href = `${import.meta.env.VITE_BACKEND_API_URL}/auth/github`;
|
window.location.href = `${
|
||||||
|
import.meta.env.VITE_BACKEND_API_URL
|
||||||
|
}/auth/github?redirect_uri=${import.meta.env.VITE_ADMIN_URL}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function signInUserWithGoogleFB() {
|
async function signInUserWithGoogleFB() {
|
||||||
window.location.href = `${import.meta.env.VITE_BACKEND_API_URL}/auth/google`;
|
window.location.href = `${
|
||||||
|
import.meta.env.VITE_BACKEND_API_URL
|
||||||
|
}/auth/google?redirect_uri=${import.meta.env.VITE_ADMIN_URL}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function signInUserWithMicrosoftFB() {
|
async function signInUserWithMicrosoftFB() {
|
||||||
window.location.href = `${
|
window.location.href = `${
|
||||||
import.meta.env.VITE_BACKEND_API_URL
|
import.meta.env.VITE_BACKEND_API_URL
|
||||||
}/auth/microsoft`;
|
}/auth/microsoft?redirect_uri=${import.meta.env.VITE_ADMIN_URL}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getInitialUserDetails() {
|
async function getInitialUserDetails() {
|
||||||
@@ -215,7 +219,7 @@ async function elevateUser() {
|
|||||||
|
|
||||||
async function sendMagicLink(email: string) {
|
async function sendMagicLink(email: string) {
|
||||||
const res = await axios.post(
|
const res = await axios.post(
|
||||||
`${import.meta.env.VITE_BACKEND_API_URL}/auth/signin`,
|
`${import.meta.env.VITE_BACKEND_API_URL}/auth/signin?origin=admin`,
|
||||||
{
|
{
|
||||||
email,
|
email,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -6,11 +6,28 @@ const isAdmin = () => {
|
|||||||
return user ? user.isAdmin : false;
|
return user ? user.isAdmin : false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const GUEST_ROUTES = ['index', 'magic-link'];
|
||||||
|
|
||||||
|
const isGuestRoute = (to: unknown) => GUEST_ROUTES.includes(to as string);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @module routers
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @function
|
||||||
|
* @name onBeforeRouteChange
|
||||||
|
* @param {object} to
|
||||||
|
* @param {object} from
|
||||||
|
* @param {function} next
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
|
||||||
export default <HoppModule>{
|
export default <HoppModule>{
|
||||||
onBeforeRouteChange(to, from, next) {
|
onBeforeRouteChange(to, from, next) {
|
||||||
if (to.name !== 'index' && !isAdmin()) {
|
if (!isGuestRoute(to.name) && !isAdmin()) {
|
||||||
next({ name: 'index' });
|
next({ name: 'index' });
|
||||||
} else if (to.name === 'index' && isAdmin()) {
|
} else if (isGuestRoute(to.name) && isAdmin()) {
|
||||||
next({ name: 'dashboard' });
|
next({ name: 'dashboard' });
|
||||||
} else {
|
} else {
|
||||||
next();
|
next();
|
||||||
|
|||||||
35
packages/hoppscotch-sh-admin/src/pages/magic-link.vue
Normal file
35
packages/hoppscotch-sh-admin/src/pages/magic-link.vue
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<template>
|
||||||
|
<div class="flex flex-col items-center justify-center min-h-screen">
|
||||||
|
<HoppSmartSpinner v-if="signingInWithEmail" />
|
||||||
|
<AppLogo v-else class="w-16 h-16 rounded" />
|
||||||
|
<pre v-if="error" class="mt-4 text-secondaryLight">{{ error }}</pre>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { onBeforeMount, onMounted, ref } from 'vue';
|
||||||
|
import { auth } from '~/helpers/auth';
|
||||||
|
|
||||||
|
const signingInWithEmail = ref(false);
|
||||||
|
const error = ref(null);
|
||||||
|
|
||||||
|
onBeforeMount(() => {
|
||||||
|
auth.performAuthInit();
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
signingInWithEmail.value = true;
|
||||||
|
try {
|
||||||
|
await auth.processMagicLink();
|
||||||
|
} catch (e: any) {
|
||||||
|
error.value = e.message;
|
||||||
|
} finally {
|
||||||
|
signingInWithEmail.value = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<route lang="yaml">
|
||||||
|
meta:
|
||||||
|
layout: empty
|
||||||
|
</route>
|
||||||
Reference in New Issue
Block a user