refactor: improvements to the auth implementation in admin dashboard (#3444)
* refactor: abstract axios queries to a separate helper file * chore: delete unnecessary file * chore: remove unnecessary console logs * refactor: updated urls for api and authquery helpers * refactor: updated auth implementation * refactor: use default axios instance * chore: improve code readability * refactor: separate instances for rest and gql calls * refactor: removed async await from functions that do not need them * refactor: removed probable login and probable user from the auth system * refactor: better error handling in login component * chore: deleted unnecessary files and restructured some files * feat: new errors file with typed error message formats * refactor: removed unwanted usage of async await * refactor: optimizing the usage and return of promises in auth flow * refactor: convey boolean return type in a better way * chore: apply suggestions * refactor: handle case when mailcatcher is not active --------- Co-authored-by: nivedin <nivedinp@gmail.com> Co-authored-by: James George <jamesgeorge998001@gmail.com>
This commit is contained in:
committed by
GitHub
parent
46caf9b198
commit
7a9f0c8756
@@ -1,62 +0,0 @@
|
||||
import { platform } from '~/platform';
|
||||
import { AuthEvent, HoppUser } from '~/platform/auth';
|
||||
import { Subscription } from 'rxjs';
|
||||
import { onBeforeUnmount, onMounted, watch, WatchStopHandle } from 'vue';
|
||||
import { useReadonlyStream } from './stream';
|
||||
|
||||
/**
|
||||
* A Vue composable function that is called when the auth status
|
||||
* is being updated to being logged in (fired multiple times),
|
||||
* this is also called on component mount if the login
|
||||
* was already resolved before mount.
|
||||
*/
|
||||
export function onLoggedIn(exec: (user: HoppUser) => void) {
|
||||
const currentUser = useReadonlyStream(
|
||||
platform.auth.getCurrentUserStream(),
|
||||
platform.auth.getCurrentUser()
|
||||
);
|
||||
|
||||
let watchStop: WatchStopHandle | null = null;
|
||||
|
||||
onMounted(() => {
|
||||
if (currentUser.value) exec(currentUser.value);
|
||||
|
||||
watchStop = watch(currentUser, (newVal, prev) => {
|
||||
if (prev === null && newVal !== null) {
|
||||
exec(newVal);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
watchStop?.();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* A Vue composable function that calls its param function
|
||||
* when a new event (login, logout etc.) happens in
|
||||
* the auth system.
|
||||
*
|
||||
* NOTE: Unlike `onLoggedIn` for which the callback will be called once on mount with the current state,
|
||||
* here the callback will only be called on authentication event occurances.
|
||||
* You might want to check the auth state from an `onMounted` hook or something
|
||||
* if you want to access the initial state
|
||||
*
|
||||
* @param func A function which accepts an event
|
||||
*/
|
||||
export function onAuthEvent(func: (ev: AuthEvent) => void) {
|
||||
const authEvents$ = platform.auth.getAuthEventsStream();
|
||||
|
||||
let sub: Subscription | null = null;
|
||||
|
||||
onMounted(() => {
|
||||
sub = authEvents$.subscribe((ev) => {
|
||||
func(ev);
|
||||
});
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
sub?.unsubscribe();
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user