Skip to content

Commit

Permalink
loggers parameter no more optional in jwt utility fn
Browse files Browse the repository at this point in the history
  • Loading branch information
Viktor-K committed Oct 1, 2024
1 parent 1fbd47e commit a8f25fa
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,17 @@ export function authorizationServiceBuilder(
sessionClaims: SessionClaims;
selfcareId: string;
}> => {
const verified = await verifyJwtToken(identityToken, jwksClients, config, logger);
const verified = await verifyJwtToken(
identityToken,
jwksClients,
config,
logger
);
if (!verified) {
throw tokenVerificationFailed();
}

const decoded = decodeJwtToken(identityToken);
const decoded = decodeJwtToken(identityToken, logger);

const userRoles: string[] = decoded?.organization?.roles
? decoded.organization.roles.map((r: { role: string }) => r.role)
Expand Down
2 changes: 1 addition & 1 deletion packages/commons/src/auth/authenticationMiddleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export const authenticationMiddleware: (
throw unauthorizedError("Invalid token");
}

const authData: AuthData = readAuthDataFromJwtToken(jwtToken);
const authData: AuthData = readAuthDataFromJwtToken(jwtToken, logger);
// eslint-disable-next-line functional/immutable-data
req.ctx.authData = authData;
next();
Expand Down
5 changes: 3 additions & 2 deletions packages/commons/src/auth/authorizationMiddleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { P, match } from "ts-pattern";
import { z } from "zod";
import { Middleware } from "../types/middleware.js";
import { UserRole, readHeaders } from "../index.js";
import { logger } from "../logging/index.js";
import { genericLogger, logger } from "../logging/index.js";
import { readAuthDataFromJwtToken } from "./jwt.js";

type RoleValidation =
Expand All @@ -35,7 +35,8 @@ const hasValidRoles = (
if (!jwtToken) {
throw missingBearer;
}
const authData = readAuthDataFromJwtToken(jwtToken);

const authData = readAuthDataFromJwtToken(jwtToken, genericLogger);
if (!authData.userRoles || authData.userRoles.length === 0) {
return {
isValid: false,
Expand Down
3 changes: 2 additions & 1 deletion packages/commons/src/auth/headers.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Request } from "express";
import { P, match } from "ts-pattern";
import { z } from "zod";
import { genericLogger } from "../logging/index.js";
import { AuthData } from "./authData.js";
import { readAuthDataFromJwtToken } from "./jwt.js";

Expand Down Expand Up @@ -45,7 +46,7 @@ export const readHeaders = (req: Request): ParsedHeaders | undefined => {
}

const jwtToken = authorizationHeader[1];
const authData = readAuthDataFromJwtToken(jwtToken);
const authData = readAuthDataFromJwtToken(jwtToken, genericLogger);

return {
...authData,
Expand Down
15 changes: 9 additions & 6 deletions packages/commons/src/auth/jwt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,34 @@ import { AuthData, AuthToken, getAuthDataFromToken } from "./authData.js";

export const decodeJwtToken = (
jwtToken: string,
logger?: Logger
logger: Logger
): JwtPayload | null => {
try {
return jwt.decode(jwtToken, { json: true });
} catch (err) {
logger?.error(`Error decoding JWT token: ${err}`);
logger.error(`Error decoding JWT token: ${err}`);
throw jwtDecodingError(err);
}
};

export const decodeJwtTokenHeaders = (
jwtToken: string,
logger?: Logger
logger: Logger
): JwtHeader | undefined => {
try {
const decoded = jwt.decode(jwtToken, { complete: true });
return decoded?.header;
} catch (err) {
logger?.error(`Error decoding JWT token: ${err}`);
logger.error(`Error decoding JWT token: ${err}`);
throw jwtDecodingError(err);
}
};

export const readAuthDataFromJwtToken = (jwtToken: string): AuthData => {
const decoded = decodeJwtToken(jwtToken);
export const readAuthDataFromJwtToken = (
jwtToken: string,
logger: Logger
): AuthData => {
const decoded = decodeJwtToken(jwtToken, logger);
const token = AuthToken.safeParse(decoded);
if (token.success === false) {
throw invalidClaim(token.error);
Expand Down

0 comments on commit a8f25fa

Please sign in to comment.