-
Notifications
You must be signed in to change notification settings - Fork 2
/
toggle-withdraw-rai.ts
46 lines (38 loc) · 1.19 KB
/
toggle-withdraw-rai.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
46
import { events } from "shared-types/events";
import {
isAuthorized,
getAuthDetails,
lookupUserAttributes,
} from "../../../libs/api/auth/user";
import { type APIGatewayEvent } from "aws-lambda";
import { itemExists } from "libs/api/package";
export const toggleWithdrawRai = async (event: APIGatewayEvent) => {
if (!event.body) return;
const parsedResult = events["toggle-withdraw-rai"].baseSchema.safeParse(
JSON.parse(event.body),
);
if (!parsedResult.success) {
throw parsedResult.error;
}
// This is the backend check for auth
if (!(await isAuthorized(event, parsedResult.data.id.slice(0, 2)))) {
throw "Unauthorized";
}
if (!(await itemExists({ id: parsedResult.data.id }))) {
throw "Item Does Not Exist";
}
const authDetails = getAuthDetails(event);
const userAttr = await lookupUserAttributes(
authDetails.userId,
authDetails.poolId,
);
const submitterEmail = userAttr.email;
const submitterName = `${userAttr.given_name} ${userAttr.family_name}`;
const transformedData = events["toggle-withdraw-rai"].schema.parse({
...parsedResult.data,
submitterName,
submitterEmail,
timestamp: Date.now(),
});
return transformedData;
};