Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {

export interface IOryRelationshipsModuleOptions extends OryBaseModuleOptions {
basePath: string;
publicBasePath?: string;
accessToken?: string;
}

Expand All @@ -16,10 +17,12 @@ export class OryRelationshipsModuleOptions
implements IOryRelationshipsModuleOptions
{
basePath: string;
publicBasePath?: string;
accessToken?: string;
constructor(options: IOryRelationshipsModuleOptions) {
super(options);
this.basePath = options.basePath;
this.publicBasePath = options.publicBasePath;
this.accessToken = options.accessToken;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
import { OryBaseService } from '@getlarge/base-client-wrapper';
import { Inject, Injectable } from '@nestjs/common';
import { Configuration, RelationshipApi } from '@ory/client';
import {
Configuration,
RelationshipApi,
RelationshipApiGetRelationshipsRequest,
} from '@ory/client';
import { RawAxiosRequestConfig } from 'axios';

import { OryRelationshipsModuleOptions } from './ory-relationships.interfaces';

@Injectable()
export class OryRelationshipsService extends RelationshipApi {
readonly publicBasePath?: string;

constructor(
@Inject(OryRelationshipsModuleOptions)
options: OryRelationshipsModuleOptions,
Expand All @@ -20,6 +27,7 @@ export class OryRelationshipsService extends RelationshipApi {
baseService.axios as ConstructorParameters<typeof RelationshipApi>[2]
);

this.publicBasePath = options.publicBasePath;
this.configuration ??= new Configuration({
basePath: options.basePath,
accessToken: options.accessToken,
Expand All @@ -33,4 +41,14 @@ export class OryRelationshipsService extends RelationshipApi {
set config(config: Configuration) {
this.configuration = config;
}

// enable URL override for getRelationships, it should use the Public API URL when using self-hosted Ory Keto
override getRelationships = (
requestParameters?: RelationshipApiGetRelationshipsRequest,
options: RawAxiosRequestConfig = {}
) =>
super.getRelationships(requestParameters, {
...options,
baseURL: this.publicBasePath ?? this.config.basePath,
});
}
Loading