UNPKG

6.41 kBSource Map (JSON)View Raw
1{"version":3,"file":"APIAuthUtils.js","sourceRoot":"","sources":["APIAuthUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import jwt from \"jsonwebtoken\";\nimport isNil from \"lodash/isNil\";\nimport {APIConfig} from \"./APIConfig\";\n\nexport class APIAuthUser<T = any> {\n userID: string;\n userName: string;\n\n extraData?:T;\n}\n\nexport class APIAuthCredentials extends APIAuthUser {\n isAuthenticated: boolean;\n isExpired: boolean;\n\n expires?: Date;\n refreshToken?: string;\n\n rawJWTPayload?: object;\n}\n\nexport class APIAuthUtils {\n\n static setJWTSessionCookie(res, jwtToken: string, domain: string) {\n let expiration = new Date(Number(new Date()) + 1.577e+11);\n res.cookie(\"session\", jwtToken, {domain: domain, expires: expiration, httpOnly: true});\n }\n\n static deleteJWTSessionCookie(res, domain: string) {\n let expiration = new Date();\n res.cookie(\"session\", \"\", {domain: domain, expires: expiration, httpOnly: true});\n }\n\n private static getAuthCredentialsFromJWT(token: string, ignoreExpiration: boolean = true): APIAuthCredentials {\n let authCreds: APIAuthCredentials = {\n isAuthenticated: false,\n isExpired: true,\n userID: null,\n userName: null\n };\n\n if (!token) {\n return authCreds;\n }\n\n try {\n const decodedAuthToken = jwt.verify(token, APIConfig.JWT_SECRET, {ignoreExpiration});\n authCreds.isAuthenticated = true;\n authCreds.userName = decodedAuthToken.u;\n authCreds.userID = decodedAuthToken.i;\n authCreds.refreshToken = decodedAuthToken.r;\n authCreds.extraData = decodedAuthToken.ext;\n authCreds.rawJWTPayload = decodedAuthToken;\n\n if(decodedAuthToken.exp)\n {\n authCreds.expires = new Date(decodedAuthToken.exp * 1000);\n authCreds.isExpired = authCreds.expires <= (new Date());\n }\n\n } catch (err) {\n }\n\n return authCreds;\n }\n\n static getJWTFromRequest(req): string {\n\n let token;\n\n // try getting the auth info from the cookie first\n if (req.cookies) {\n token = req.cookies.session;\n }\n\n if (isNil(token)) {\n // Try getting from the Authorization header next\n token = req.get(\"Authorization\");\n\n if (!isNil(token)) {\n token = token.replace(/^Bearer\\s/, \"\");\n }\n }\n\n return token;\n }\n\n static getAuthCredentialsFromRequest(req, allowExpired: boolean = false): APIAuthCredentials {\n return APIAuthUtils.getAuthCredentialsFromJWT(APIAuthUtils.getJWTFromRequest(req));\n }\n\n static createJWT(userID: string, username: string, expiresIn: string | number = \"1h\", refreshToken?: string, extraData?: object): string {\n\n let options = undefined;\n\n if (expiresIn) {\n options = {\n expiresIn: expiresIn\n }\n }\n\n let payload:any = {\n i: userID,\n u: username\n };\n\n if(refreshToken)\n {\n payload.r = refreshToken;\n }\n\n if(extraData)\n {\n payload.ext = extraData;\n }\n\n return jwt.sign(payload, APIConfig.JWT_SECRET, options);\n }\n\n static getAPIAuthUserFromAuthCredentials<T = any>(authCredentials:APIAuthCredentials):APIAuthUser<T>\n {\n return {\n userID: authCredentials.userID,\n userName: authCredentials.userName,\n extraData: authCredentials.extraData\n };\n }\n}"]}
\No newline at end of file