Skip to content

Commit

Permalink
feat: add request id to auth logs (#6491)
Browse files Browse the repository at this point in the history
  • Loading branch information
n1ru4l authored Feb 10, 2025
1 parent f7d65fe commit c549af7
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 29 deletions.
9 changes: 6 additions & 3 deletions packages/services/api/src/modules/auth/lib/authz.ts
Original file line number Diff line number Diff line change
Expand Up @@ -506,11 +506,11 @@ export abstract class AuthNStrategy<TSession extends Session> {

/** Helper class to Authenticate an incoming request. */
export class AuthN {
private strategies: Array<AuthNStrategy<Session>>;
private strategies: Array<AuthNStrategy<Session> | ((logger: Logger) => AuthNStrategy<Session>)>;

constructor(deps: {
/** List of strategies for authentication a user */
strategies: Array<AuthNStrategy<Session>>;
strategies: Array<AuthNStrategy<Session> | ((logger: Logger) => AuthNStrategy<Session>)>;
}) {
this.strategies = deps.strategies;
}
Expand All @@ -520,7 +520,10 @@ export class AuthN {
* If no authentication strategy succeeds a `UnauthenticatedSession` is returned instead.
*/
async authenticate(args: { req: FastifyRequest; reply: FastifyReply }): Promise<Session> {
for (const strategy of this.strategies) {
for (let strategy of this.strategies) {
if (strategy instanceof AuthNStrategy === false) {
strategy = strategy(args.req.log as Logger);
}
const session = await strategy.parse(args);
if (session) {
return session;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import SessionNode from 'supertokens-node/recipe/session/index.js';
import * as zod from 'zod';
import type { FastifyReply, FastifyRequest, ServiceLogger } from '@hive/service-common';
import type { FastifyReply, FastifyRequest } from '@hive/service-common';
import { captureException } from '@sentry/node';
import type { User } from '../../../shared/entities';
import { AccessError, HiveError } from '../../../shared/errors';
Expand Down Expand Up @@ -211,12 +211,12 @@ export class SuperTokensCookieBasedSession extends Session {
}

export class SuperTokensUserAuthNStrategy extends AuthNStrategy<SuperTokensCookieBasedSession> {
private logger: ServiceLogger;
private logger: Logger;
private organizationMembers: OrganizationMembers;
private storage: Storage;

constructor(deps: {
logger: ServiceLogger;
logger: Logger;
storage: Storage;
organizationMembers: OrganizationMembers;
}) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
import {
maskToken,
type FastifyReply,
type FastifyRequest,
type ServiceLogger,
} from '@hive/service-common';
import { maskToken, type FastifyReply, type FastifyRequest } from '@hive/service-common';
import { Logger } from '../../shared/providers/logger';
import { TokenStorage } from '../../token/providers/token-storage';
import { TokensConfig } from '../../token/providers/tokens';
Expand Down Expand Up @@ -59,10 +54,10 @@ export class TargetAccessTokenSession extends Session {
}

export class TargetAccessTokenStrategy extends AuthNStrategy<TargetAccessTokenSession> {
private logger: ServiceLogger;
private logger: Logger;
private tokensConfig: TokensConfig;

constructor(deps: { logger: ServiceLogger; tokensConfig: TokensConfig }) {
constructor(deps: { logger: Logger; tokensConfig: TokensConfig }) {
super();
this.logger = deps.logger.child({ module: 'TargetAccessTokenStrategy' });
this.tokensConfig = deps.tokensConfig;
Expand Down
32 changes: 17 additions & 15 deletions packages/services/server/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -406,22 +406,24 @@ export async function main() {

const authN = new AuthN({
strategies: [
new SuperTokensUserAuthNStrategy({
logger: server.log,
storage,
organizationMembers: new OrganizationMembers(
storage.pool,
new OrganizationMemberRoles(storage.pool, server.log),
(logger: Logger) =>
new SuperTokensUserAuthNStrategy({
logger,
storage,
server.log,
),
}),
new TargetAccessTokenStrategy({
logger: server.log,
tokensConfig: {
endpoint: env.hiveServices.tokens.endpoint,
},
}),
organizationMembers: new OrganizationMembers(
storage.pool,
new OrganizationMemberRoles(storage.pool, logger),
storage,
logger,
),
}),
(logger: Logger) =>
new TargetAccessTokenStrategy({
logger,
tokensConfig: {
endpoint: env.hiveServices.tokens.endpoint,
},
}),
],
});

Expand Down

0 comments on commit c549af7

Please sign in to comment.