Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. const bodyParser = require('body-parser');
  2. const awsServerlessExpressMiddleware = require('aws-serverless-express/middleware');
  3. const AWS = require('aws-sdk');
  4.  
  5. const pipe = (...fns) => x => fns.reduce((y, f) => f(y), x);
  6. const tapRoute = f => route => {
  7. route.use(f);
  8. return route;
  9. };
  10.  
  11. const configureCors = route => {
  12. route.use(function(req, res, next) {
  13. res.header('Access-Control-Allow-Origin', '*');
  14. res.header(
  15. 'Access-Control-Allow-Headers',
  16. 'Origin, X-Requested-With, Content-Type, Accept'
  17. );
  18. next();
  19. });
  20. return route;
  21. };
  22.  
  23. const injectUser = route => {
  24. route.use(async function(req, res, next) {
  25. try {
  26. const IDP_REGEX = /.*\/.*,(.*)\/(.*):CognitoSignIn:(.*)/;
  27. const authProvider =
  28. req.apiGateway.event.requestContext.identity
  29. .cognitoAuthenticationProvider;
  30. const [, , , userId] = authProvider.match(IDP_REGEX);
  31.  
  32. const cognito = new AWS.CognitoIdentityServiceProvider();
  33. const listUsersResponse = await cognito
  34. .listUsers({
  35. UserPoolId: process.env.AUTH_LAMBDAUSERB2E6BC69_USERPOOLID,
  36. Filter: `sub = "${userId}"`,
  37. Limit: 1,
  38. })
  39. .promise();
  40. const user = listUsersResponse.Users[0];
  41. req.user = user;
  42. next();
  43. } catch (error) {
  44. console.log(error);
  45. next(error);
  46. }
  47. });
  48. return route;
  49. };
  50.  
  51. const applyMiddleware = (route, ...middleware) =>
  52. pipe(
  53. tapRoute(bodyParser.json()),
  54. tapRoute(awsServerlessExpressMiddleware.eventContext()),
  55. configureCors,
  56. injectUser,
  57. ...middleware
  58. )(route);
  59.  
  60. module.exports = {
  61. applyMiddleware,
  62. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement