File tree Expand file tree Collapse file tree 2 files changed +25
-3
lines changed Expand file tree Collapse file tree 2 files changed +25
-3
lines changed Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ const createEventHandler = require('./event-handler')
44const middleware = require ( './middleware/middleware' )
55const sign = require ( './sign' )
66const verify = require ( './verify' )
7+ const verifyAndReceive = require ( './middleware/verify-and-receive' )
78
89function createWebhooksApi ( options ) {
910 if ( ! options || ! options . secret ) {
@@ -16,14 +17,13 @@ function createWebhooksApi (options) {
1617 secret : options . secret
1718 }
1819
19- const webhooksMiddleware = middleware . bind ( null , state )
20-
2120 return {
2221 sign : sign . bind ( null , options . secret ) ,
2322 verify : verify . bind ( null , options . secret ) ,
2423 on : state . eventHandler . on ,
2524 removeListener : state . eventHandler . removeListener ,
2625 receive : state . eventHandler . receive ,
27- middleware : webhooksMiddleware
26+ middleware : middleware . bind ( null , state ) ,
27+ verifyAndReceive : verifyAndReceive . bind ( null , state )
2828 }
2929}
Original file line number Diff line number Diff line change 1+ module . exports = verifyAndReceive
2+
3+ const verify = require ( '../verify' )
4+
5+ function verifyAndReceive ( state , event ) {
6+ const matchesSignature = verify ( state . secret , event . payload , event . signature )
7+
8+ if ( ! matchesSignature ) {
9+ const error = new Error ( 'signature does not match event payload and secret' )
10+
11+ error . event = event
12+ error . status = 400
13+
14+ return state . eventHandler . receive ( error )
15+ }
16+
17+ return state . eventHandler . receive ( {
18+ id : event . id ,
19+ name : event . name ,
20+ payload : event . payload
21+ } )
22+ }
You can’t perform that action at this time.
0 commit comments