mirror of
https://github.com/kremalicious/umami.git
synced 2025-02-14 21:10:34 +01:00
Updated login check method.
This commit is contained in:
parent
170b30b391
commit
796c65fa29
@ -6,6 +6,7 @@ import PageHeader from 'components/layout/PageHeader';
|
|||||||
import WebsiteChartList from 'components/pages/WebsiteChartList';
|
import WebsiteChartList from 'components/pages/WebsiteChartList';
|
||||||
import DashboardSettingsButton from 'components/settings/DashboardSettingsButton';
|
import DashboardSettingsButton from 'components/settings/DashboardSettingsButton';
|
||||||
import useApi from 'hooks/useApi';
|
import useApi from 'hooks/useApi';
|
||||||
|
import useRequireLogin from 'hooks/useRequireLogin';
|
||||||
import useDashboard from 'store/dashboard';
|
import useDashboard from 'store/dashboard';
|
||||||
import DashboardEdit from './DashboardEdit';
|
import DashboardEdit from './DashboardEdit';
|
||||||
import styles from './WebsiteList.module.css';
|
import styles from './WebsiteList.module.css';
|
||||||
@ -16,6 +17,7 @@ const messages = defineMessages({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export default function Dashboard({ userId }) {
|
export default function Dashboard({ userId }) {
|
||||||
|
const { user } = useRequireLogin();
|
||||||
const dashboard = useDashboard();
|
const dashboard = useDashboard();
|
||||||
const { showCharts, limit, editing } = dashboard;
|
const { showCharts, limit, editing } = dashboard;
|
||||||
const [max, setMax] = useState(limit);
|
const [max, setMax] = useState(limit);
|
||||||
@ -27,7 +29,7 @@ export default function Dashboard({ userId }) {
|
|||||||
setMax(max + limit);
|
setMax(max + limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isLoading) {
|
if (!user || isLoading) {
|
||||||
return <Loading />;
|
return <Loading />;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import Layout from 'components/layout/Layout';
|
import Layout from 'components/layout/Layout';
|
||||||
import Menu from 'components/nav/Nav';
|
import Menu from 'components/nav/Nav';
|
||||||
import useUser from 'hooks/useUser';
|
import useRequireLogin from 'hooks/useRequireLogin';
|
||||||
import styles from './Settings.module.css';
|
import styles from './Settings.module.css';
|
||||||
|
|
||||||
export default function Settings({ children }) {
|
export default function Settings({ children }) {
|
||||||
const user = useUser();
|
const { user } = useRequireLogin();
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return null;
|
return null;
|
||||||
|
28
hooks/useRequireLogin.js
Normal file
28
hooks/useRequireLogin.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import { useEffect } from 'react';
|
||||||
|
import { useRouter } from 'next/router';
|
||||||
|
import useApi from 'hooks/useApi';
|
||||||
|
import useUser from 'hooks/useUser';
|
||||||
|
|
||||||
|
export default function useRequireLogin() {
|
||||||
|
const router = useRouter();
|
||||||
|
const { get } = useApi();
|
||||||
|
const { user, setUser } = useUser();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
async function loadUser() {
|
||||||
|
try {
|
||||||
|
const { user } = await get('/auth/verify');
|
||||||
|
|
||||||
|
setUser(user);
|
||||||
|
} catch {
|
||||||
|
await router.push('/login');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!user) {
|
||||||
|
loadUser();
|
||||||
|
}
|
||||||
|
}, [user]);
|
||||||
|
|
||||||
|
return { user };
|
||||||
|
}
|
@ -1,33 +1,9 @@
|
|||||||
import { useEffect } from 'react';
|
|
||||||
import { useRouter } from 'next/router';
|
|
||||||
import useStore, { setUser } from 'store/app';
|
import useStore, { setUser } from 'store/app';
|
||||||
import useApi from 'hooks/useApi';
|
|
||||||
|
|
||||||
const selector = state => state.user;
|
const selector = state => state.user;
|
||||||
let loading = false;
|
|
||||||
|
|
||||||
export default function useUser() {
|
export default function useUser() {
|
||||||
const user = useStore(selector);
|
const user = useStore(selector);
|
||||||
const { get } = useApi();
|
|
||||||
const router = useRouter();
|
|
||||||
|
|
||||||
useEffect(() => {
|
return { user, setUser };
|
||||||
async function loadUser() {
|
|
||||||
const { user } = await get('/auth/verify');
|
|
||||||
loading = false;
|
|
||||||
|
|
||||||
if (!user) {
|
|
||||||
await router.push('/login');
|
|
||||||
} else {
|
|
||||||
setUser(user);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!user && !loading) {
|
|
||||||
loading = true;
|
|
||||||
loadUser();
|
|
||||||
}
|
|
||||||
}, [user, get, router]);
|
|
||||||
|
|
||||||
return user;
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import Layout from 'components/layout/Layout';
|
import Layout from 'components/layout/Layout';
|
||||||
import TestConsole from 'components/pages/TestConsole';
|
import TestConsole from 'components/pages/TestConsole';
|
||||||
import useUser from 'hooks/useUser';
|
import useRequireLogin from 'hooks/useRequireLogin';
|
||||||
|
|
||||||
export default function ConsolePage({ pageDisabled }) {
|
export default function ConsolePage({ pageDisabled }) {
|
||||||
const user = useUser();
|
const { user } = useRequireLogin();
|
||||||
|
|
||||||
if (pageDisabled || !user || !user.isAdmin) {
|
if (pageDisabled || !user || !user.isAdmin) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import Layout from 'components/layout/Layout';
|
import Layout from 'components/layout/Layout';
|
||||||
import Dashboard from 'components/pages/Dashboard';
|
import Dashboard from 'components/pages/Dashboard';
|
||||||
import useUser from 'hooks/useUser';
|
|
||||||
import useConfig from 'hooks/useConfig';
|
import useConfig from 'hooks/useConfig';
|
||||||
|
import useRequireLogin from 'hooks/useRequireLogin';
|
||||||
|
|
||||||
export default function DashboardPage() {
|
export default function DashboardPage() {
|
||||||
const {
|
const {
|
||||||
@ -10,7 +10,7 @@ export default function DashboardPage() {
|
|||||||
isReady,
|
isReady,
|
||||||
asPath,
|
asPath,
|
||||||
} = useRouter();
|
} = useRouter();
|
||||||
const user = useUser();
|
const { user } = useRequireLogin();
|
||||||
const { adminDisabled } = useConfig();
|
const { adminDisabled } = useConfig();
|
||||||
|
|
||||||
if (adminDisabled || !user || !isReady) {
|
if (adminDisabled || !user || !isReady) {
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import Layout from 'components/layout/Layout';
|
import Layout from 'components/layout/Layout';
|
||||||
import RealtimeDashboard from 'components/pages/RealtimeDashboard';
|
import RealtimeDashboard from 'components/pages/RealtimeDashboard';
|
||||||
import useUser from 'hooks/useUser';
|
import useRequireLogin from 'hooks/useRequireLogin';
|
||||||
|
|
||||||
export default function RealtimePage() {
|
export default function RealtimePage() {
|
||||||
const user = useUser();
|
const { user } = useRequireLogin();
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import Layout from 'components/layout/Layout';
|
import Layout from 'components/layout/Layout';
|
||||||
import WebsiteDetails from 'components/pages/WebsiteDetails';
|
import WebsiteDetails from 'components/pages/WebsiteDetails';
|
||||||
import useUser from 'hooks/useUser';
|
import useRequireLogin from 'hooks/useRequireLogin';
|
||||||
|
|
||||||
export default function DetailsPage() {
|
export default function DetailsPage() {
|
||||||
const user = useUser();
|
const { user } = useRequireLogin();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { id } = router.query;
|
const { id } = router.query;
|
||||||
|
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
import Settings from 'components/pages/Settings';
|
import Settings from 'components/pages/Settings';
|
||||||
import useConfig from 'hooks/useConfig';
|
import useConfig from 'hooks/useConfig';
|
||||||
import useUser from 'hooks/useUser';
|
import useRequireLogin from 'hooks/useRequireLogin';
|
||||||
|
|
||||||
import WebsitesList from 'components/pages/WebsitesList';
|
import WebsitesList from 'components/pages/WebsitesList';
|
||||||
|
|
||||||
export default function WebsitesPage() {
|
export default function WebsitesPage() {
|
||||||
const user = useUser();
|
const { user } = useRequireLogin();
|
||||||
const { adminDisabled } = useConfig();
|
const { adminDisabled } = useConfig();
|
||||||
|
|
||||||
if (adminDisabled || !user) {
|
if (adminDisabled || !user) {
|
||||||
|
@ -26,7 +26,7 @@ export async function getTeamWebsites(teamId: string): Promise<Website[]> {
|
|||||||
name: 'asc',
|
name: 'asc',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
} as any);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function createTeam(data: Prisma.TeamCreateInput): Promise<Team> {
|
export async function createTeam(data: Prisma.TeamCreateInput): Promise<Team> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user