mirror of
https://github.com/roleypoly/roleypoly.git
synced 2025-04-24 11:29:12 +00:00
* feat: add discord interactions worker * feat(interactions): update CI/CD and terraform to add interactions * chore: fix lint issues * chore: fix build & emulation * fix(interactions): deployment + handler * chore: remove worker-dist via gitignore * feat: add /pickable-roles and /pick-role basis * feat: add pick, remove, and update the general /roleypoly command * fix: lint missing Member import
27 lines
666 B
TypeScript
27 lines
666 B
TypeScript
import { publicKey } from '@roleypoly/interactions/utils/config';
|
|
import { InteractionRequest } from '@roleypoly/types';
|
|
import nacl from 'tweetnacl';
|
|
|
|
export const verifyRequest = (
|
|
request: Request,
|
|
interaction: InteractionRequest
|
|
): boolean => {
|
|
const timestamp = request.headers.get('x-signature-timestamp');
|
|
const signature = request.headers.get('x-signature-ed25519');
|
|
|
|
if (!timestamp || !signature) {
|
|
return false;
|
|
}
|
|
|
|
if (
|
|
!nacl.sign.detached.verify(
|
|
Buffer.from(timestamp + JSON.stringify(interaction)),
|
|
Buffer.from(signature, 'hex'),
|
|
Buffer.from(publicKey, 'hex')
|
|
)
|
|
) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
};
|