Skip to content

Instantly share code, notes, and snippets.

@hoangsetup
Created August 1, 2021 05:54
Show Gist options
  • Save hoangsetup/20db3d35b54b5d20b94181347d1ba197 to your computer and use it in GitHub Desktop.
Save hoangsetup/20db3d35b54b5d20b94181347d1ba197 to your computer and use it in GitHub Desktop.
import { Handler, Request } from 'express';
import { CognitoIdentityServiceProvider } from 'aws-sdk';
const identityServiceProvider = new CognitoIdentityServiceProvider({
region: process.env.REGION || 'ap-northeast-1',
});
export interface IUser {
id: string;
email: string;
}
export interface IAuthenticatedRequest extends Request {
user?: IUser;
}
const authMiddleware: Handler = async (req: IAuthenticatedRequest, res, next) => {
try {
const token = req.headers['authorization']!;
const rawUser = await identityServiceProvider.getUser({ AccessToken: token }).promise();
req.user = {
id: rawUser.UserAttributes.find((attr) => attr.Name === 'sub')?.Value!,
email: rawUser.UserAttributes.find((attr) => attr.Name === 'email')?.Value!,
};
next();
} catch (err) {
next(err);
}
};
export default authMiddleware;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment