1- const _web3 = require ( '../utils/ web3' )
1+ const Web3 = require ( 'web3' )
22const dynamoDB = require ( '../utils/dynamo-db' )
3- const getEnvVars = require ( '../get-env-vars' )
3+ const getEnvVars = require ( '../utils/ get-env-vars' )
44const whitelist = require ( '../utils/whitelist' )
55
6- module . exports . post = async ( event , _context , callback ) => {
6+ module . exports . get = async ( event , _context , callback ) => {
77 // Initialize web3
8- const web3 = await _web3 ( )
8+ const web3 = new Web3 ( )
9+
10+ account = event . queryStringParameters . account
11+ console . log ( account )
12+ signature = event . queryStringParameters . signature
13+ dapp = event . queryStringParameters . dapp
914
1015 // Validate signature
11- const payload = JSON . parse ( event . body ) . payload
1216 try {
13- const account = await web3 . eth . accounts . recover (
14- JSON . stringify ( payload . email ) ,
15- payload . signature
17+ const recoveredAccount = await web3 . eth . accounts . recover (
18+ account ,
19+ signature
1620 )
17- const { ENTROPY } = await getEnvVars ( [ 'ENTROPY ' ] )
18- const lambdaAccount = web3 . eth . accounts . create ( ENTROPY )
21+ const { PRIVATE_KEY } = await getEnvVars ( [ 'PRIVATE_KEY ' ] )
22+ const lambdaAccount = web3 . eth . accounts . privateKeyToAccount ( PRIVATE_KEY . replace ( / ^ \s + | \s + $ / g , '' ) )
1923 if (
20- account !== lambdaAccount . address
24+ recoveredAccount !== lambdaAccount . address
2125 )
2226 throw new Error ( 'Signature does not match for this email address. Email contact.kleros.io.' )
2327 } catch ( err ) {
@@ -33,18 +37,18 @@ module.exports.post = async (event, _context, callback) => {
3337
3438 // Update settings for DApp
3539 const updateKeys = whitelist . filter ( k => {
36- if ( payload . dapp )
37- return k . includes ( payload . dapp )
40+ if ( dapp )
41+ return k . includes ( dapp )
3842 return false
3943 } )
4044 await dynamoDB . updateItem ( {
41- Key : { address : { S : payload . address } } ,
45+ Key : { address : { S : account } } ,
4246 TableName : 'user-settings' ,
4347 UpdateExpression : `SET ${ updateKeys
4448 . map ( k => `${ k } = :_${ k } ` )
4549 . join ( ', ' ) } `,
4650 ExpressionAttributeValues : updateKeys . reduce ( ( acc , k ) => {
47- acc [ `:_${ k } ` ] = false
51+ acc [ `:_${ k } ` ] = { "BOOL" : false }
4852 return acc
4953 } , { } )
5054 } )
@@ -53,7 +57,7 @@ module.exports.post = async (event, _context, callback) => {
5357 statusCode : 200 ,
5458 headers : { 'Access-Control-Allow-Origin' : '*' } ,
5559 body : JSON . stringify ( {
56- payload : `Unsubscribed from Kleros ${ payload . dapp } notifications.`
60+ payload : `Unsubscribed from Kleros ${ dapp } notifications.`
5761 } )
5862 } )
5963}
0 commit comments