diff --git a/src/navigation/Router.tsx b/src/navigation/Router.tsx
index 666f487..698a9ac 100644
--- a/src/navigation/Router.tsx
+++ b/src/navigation/Router.tsx
@@ -9,7 +9,6 @@ import { getWhitelabel } from "services/whiteLabel";
import Ventilation from "pages/VentEditor";
import { useGlobalState } from "providers";
import DeviceSupport from "pages/DeviceSupport";
-import Login from "pages/Login";
const DeviceHistory = lazy(() => import("pages/DeviceHistory"));
const DevicePage = lazy(() => import("pages/Device"));
@@ -54,7 +53,7 @@ export const appendToUrl = (appendage: number | string) => {
export default function Router() {
- const { isAuthenticated, loginWithRedirect, isLoading } = useAuth0();
+ const { isLoading } = useAuth0();
const whiteLabel = getWhitelabel();
const [{ user }] = useGlobalState();
@@ -303,7 +302,6 @@ export default function Router() {
{/* Redirects */}
} />
- } />
{/* } /> */}
{/* } /> */}
} />
diff --git a/src/pages/Login.tsx b/src/pages/Login.tsx
deleted file mode 100644
index 0e5304a..0000000
--- a/src/pages/Login.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import { RedirectLoginOptions, useAuth0 } from "@auth0/auth0-react";
-// import { useAuth } from "hooks";
-import queryString from "query-string";
-import { useCallback, useEffect } from "react";
-import { useLocation } from "react-router";
-// import Loading from "./Loading";
-import LoadingScreen from "app/LoadingScreen";
-
-interface Props {
- prevPath?: string;
-}
-
-export default function Login(props: Props) {
- const { prevPath } = props;
- const location = useLocation();
- const { loginWithRedirect } = useAuth0();
-
- const setRouteBeforeLogin = useCallback((): Promise => {
- return new Promise(function(resolve) {
- localStorage.setItem("routeBeforeLogin", prevPath ? prevPath : "/");
- return resolve("success");
- });
- }, [prevPath]);
-
- useEffect(() => {
- const options: RedirectLoginOptions = {
- authorizationParams: {} // Initialize here
- };
- console.log(location)
- if (location && location.search) {
- let parsed = queryString.parse(location.search);
-
- console.log(parsed.signup)
- if (parsed.signup === "true") {
- // if (options.authorizationParams) options.authorizationParams.screen_hint = "signup"; // 'signup' tells Auth0 to show the signup tab
- options.authorizationParams!.screen_hint = "signup"; // 'signup' tells Auth0 to show the signup tab
- console.log(options)
- }
-
- if (parsed.email && parsed.email !== "") {
- // if (options.authorizationParams) options.authorizationParams.login_hint = parsed.email.toString(); // prefill email
- options.authorizationParams!.login_hint = parsed.email.toString(); // prefill email
- }
- }
-
- setRouteBeforeLogin().finally(() => {
- loginWithRedirect(options);
- });
- }, [location, loginWithRedirect, setRouteBeforeLogin]);
-
- // return ;
- return ;
-}
diff --git a/src/providers/auth.tsx b/src/providers/auth.tsx
index e66829a..c5ad0f7 100644
--- a/src/providers/auth.tsx
+++ b/src/providers/auth.tsx
@@ -1,31 +1,89 @@
-import { useAuth0 } from "@auth0/auth0-react";
-import { PropsWithChildren, useEffect } from "react";
+import { RedirectLoginOptions, useAuth0 } from "@auth0/auth0-react";
+import queryString from "query-string";
+import { PropsWithChildren, useCallback, useEffect } from "react";
+import { useLocation } from "react-router-dom";
interface Props extends PropsWithChildren{
setToken: React.Dispatch>
+ prevPath?: string
}
export default function AuthWrapper(props: Props) {
- const { children, setToken } = props;
- const { isLoading, loginWithRedirect, isAuthenticated, getAccessTokenSilently } = useAuth0();
-
- useEffect(() => {
- if (!isAuthenticated && !isLoading) {
- loginWithRedirect();
- }
- }, [isAuthenticated, loginWithRedirect, isLoading]);
+ const { children, setToken, prevPath } = props;
+ const { isLoading, loginWithRedirect, isAuthenticated, getAccessTokenSilently } = useAuth0();
- useEffect(() => {
- if (isAuthenticated) getAccessTokenSilently().then(t => {
- if (t.length < 1) {
- loginWithRedirect()
- }
- setToken(t)
- }).catch(() => {
- // No token, go back to login
- loginWithRedirect()
- })
- }, [setToken, isAuthenticated])
- return children;
+ useEffect(() => {
+ const url = new URL(window.location.href);
+
+ const isManualLoginPage = url.pathname === "/login";
+
+ if (isManualLoginPage) {
+ const options: RedirectLoginOptions = {
+ authorizationParams: {} // Initialize here
+ };
+
+ let parsed = queryString.parse(url.search);
+ if (parsed.signup === "true") {
+ options.authorizationParams!.screen_hint = "signup";
+ }
+
+ if (parsed.email && parsed.email !== "") {
+ options.authorizationParams!.login_hint = parsed.email.toString(); // prefill email
+ }
+
+ loginWithRedirect(options)
+
+ } else if (!isAuthenticated && !isLoading) {
+ loginWithRedirect();
+ }
+ }, [isAuthenticated, loginWithRedirect, isLoading]);
+
+ useEffect(() => {
+ if (isAuthenticated) getAccessTokenSilently().then(t => {
+ if (t.length < 1) {
+ loginWithRedirect()
+ }
+ console.log("setting token :)")
+ setToken(t)
+ }).catch(() => {
+ // No token, go back to login
+ loginWithRedirect()
+ })
+ }, [setToken, isAuthenticated])
+
+ // const setRouteBeforeLogin = useCallback((): Promise => {
+ // return new Promise(function(resolve) {
+ // localStorage.setItem("routeBeforeLogin", prevPath ? prevPath : "/");
+ // return resolve("success");
+ // });
+ // }, [prevPath]);
+
+ useEffect(() => {
+ const options: RedirectLoginOptions = {
+ authorizationParams: {} // Initialize here
+ };
+ console.log(location)
+ if (location && location.search) {
+ let parsed = queryString.parse(location.search);
+
+ console.log(parsed.signup)
+ if (parsed.signup === "true") {
+ // if (options.authorizationParams) options.authorizationParams.screen_hint = "signup"; // 'signup' tells Auth0 to show the signup tab
+ options.authorizationParams!.screen_hint = "signup"; // 'signup' tells Auth0 to show the signup tab
+ console.log(options)
+ }
+
+ if (parsed.email && parsed.email !== "") {
+ // if (options.authorizationParams) options.authorizationParams.login_hint = parsed.email.toString(); // prefill email
+ options.authorizationParams!.login_hint = parsed.email.toString(); // prefill email
+ }
+ }
+
+ // setRouteBeforeLogin().finally(() => {
+ // loginWithRedirect(options);
+ // });
+ }, [location, loginWithRedirect, /*setRouteBeforeLogin*/]);
+
+ return children;
}
\ No newline at end of file