deno.land / x / deno@v1.28.2 / cli / bench / testdata / npm / hono / dist / middleware / jwt / index.js

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.jwt = void 0;const jwt_1 = require("../../utils/jwt");const jwt = (options) => { if (!options) { throw new Error('JWT auth middleware requires options for "secret'); } if (!crypto.subtle || !crypto.subtle.importKey) { throw new Error('`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.'); } return async (ctx, next) => { const credentials = ctx.req.headers.get('Authorization'); let token; if (credentials) { const parts = credentials.split(/\s+/); if (parts.length !== 2) { ctx.res = new Response('Unauthorized', { status: 401, headers: { 'WWW-Authenticate': `Bearer realm="${ctx.req.url}",error="invalid_request",error_description="invalid credentials structure"`, }, }); return; } else { token = parts[1]; } } else if (options.cookie) { token = ctx.req.cookie(options.cookie); } if (!token) { ctx.res = new Response('Unauthorized', { status: 401, headers: { 'WWW-Authenticate': `Bearer realm="${ctx.req.url}",error="invalid_request",error_description="no authorization included in request"`, }, }); return; } let authorized = false; let msg = ''; try { authorized = await jwt_1.Jwt.verify(token, options.secret, options.alg); } catch (e) { msg = `${e}`; } if (!authorized) { ctx.res = new Response('Unauthorized', { status: 401, statusText: msg, headers: { 'WWW-Authenticate': `Bearer realm="${ctx.req.url}",error="invalid_token",error_description="token verification failure"`, }, }); return; } await next(); };};exports.jwt = jwt;
deno

Version Info

Tagged at
2 years ago