UNPKG

15.4 kBSource Map (JSON)View Raw
1{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../../../../.ng_build/auth/services/token/token.ts"],"names":[],"mappings":"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","sourcesContent":["import { urlBase64Decode } from '../../helpers';\n\nexport abstract class NbAuthToken {\n\n protected payload: any = null;\n\n abstract getValue(): string;\n abstract isValid(): boolean;\n // the strategy name used to acquire this token (needed for refreshing token)\n abstract getOwnerStrategyName(): string;\n abstract getCreatedAt(): Date;\n abstract toString(): string;\n\n getName(): string {\n return (this.constructor as NbAuthTokenClass).NAME;\n }\n\n getPayload(): any {\n return this.payload;\n }\n}\n\nexport class NbAuthTokenNotFoundError extends Error {\n constructor(message: string) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class NbAuthIllegalTokenError extends Error {\n constructor(message: string) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class NbAuthEmptyTokenError extends NbAuthIllegalTokenError {\n constructor(message: string) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class NbAuthIllegalJWTTokenError extends NbAuthIllegalTokenError {\n constructor(message: string) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport interface NbAuthRefreshableToken {\n getRefreshToken(): string;\n setRefreshToken(refreshToken: string);\n}\n\nexport interface NbAuthTokenClass<T = NbAuthToken> {\n NAME: string;\n new (raw: any, strategyName: string, expDate?: Date): T;\n}\n\nexport function nbAuthCreateToken<T extends NbAuthToken>(tokenClass: NbAuthTokenClass<T>,\n token: any,\n ownerStrategyName: string,\n createdAt?: Date) {\n return new tokenClass(token, ownerStrategyName, createdAt);\n}\n\nexport function decodeJwtPayload(payload: string): any {\n\n if (payload.length === 0) {\n throw new NbAuthEmptyTokenError('Cannot extract from an empty payload.');\n }\n\n const parts = payload.split('.');\n\n if (parts.length !== 3) {\n throw new NbAuthIllegalJWTTokenError(\n `The payload ${payload} is not valid JWT payload and must consist of three parts.`);\n }\n\n let decoded;\n try {\n decoded = urlBase64Decode(parts[1]);\n } catch (e) {\n throw new NbAuthIllegalJWTTokenError(\n `The payload ${payload} is not valid JWT payload and cannot be parsed.`);\n }\n\n if (!decoded) {\n throw new NbAuthIllegalJWTTokenError(\n `The payload ${payload} is not valid JWT payload and cannot be decoded.`);\n }\n return JSON.parse(decoded);\n}\n\n/**\n * Wrapper for simple (text) token\n */\nexport class NbAuthSimpleToken extends NbAuthToken {\n\n static NAME = 'nb:auth:simple:token';\n\n constructor(protected readonly token: any,\n protected readonly ownerStrategyName: string,\n protected createdAt?: Date) {\n super();\n try {\n this.parsePayload();\n } catch (err) {\n if (!(err instanceof NbAuthTokenNotFoundError)) {\n // token is present but has got a problem, including illegal\n throw err;\n }\n }\n this.createdAt = this.prepareCreatedAt(createdAt);\n }\n\n protected parsePayload(): any {\n this.payload = null;\n }\n\n protected prepareCreatedAt(date: Date) {\n return date ? date : new Date();\n }\n\n /**\n * Returns the token's creation date\n * @returns {Date}\n */\n getCreatedAt(): Date {\n return this.createdAt;\n }\n\n /**\n * Returns the token value\n * @returns string\n */\n getValue(): string {\n return this.token;\n }\n\n getOwnerStrategyName(): string {\n return this.ownerStrategyName;\n }\n\n /**\n * Is non empty and valid\n * @returns {boolean}\n */\n isValid(): boolean {\n return !!this.getValue();\n }\n\n /**\n * Validate value and convert to string, if value is not valid return empty string\n * @returns {string}\n */\n toString(): string {\n return !!this.token ? this.token : '';\n }\n}\n\n/**\n * Wrapper for JWT token with additional methods.\n */\nexport class NbAuthJWTToken extends NbAuthSimpleToken {\n\n static NAME = 'nb:auth:jwt:token';\n\n /**\n * for JWT token, the iat (issued at) field of the token payload contains the creation Date\n */\n protected prepareCreatedAt(date: Date) {\n const decoded = this.getPayload();\n return decoded && decoded.iat ? new Date(Number(decoded.iat) * 1000) : super.prepareCreatedAt(date);\n }\n\n /**\n * Returns payload object\n * @returns any\n */\n protected parsePayload(): void {\n if (!this.token) {\n throw new NbAuthTokenNotFoundError('Token not found. ')\n }\n this.payload = decodeJwtPayload(this.token);\n }\n\n /**\n * Returns expiration date\n * @returns Date\n */\n getTokenExpDate(): Date {\n const decoded = this.getPayload();\n if (decoded && !decoded.hasOwnProperty('exp')) {\n return null;\n }\n const date = new Date(0);\n date.setUTCSeconds(decoded.exp); // 'cause jwt token are set in seconds\n return date;\n }\n\n /**\n * Is data expired\n * @returns {boolean}\n */\n isValid(): boolean {\n return super.isValid() && (!this.getTokenExpDate() || new Date() < this.getTokenExpDate());\n }\n}\n\nconst prepareOAuth2Token = (data) => {\n if (typeof data === 'string') {\n try {\n return JSON.parse(data);\n } catch (e) {}\n }\n return data;\n};\n\n/**\n * Wrapper for OAuth2 token whose access_token is a JWT Token\n */\nexport class NbAuthOAuth2Token extends NbAuthSimpleToken {\n\n static NAME = 'nb:auth:oauth2:token';\n\n constructor( data: { [key: string]: string|number }|string = {},\n ownerStrategyName: string,\n createdAt?: Date) {\n\n // we may get it as string when retrieving from a storage\n super(prepareOAuth2Token(data), ownerStrategyName, createdAt);\n }\n\n /**\n * Returns the token value\n * @returns string\n */\n getValue(): string {\n return this.token.access_token;\n }\n\n /**\n * Returns the refresh token\n * @returns string\n */\n getRefreshToken(): string {\n return this.token.refresh_token;\n }\n\n /**\n * put refreshToken in the token payload\n * @param refreshToken\n */\n setRefreshToken(refreshToken: string) {\n this.token.refresh_token = refreshToken;\n }\n\n /**\n * Parses token payload\n * @returns any\n */\n protected parsePayload(): void {\n if (!this.token) {\n throw new NbAuthTokenNotFoundError('Token not found.')\n } else {\n if (!Object.keys(this.token).length) {\n throw new NbAuthEmptyTokenError('Cannot extract payload from an empty token.');\n }\n }\n this.payload = this.token;\n }\n\n /**\n * Returns the token type\n * @returns string\n */\n getType(): string {\n return this.token.token_type;\n }\n\n /**\n * Is data expired\n * @returns {boolean}\n */\n isValid(): boolean {\n return super.isValid() && (!this.getTokenExpDate() || new Date() < this.getTokenExpDate());\n }\n\n /**\n * Returns expiration date\n * @returns Date\n */\n getTokenExpDate(): Date {\n if (!this.token.hasOwnProperty('expires_in')) {\n return null;\n }\n return new Date(this.createdAt.getTime() + Number(this.token.expires_in) * 1000);\n}\n\n /**\n * Convert to string\n * @returns {string}\n */\n toString(): string {\n return JSON.stringify(this.token);\n }\n}\n\n/**\n * Wrapper for OAuth2 token embedding JWT tokens\n */\nexport class NbAuthOAuth2JWTToken extends NbAuthOAuth2Token {\n\n static NAME = 'nb:auth:oauth2:jwt:token';\n\n protected accessTokenPayload: any;\n\n protected parsePayload(): void {\n super.parsePayload();\n this.parseAccessTokenPayload();\n }\n\n protected parseAccessTokenPayload(): any {\n const accessToken = this.getValue();\n if (!accessToken) {\n throw new NbAuthTokenNotFoundError('access_token key not found.')\n }\n this.accessTokenPayload = decodeJwtPayload(accessToken);\n }\n\n /**\n * Returns access token payload\n * @returns any\n */\n getAccessTokenPayload(): any {\n return this.accessTokenPayload;\n }\n\n /**\n * for Oauth2 JWT token, the iat (issued at) field of the access_token payload\n */\n protected prepareCreatedAt(date: Date) {\n const payload = this.accessTokenPayload;\n return payload && payload.iat ? new Date(Number(payload.iat) * 1000) : super.prepareCreatedAt(date);\n }\n\n /**\n * Is token valid\n * @returns {boolean}\n */\n isValid(): boolean {\n return this.accessTokenPayload && super.isValid();\n }\n\n /**\n * Returns expiration date :\n * - exp if set,\n * - super.getExpDate() otherwise\n * @returns Date\n */\n getTokenExpDate(): Date {\n if (this.accessTokenPayload && this.accessTokenPayload.hasOwnProperty('exp')) {\n const date = new Date(0);\n date.setUTCSeconds(this.accessTokenPayload.exp);\n return date;\n } else {\n return super.getTokenExpDate();\n }\n }\n}\n"]}
\No newline at end of file