@sqrzro/server 2.0.0-bz.2 → 2.0.0-bz.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SessionService.js +4 -4
- package/dist/middleware.d.ts +4 -0
- package/dist/middleware.js +36 -0
- package/middleware.d.ts +1 -0
- package/middleware.js +1 -0
- package/package.json +7 -8
package/dist/SessionService.js
CHANGED
|
@@ -12,7 +12,7 @@ async function createSessionForId(id) {
|
|
|
12
12
|
.setJti((0, uuid_1.v4)())
|
|
13
13
|
.setProtectedHeader({ alg: 'HS256' })
|
|
14
14
|
.setSubject(id.toString())
|
|
15
|
-
.sign(new TextEncoder().encode(
|
|
15
|
+
.sign(new TextEncoder().encode(process.env.APP_KEY));
|
|
16
16
|
(0, headers_1.cookies)().set('token', token, {
|
|
17
17
|
httpOnly: true,
|
|
18
18
|
maxAge: SESSION_COOKIE_EXPIRY,
|
|
@@ -20,11 +20,11 @@ async function createSessionForId(id) {
|
|
|
20
20
|
}
|
|
21
21
|
exports.createSessionForId = createSessionForId;
|
|
22
22
|
async function getIdFromToken(token) {
|
|
23
|
-
if (!token) {
|
|
24
|
-
throw new Error('
|
|
23
|
+
if (!token || !process.env.APP_KEY) {
|
|
24
|
+
throw new Error('No token and/or app key provided');
|
|
25
25
|
}
|
|
26
26
|
try {
|
|
27
|
-
const verified = await (0, jose_1.jwtVerify)(token, new TextEncoder().encode(
|
|
27
|
+
const verified = await (0, jose_1.jwtVerify)(token, new TextEncoder().encode(process.env.APP_KEY));
|
|
28
28
|
return verified.payload.sub ? parseInt(verified.payload.sub, 10) : 0;
|
|
29
29
|
}
|
|
30
30
|
catch (err) {
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import type { NextRequest } from 'next/server';
|
|
3
|
+
export declare function getIdFromToken(token: string | null): Promise<number>;
|
|
4
|
+
export declare function handleMiddleware(request: NextRequest, url: string): Promise<NextResponse>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleMiddleware = exports.getIdFromToken = void 0;
|
|
4
|
+
const jose_1 = require("jose");
|
|
5
|
+
const server_1 = require("next/server");
|
|
6
|
+
async function getIdFromToken(token) {
|
|
7
|
+
if (!token || !process.env.APP_KEY) {
|
|
8
|
+
return 0;
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
const verified = await (0, jose_1.jwtVerify)(token, new TextEncoder().encode(process.env.APP_KEY));
|
|
12
|
+
return verified.payload.sub ? parseInt(verified.payload.sub, 10) : 0;
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
return 0;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.getIdFromToken = getIdFromToken;
|
|
19
|
+
function getRelativeUrl(url) {
|
|
20
|
+
return url.replace(new URL(url).origin, '');
|
|
21
|
+
}
|
|
22
|
+
function redirectToLogin(request, url) {
|
|
23
|
+
if (new URL(request.url).pathname === '/login') {
|
|
24
|
+
return server_1.NextResponse.next();
|
|
25
|
+
}
|
|
26
|
+
return server_1.NextResponse.redirect(`${url}login?r=${encodeURIComponent(getRelativeUrl(request.url))}`);
|
|
27
|
+
}
|
|
28
|
+
async function handleMiddleware(request, url) {
|
|
29
|
+
const token = request.cookies.get('token')?.value;
|
|
30
|
+
const userId = await getIdFromToken(token || null);
|
|
31
|
+
if (!userId) {
|
|
32
|
+
return redirectToLogin(request, url);
|
|
33
|
+
}
|
|
34
|
+
return server_1.NextResponse.next();
|
|
35
|
+
}
|
|
36
|
+
exports.handleMiddleware = handleMiddleware;
|
package/middleware.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/middleware';
|
package/middleware.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/middleware');
|
package/package.json
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqrzro/server",
|
|
3
|
-
"version": "2.0.0-bz.
|
|
3
|
+
"version": "2.0.0-bz.3",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
|
-
"exports": {
|
|
7
|
-
".": "./dist/index.js"
|
|
8
|
-
},
|
|
9
6
|
"license": "ISC",
|
|
10
7
|
"files": [
|
|
11
|
-
"dist"
|
|
8
|
+
"dist",
|
|
9
|
+
"middleware.js",
|
|
10
|
+
"middleware.d.ts"
|
|
12
11
|
],
|
|
13
12
|
"dependencies": {
|
|
14
13
|
"@sqrzro/utility": "bz",
|
|
15
14
|
"bcryptjs": "^2.4.3",
|
|
16
15
|
"joi": "^17.11.0",
|
|
17
|
-
"jose": "^5.0
|
|
16
|
+
"jose": "^5.2.0",
|
|
18
17
|
"next": "^14.0.0",
|
|
19
18
|
"react": "^18.2.0",
|
|
20
19
|
"react-dom": "^18.2.0",
|
|
@@ -30,8 +29,8 @@
|
|
|
30
29
|
"eslint": "^8.55.0",
|
|
31
30
|
"prettier": "^2.8.4",
|
|
32
31
|
"rimraf": "^4.1.2",
|
|
33
|
-
"tslib": "^2.
|
|
34
|
-
"typescript": "^5.
|
|
32
|
+
"tslib": "^2.6.2",
|
|
33
|
+
"typescript": "^5.3.3"
|
|
35
34
|
},
|
|
36
35
|
"scripts": {
|
|
37
36
|
"build": "pnpm clean && tsc --project tsconfig.build.json",
|