mirror of
https://github.com/umami-software/umami.git
synced 2025-12-08 05:12:36 +01:00
Auth and session middleware.
This commit is contained in:
parent
590a70c2ff
commit
d81ee3932d
14 changed files with 142 additions and 73 deletions
|
|
@ -1,13 +1,12 @@
|
|||
import { savePageView, saveEvent } from 'lib/db';
|
||||
import { useCors } from 'lib/middleware';
|
||||
import checkSession from 'lib/session';
|
||||
import { useCors, useSession } from 'lib/middleware';
|
||||
import { createToken } from 'lib/crypto';
|
||||
|
||||
export default async (req, res) => {
|
||||
await useCors(req, res);
|
||||
await useSession(req, res);
|
||||
|
||||
const session = await checkSession(req);
|
||||
|
||||
const { session } = req;
|
||||
const token = await createToken(session);
|
||||
const { website_id, session_id } = session;
|
||||
const { type, payload } = req.body;
|
||||
|
|
|
|||
12
pages/api/website.js
Normal file
12
pages/api/website.js
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import { getWebsites } from 'lib/db';
|
||||
import { useAuth } from 'lib/middleware';
|
||||
|
||||
export default async (req, res) => {
|
||||
await useAuth(req, res);
|
||||
|
||||
const { user_id } = req.auth;
|
||||
|
||||
const websites = await getWebsites(user_id);
|
||||
|
||||
res.status(200).json({ websites });
|
||||
};
|
||||
|
|
@ -1,10 +1,15 @@
|
|||
import { getPageviews } from 'lib/db';
|
||||
import { getPageviewData } from 'lib/db';
|
||||
import { useAuth } from 'lib/middleware';
|
||||
|
||||
export default async (req, res) => {
|
||||
console.log(req.query);
|
||||
const { id, start_at, end_at } = req.query;
|
||||
await useAuth(req, res);
|
||||
|
||||
const pageviews = await getPageviews(+id, new Date(+start_at), new Date(+end_at));
|
||||
const { id, start_at, end_at, tz } = req.query;
|
||||
|
||||
res.status(200).json({ pageviews });
|
||||
const [pageviews, uniques] = await Promise.all([
|
||||
getPageviewData(+id, new Date(+start_at), new Date(+end_at), tz, 'day', '*'),
|
||||
getPageviewData(+id, new Date(+start_at), new Date(+end_at), tz, 'day', 'distinct session_id'),
|
||||
]);
|
||||
|
||||
res.status(200).json({ pageviews, uniques });
|
||||
};
|
||||
|
|
|
|||
13
pages/api/website/[id]/summary.js
Normal file
13
pages/api/website/[id]/summary.js
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import { getPageviews } from 'lib/db';
|
||||
import { useAuth } from 'lib/middleware';
|
||||
|
||||
export default async (req, res) => {
|
||||
await useAuth(req, res);
|
||||
|
||||
console.log(req.query);
|
||||
const { id, start_at, end_at } = req.query;
|
||||
|
||||
const pageviews = await getPageviews(+id, new Date(+start_at), new Date(+end_at));
|
||||
|
||||
res.status(200).json({ pageviews });
|
||||
};
|
||||
|
|
@ -1,9 +1,10 @@
|
|||
import React from 'react';
|
||||
import Link from 'next/link';
|
||||
import cookies from 'next-cookies';
|
||||
import { parse } from 'cookie';
|
||||
import Layout from 'components/Layout';
|
||||
import Chart from 'components/Chart';
|
||||
import { verifySecureToken } from 'lib/crypto';
|
||||
import { subDays, endOfDay } from 'date-fns';
|
||||
|
||||
export default function HomePage({ username }) {
|
||||
return (
|
||||
|
|
@ -14,8 +15,8 @@ export default function HomePage({ username }) {
|
|||
<div>
|
||||
<Chart
|
||||
websiteId={3}
|
||||
startDate={Date.now() - 1000 * 60 * 60 * 24 * 7}
|
||||
endDate={Date.now()}
|
||||
startDate={subDays(endOfDay(new Date()), 6)}
|
||||
endDate={endOfDay(new Date())}
|
||||
/>
|
||||
</div>
|
||||
<Link href="/logout">
|
||||
|
|
@ -25,8 +26,8 @@ export default function HomePage({ username }) {
|
|||
);
|
||||
}
|
||||
|
||||
export async function getServerSideProps(context) {
|
||||
const token = cookies(context)['umami.auth'];
|
||||
export async function getServerSideProps({ req, res }) {
|
||||
const token = parse(req.headers.cookie)['umami.auth'];
|
||||
|
||||
try {
|
||||
const payload = await verifySecureToken(token);
|
||||
|
|
@ -37,8 +38,6 @@ export async function getServerSideProps(context) {
|
|||
},
|
||||
};
|
||||
} catch {
|
||||
const { res } = context;
|
||||
|
||||
res.statusCode = 303;
|
||||
res.setHeader('Location', '/login');
|
||||
res.end();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue