1
1
import { NextResponse } from 'next/server'
2
2
import type { NextRequest } from 'next/server'
3
3
import { get } from '@vercel/edge-config'
4
- import { getSession } from './app/utils/auth'
4
+ import { getSession , HsSession } from './app/utils/auth'
5
5
import {
6
6
fetchShips ,
7
7
fetchSignpostFeed ,
8
8
fetchWaka ,
9
9
person ,
10
10
} from './app/utils/data'
11
11
12
- export async function userPageMiddleware ( request : NextRequest ) {
13
- const response = NextResponse . next ( )
14
- const session = await getSession ( )
15
- const banlist = ( await get ( 'banlist' ) ) as string [ ]
16
-
17
- const email = session ?. email
18
- const slackId = session ?. slackId
19
- if ( ! slackId || ! email ) return response
20
-
21
- if ( banlist . includes ( email ) ) {
22
- const redir = NextResponse . redirect ( new URL ( '/' , request . url ) )
23
- request . cookies
24
- . getAll ( )
25
- . forEach ( ( cookie ) => redir . cookies . delete ( cookie . name ) )
26
-
27
- console . log ( 'Banned' , email )
28
- return redir
29
- }
30
-
12
+ async function loadShipsCookie (
13
+ request : NextRequest ,
14
+ slackId : string ,
15
+ response : NextResponse ,
16
+ ) {
31
17
// Ships base
32
18
try {
33
19
const shipyardPage = request . nextUrl . pathname . startsWith ( '/shipyard' )
@@ -44,7 +30,13 @@ export async function userPageMiddleware(request: NextRequest) {
44
30
} catch ( e ) {
45
31
console . log ( 'Middleware errored on ships cookie step' , e )
46
32
}
33
+ }
47
34
35
+ async function loadWakaCookie (
36
+ request : NextRequest ,
37
+ session : HsSession ,
38
+ response : NextResponse ,
39
+ ) {
48
40
try {
49
41
console . log ( 'Checking for waka cookie' )
50
42
if ( ! request . cookies . get ( 'waka' ) ) {
@@ -64,7 +56,12 @@ export async function userPageMiddleware(request: NextRequest) {
64
56
} catch ( e ) {
65
57
console . log ( 'Middleware errored on waka cookie step' , e )
66
58
}
59
+ }
67
60
61
+ async function loadSignpostFeedCookie (
62
+ request : NextRequest ,
63
+ response : NextResponse ,
64
+ ) {
68
65
// Signpost base
69
66
try {
70
67
console . log ( 'Checking for signpost-feed cookie' )
@@ -82,7 +79,9 @@ export async function userPageMiddleware(request: NextRequest) {
82
79
} catch ( e ) {
83
80
console . log ( 'Middleware errored on signpost-feed cookie step' , e )
84
81
}
82
+ }
85
83
84
+ async function loadPersonCookies ( request : NextRequest , response : NextResponse ) {
86
85
// Person base
87
86
try {
88
87
if (
@@ -133,6 +132,33 @@ export async function userPageMiddleware(request: NextRequest) {
133
132
} catch ( e ) {
134
133
console . log ( 'Middleware errored on person cookie step' , e )
135
134
}
135
+ }
136
+
137
+ export async function userPageMiddleware ( request : NextRequest ) {
138
+ const response = NextResponse . next ( )
139
+ const session = await getSession ( )
140
+ const banlist = ( await get ( 'banlist' ) ) as string [ ]
141
+
142
+ const email = session ?. email
143
+ const slackId = session ?. slackId
144
+ if ( ! slackId || ! email ) return response
145
+
146
+ if ( banlist . includes ( email ) ) {
147
+ const redir = NextResponse . redirect ( new URL ( '/' , request . url ) )
148
+ request . cookies
149
+ . getAll ( )
150
+ . forEach ( ( cookie ) => redir . cookies . delete ( cookie . name ) )
151
+
152
+ console . log ( 'Banned' , email )
153
+ return redir
154
+ }
155
+
156
+ await Promise . all ( [
157
+ loadShipsCookie ( request , slackId , response ) ,
158
+ loadWakaCookie ( request , session , response ) ,
159
+ loadSignpostFeedCookie ( request , response ) ,
160
+ loadPersonCookies ( request , response ) ,
161
+ ] )
136
162
137
163
return response
138
164
}
0 commit comments