File tree Expand file tree Collapse file tree 4 files changed +29
-29
lines changed Expand file tree Collapse file tree 4 files changed +29
-29
lines changed Original file line number Diff line number Diff line change @@ -506,11 +506,11 @@ export abstract class AuthNStrategy<TSession extends Session> {
506
506
507
507
/** Helper class to Authenticate an incoming request. */
508
508
export class AuthN {
509
- private strategies : Array < AuthNStrategy < Session > > ;
509
+ private strategies : Array < AuthNStrategy < Session > | ( ( logger : Logger ) => AuthNStrategy < Session > ) > ;
510
510
511
511
constructor ( deps : {
512
512
/** List of strategies for authentication a user */
513
- strategies : Array < AuthNStrategy < Session > > ;
513
+ strategies : Array < AuthNStrategy < Session > | ( ( logger : Logger ) => AuthNStrategy < Session > ) > ;
514
514
} ) {
515
515
this . strategies = deps . strategies ;
516
516
}
@@ -520,7 +520,10 @@ export class AuthN {
520
520
* If no authentication strategy succeeds a `UnauthenticatedSession` is returned instead.
521
521
*/
522
522
async authenticate ( args : { req : FastifyRequest ; reply : FastifyReply } ) : Promise < Session > {
523
- for ( const strategy of this . strategies ) {
523
+ for ( let strategy of this . strategies ) {
524
+ if ( strategy instanceof AuthNStrategy === false ) {
525
+ strategy = strategy ( args . req . log as Logger ) ;
526
+ }
524
527
const session = await strategy . parse ( args ) ;
525
528
if ( session ) {
526
529
return session ;
Original file line number Diff line number Diff line change 1
1
import SessionNode from 'supertokens-node/recipe/session/index.js' ;
2
2
import * as zod from 'zod' ;
3
- import type { FastifyReply , FastifyRequest , ServiceLogger } from '@hive/service-common' ;
3
+ import type { FastifyReply , FastifyRequest } from '@hive/service-common' ;
4
4
import { captureException } from '@sentry/node' ;
5
5
import type { User } from '../../../shared/entities' ;
6
6
import { AccessError , HiveError } from '../../../shared/errors' ;
@@ -211,12 +211,12 @@ export class SuperTokensCookieBasedSession extends Session {
211
211
}
212
212
213
213
export class SuperTokensUserAuthNStrategy extends AuthNStrategy < SuperTokensCookieBasedSession > {
214
- private logger : ServiceLogger ;
214
+ private logger : Logger ;
215
215
private organizationMembers : OrganizationMembers ;
216
216
private storage : Storage ;
217
217
218
218
constructor ( deps : {
219
- logger : ServiceLogger ;
219
+ logger : Logger ;
220
220
storage : Storage ;
221
221
organizationMembers : OrganizationMembers ;
222
222
} ) {
Original file line number Diff line number Diff line change 1
- import {
2
- maskToken ,
3
- type FastifyReply ,
4
- type FastifyRequest ,
5
- type ServiceLogger ,
6
- } from '@hive/service-common' ;
1
+ import { maskToken , type FastifyReply , type FastifyRequest } from '@hive/service-common' ;
7
2
import { Logger } from '../../shared/providers/logger' ;
8
3
import { TokenStorage } from '../../token/providers/token-storage' ;
9
4
import { TokensConfig } from '../../token/providers/tokens' ;
@@ -59,10 +54,10 @@ export class TargetAccessTokenSession extends Session {
59
54
}
60
55
61
56
export class TargetAccessTokenStrategy extends AuthNStrategy < TargetAccessTokenSession > {
62
- private logger : ServiceLogger ;
57
+ private logger : Logger ;
63
58
private tokensConfig : TokensConfig ;
64
59
65
- constructor ( deps : { logger : ServiceLogger ; tokensConfig : TokensConfig } ) {
60
+ constructor ( deps : { logger : Logger ; tokensConfig : TokensConfig } ) {
66
61
super ( ) ;
67
62
this . logger = deps . logger . child ( { module : 'TargetAccessTokenStrategy' } ) ;
68
63
this . tokensConfig = deps . tokensConfig ;
Original file line number Diff line number Diff line change @@ -406,22 +406,24 @@ export async function main() {
406
406
407
407
const authN = new AuthN ( {
408
408
strategies : [
409
- new SuperTokensUserAuthNStrategy ( {
410
- logger : server . log ,
411
- storage,
412
- organizationMembers : new OrganizationMembers (
413
- storage . pool ,
414
- new OrganizationMemberRoles ( storage . pool , server . log ) ,
409
+ ( logger : Logger ) =>
410
+ new SuperTokensUserAuthNStrategy ( {
411
+ logger,
415
412
storage,
416
- server . log ,
417
- ) ,
418
- } ) ,
419
- new TargetAccessTokenStrategy ( {
420
- logger : server . log ,
421
- tokensConfig : {
422
- endpoint : env . hiveServices . tokens . endpoint ,
423
- } ,
424
- } ) ,
413
+ organizationMembers : new OrganizationMembers (
414
+ storage . pool ,
415
+ new OrganizationMemberRoles ( storage . pool , logger ) ,
416
+ storage ,
417
+ logger ,
418
+ ) ,
419
+ } ) ,
420
+ ( logger : Logger ) =>
421
+ new TargetAccessTokenStrategy ( {
422
+ logger,
423
+ tokensConfig : {
424
+ endpoint : env . hiveServices . tokens . endpoint ,
425
+ } ,
426
+ } ) ,
425
427
] ,
426
428
} ) ;
427
429
You can’t perform that action at this time.
0 commit comments