/
authorizer.ts
45 lines (36 loc) · 1.13 KB
/
authorizer.ts
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
import {
APIGatewayAuthorizerResultContext,
APIGatewayProxyEventV2 as Event,
} from 'aws-lambda';
import Logger from '@dazn/lambda-powertools-logger';
const authorizer = async (event: Event): Promise<APIGatewayAuthorizerResultSimpleV2> => {
Logger.debug('In authorizer handler', { event });
const { headers: { authorization: authHeader } } = event;
Logger.debug('got authHeader', { headers: event.headers, authHeader });
let isAuthorized = false;
if (isValid(authHeader as string)) {
isAuthorized = true;
}
return {
isAuthorized,
context: {
exampleKey: 'exampleValue',
},
};
};
const isValid = (authHeader: string): boolean => {
const token = parseBearerToken(authHeader);
// Super-simple!
return isNumeric(token);
};
const parseBearerToken = (value: string): string => {
const apiKey = value.slice(7).trim();
return apiKey;
};
const isNumeric = (token: string): boolean => (/^-?\d+$/.test(token));
export default authorizer;
// Missing from @types/aws-sdk, so defined here
interface APIGatewayAuthorizerResultSimpleV2 {
isAuthorized: boolean,
context: APIGatewayAuthorizerResultContext,
}