Skip to main content

@supertokens-plugins/tenants-nodejs

Classes

DefaultPluginEmailService

Defined in: supertokens-plugins/packages/tenants-nodejs/src/defaultEmailService.ts:7

Default email service that provides template generation but throws on send

Implements

Constructors

Constructor
new DefaultPluginEmailService(): DefaultPluginEmailService;
Returns

DefaultPluginEmailService

Methods

generateEmailContent()
generateEmailContent(input: PluginEmailDeliveryInput): {
html: string;
subject: string;
text: string;
};

Defined in: supertokens-plugins/packages/tenants-nodejs/src/defaultEmailService.ts:9

Public method to generate email content - can be used in overrides

Parameters
ParameterType
inputPluginEmailDeliveryInput
Returns
{
html: string;
subject: string;
text: string;
}
sendEmail()
sendEmail(input: PluginEmailDeliveryInput & {
userContext: UserContext;
}): Promise<never>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/defaultEmailService.ts:76

eslint-disable-next-line @typescript-eslint/no-unused-vars

Parameters
ParameterType
inputPluginEmailDeliveryInput & { userContext: UserContext; }
Returns

Promise<never>

Implementation of
EmailDeliveryInterface.sendEmail

PluginSMTPService

Defined in: supertokens-plugins/packages/tenants-nodejs/src/emailServices.ts:7

Implements

Constructors

Constructor
new PluginSMTPService(config: {
smtpSettings: {
authUsername?: string;
from: {
email: string;
name: string;
};
host: string;
password: string;
port: number;
secure?: boolean;
};
}): PluginSMTPService;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/emailServices.ts:11

Parameters
ParameterType
config{ smtpSettings: { authUsername?: string; from: { email: string; name: string; }; host: string; password: string; port: number; secure?: boolean; }; }
config.smtpSettings{ authUsername?: string; from: { email: string; name: string; }; host: string; password: string; port: number; secure?: boolean; }
config.smtpSettings.authUsername?string
config.smtpSettings.from{ email: string; name: string; }
config.smtpSettings.from.emailstring
config.smtpSettings.from.namestring
config.smtpSettings.hoststring
config.smtpSettings.passwordstring
config.smtpSettings.portnumber
config.smtpSettings.secure?boolean
Returns

PluginSMTPService

Methods

sendEmail()
sendEmail(input: PluginEmailDeliveryInput & {
userContext: UserContext;
}): Promise<void>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/emailServices.ts:33

Parameters
ParameterType
inputPluginEmailDeliveryInput & { userContext: UserContext; }
Returns

Promise<void>

Implementation of
EmailDeliveryInterface.sendEmail

Type Aliases

AssociateAllLoginMethodsOfUserWithTenant()

type AssociateAllLoginMethodsOfUserWithTenant = (tenantId: string, userId: string, loginMethodFilter?: (loginMethod: LoginMethod) => boolean) => Promise<void>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:77

Parameters

ParameterType
tenantIdstring
userIdstring
loginMethodFilter?(loginMethod: LoginMethod) => boolean

Returns

Promise<void>

ErrorResponse

type ErrorResponse = {
message: string;
status: "ERROR";
};

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:16

Properties

GetAppUrl()

type GetAppUrl = (appInfo: NormalisedAppinfo, request: BaseRequest | undefined, userContext: UserContext) => string;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:85

Parameters

ParameterType
appInfoNormalisedAppinfo
requestBaseRequest | undefined
userContextUserContext

Returns

string

GetUserIdsInTenantWithRole()

type GetUserIdsInTenantWithRole = (tenantId: string, role: string) => Promise<string[]>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:83

Parameters

ParameterType
tenantIdstring
rolestring

Returns

Promise<string[]>

MetadataType

type MetadataType = ReturnType<typeof BaseFormSection>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:21

OverrideableTenantFunctionImplementation

type OverrideableTenantFunctionImplementation = {
acceptInvitation: (code: string, tenantId: string, session: SessionContainerInterface, metadata: MetadataType) => Promise<
| {
status: "OK";
}
| ErrorResponse>;
acceptTenantCreationRequest: (requestId: string, session: SessionContainerInterface, metadata: TenantCreationRequestMetadataType) => Promise<
| {
status: "OK";
}
| ErrorResponse>;
addInvitation: (email: string, tenantId: string, role: string, metadata: MetadataType) => Promise<
| {
code: string;
status: "OK";
}
| ErrorResponse>;
addTenantCreationRequest: (session: SessionContainerInterface, tenantDetails: {
firstFactors?: string[] | null;
name: string;
}, metadata: TenantCreationRequestMetadataType, appUrl: string, userContext: UserContext, sendEmail: SendPluginEmail) => Promise<
| {
status: "OK";
}
| ErrorResponse>;
assignRoleToUserInTenant: (tenantId: string, userId: string, role: string) => Promise<void>;
associateAllLoginMethodsOfUserWithTenant: AssociateAllLoginMethodsOfUserWithTenant;
canApproveJoinRequest: (targetUser: User, tenantId: string, session: SessionContainerInterface) => Promise<boolean>;
canApproveTenantCreationRequest: (targetUser: User, creationRequest: BaseFormSection, session: SessionContainerInterface) => Promise<boolean>;
canCreateInvitation: (email: string, role: string, tenantId: string, session: SessionContainerInterface) => Promise<boolean>;
canRemoveTargetUserFromTenant: (targetUser: User, tenantId: string, session: SessionContainerInterface) => Promise<boolean>;
createTenantAndAssignAdmin: (tenantDetails: {
firstFactors?: string[] | null;
name: string;
}, userId: string) => Promise<
| {
createdNew: boolean;
status: "OK";
}
| ErrorResponse>;
doesTenantCreationRequireApproval: (session: SessionContainerInterface) => Promise<boolean>;
doesUserHaveTenantCreationRequest: (userId: string, metadata: TenantCreationRequestMetadataType) => Promise<boolean>;
getAppUrl: GetAppUrl;
getInvitations: (tenantId: string, metadata: MetadataType) => Promise<
| {
invitees: BaseFormSection[];
status: "OK";
}
| ErrorResponse>;
getPreferredTenantId: (tenantIds: string[], inputTenantId: string) => string | undefined;
getTenantCreationRequests: (metadata: TenantCreationRequestMetadataType, userContext: UserContext) => Promise<
| {
status: "OK";
} & {
requests: BaseFormSection[];
}
| ErrorResponse>;
getTenants: (session: SessionContainerInterface | string) => Promise<
| {
status: "OK";
} & BaseFormSection
| ErrorResponse>;
getTenantUsers: (tenantId: string) => Promise<
| {
status: "OK";
users: User & {
roles?: string[];
}[];
}
| ErrorResponse>;
isAllowedToCreateTenant: (session: SessionContainerInterface) => Promise<boolean>;
isAllowedToJoinTenant: (targetUser: User, session: SessionContainerInterface) => Promise<boolean>;
rejectRequestToJoinTenant: (tenantId: string, userId: string) => Promise<
| {
status: "OK";
}
| ErrorResponse>;
rejectTenantCreationRequest: (requestId: string, session: SessionContainerInterface, metadata: TenantCreationRequestMetadataType) => Promise<
| {
status: "OK";
}
| ErrorResponse>;
removeInvitation: (email: string, tenantId: string, metadata: MetadataType) => Promise<
| {
status: "OK";
}
| ErrorResponse>;
sendTenantCreationRequestEmail: (tenantId: string, creatorEmail: string, appUrl: string, userContext: UserContext, sendEmail: SendPluginEmail) => Promise<void>;
shouldHaveTenantAccess: (userId: string, tenantId: string, userContext: UserContext) => Promise<{
canAccess: boolean;
reason?: string;
}>;
};

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:91

Properties

PropertyTypeDefined in
acceptInvitation(code: string, tenantId: string, session: SessionContainerInterface, metadata: MetadataType) => Promise< | { status: "OK"; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:134
acceptTenantCreationRequest(requestId: string, session: SessionContainerInterface, metadata: TenantCreationRequestMetadataType) => Promise< | { status: "OK"; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:160
addInvitation(email: string, tenantId: string, role: string, metadata: MetadataType) => Promise< | { code: string; status: "OK"; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:123
addTenantCreationRequest(session: SessionContainerInterface, tenantDetails: { firstFactors?: string[] | null; name: string; }, metadata: TenantCreationRequestMetadataType, appUrl: string, userContext: UserContext, sendEmail: SendPluginEmail) => Promise< | { status: "OK"; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:145
assignRoleToUserInTenant(tenantId: string, userId: string, role: string) => Promise<void>supertokens-plugins/packages/tenants-nodejs/src/types.ts:181
associateAllLoginMethodsOfUserWithTenantAssociateAllLoginMethodsOfUserWithTenantsupertokens-plugins/packages/tenants-nodejs/src/types.ts:144
canApproveJoinRequest(targetUser: User, tenantId: string, session: SessionContainerInterface) => Promise<boolean>supertokens-plugins/packages/tenants-nodejs/src/types.ts:102
canApproveTenantCreationRequest(targetUser: User, creationRequest: BaseFormSection, session: SessionContainerInterface) => Promise<boolean>supertokens-plugins/packages/tenants-nodejs/src/types.ts:103
canCreateInvitation(email: string, role: string, tenantId: string, session: SessionContainerInterface) => Promise<boolean>supertokens-plugins/packages/tenants-nodejs/src/types.ts:96
canRemoveTargetUserFromTenant(targetUser: User, tenantId: string, session: SessionContainerInterface) => Promise<boolean>supertokens-plugins/packages/tenants-nodejs/src/types.ts:108
createTenantAndAssignAdmin(tenantDetails: { firstFactors?: string[] | null; name: string; }, userId: string) => Promise< | { createdNew: boolean; status: "OK"; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:113
doesTenantCreationRequireApproval(session: SessionContainerInterface) => Promise<boolean>supertokens-plugins/packages/tenants-nodejs/src/types.ts:95
doesUserHaveTenantCreationRequest(userId: string, metadata: TenantCreationRequestMetadataType) => Promise<boolean>supertokens-plugins/packages/tenants-nodejs/src/types.ts:179
getAppUrlGetAppUrlsupertokens-plugins/packages/tenants-nodejs/src/types.ts:177
getInvitations(tenantId: string, metadata: MetadataType) => Promise< | { invitees: BaseFormSection[]; status: "OK"; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:140
getPreferredTenantId(tenantIds: string[], inputTenantId: string) => string | undefinedsupertokens-plugins/packages/tenants-nodejs/src/types.ts:180
getTenantCreationRequests(metadata: TenantCreationRequestMetadataType, userContext: UserContext) => Promise< | { status: "OK"; } & { requests: BaseFormSection[]; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:156
getTenants(session: SessionContainerInterface | string) => Promise< | { status: "OK"; } & BaseFormSection | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:92
getTenantUsers(tenantId: string) => Promise< | { status: "OK"; users: User & { roles?: string[]; }[]; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:120
isAllowedToCreateTenant(session: SessionContainerInterface) => Promise<boolean>supertokens-plugins/packages/tenants-nodejs/src/types.ts:94
isAllowedToJoinTenant(targetUser: User, session: SessionContainerInterface) => Promise<boolean>supertokens-plugins/packages/tenants-nodejs/src/types.ts:93
rejectRequestToJoinTenant(tenantId: string, userId: string) => Promise< | { status: "OK"; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:178
rejectTenantCreationRequest(requestId: string, session: SessionContainerInterface, metadata: TenantCreationRequestMetadataType) => Promise< | { status: "OK"; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:165
removeInvitation(email: string, tenantId: string, metadata: MetadataType) => Promise< | { status: "OK"; } | ErrorResponse>supertokens-plugins/packages/tenants-nodejs/src/types.ts:129
sendTenantCreationRequestEmail(tenantId: string, creatorEmail: string, appUrl: string, userContext: UserContext, sendEmail: SendPluginEmail) => Promise<void>supertokens-plugins/packages/tenants-nodejs/src/types.ts:170
shouldHaveTenantAccess(userId: string, tenantId: string, userContext: UserContext) => Promise<{ canAccess: boolean; reason?: string; }>supertokens-plugins/packages/tenants-nodejs/src/types.ts:182

PluginEmailDeliveryInput

type PluginEmailDeliveryInput = 
| {
appUrl: string;
customData?: Record<string, any>;
email: string;
senderEmail: string;
tenantId: string;
type: "TENANT_REQUEST_APPROVAL";
}
| {
appUrl: string;
creatorEmail: string;
customData?: Record<string, any>;
email: string;
tenantId: string;
type: "TENANT_CREATE_APPROVAL";
};

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:25

Define custom email input type for the plugin

SendPluginEmail()

type SendPluginEmail = (input: PluginEmailDeliveryInput, userContext: UserContext) => Promise<void>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:75

Parameters

ParameterType
inputPluginEmailDeliveryInput
userContextUserContext

Returns

Promise<void>

SuperTokensPluginTenantPluginConfig

type SuperTokensPluginTenantPluginConfig = {
allowPublicTenantAccess?: boolean;
createRolesOnInit?: boolean;
emailDelivery?: {
override?: (originalImplementation: EmailDeliveryInterface<PluginEmailDeliveryInput>) => EmailDeliveryInterface<PluginEmailDeliveryInput>;
service?: EmailDeliveryInterface<PluginEmailDeliveryInput>;
};
enableTenantListAPI?: boolean;
requireNonPublicTenantAssociation?: boolean;
requireTenantCreationRequestApproval?: boolean;
};

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:43

Properties

PropertyTypeDescriptionDefined in
allowPublicTenantAccess?boolean-supertokens-plugins/packages/tenants-nodejs/src/types.ts:48
createRolesOnInit?boolean-supertokens-plugins/packages/tenants-nodejs/src/types.ts:47
emailDelivery?{ override?: (originalImplementation: EmailDeliveryInterface<PluginEmailDeliveryInput>) => EmailDeliveryInterface<PluginEmailDeliveryInput>; service?: EmailDeliveryInterface<PluginEmailDeliveryInput>; }Email delivery configuration - service is optional, override can provide sendEmail implementationsupertokens-plugins/packages/tenants-nodejs/src/types.ts:51
emailDelivery.override?(originalImplementation: EmailDeliveryInterface<PluginEmailDeliveryInput>) => EmailDeliveryInterface<PluginEmailDeliveryInput>-supertokens-plugins/packages/tenants-nodejs/src/types.ts:53
emailDelivery.service?EmailDeliveryInterface<PluginEmailDeliveryInput>-supertokens-plugins/packages/tenants-nodejs/src/types.ts:52
enableTenantListAPI?boolean-supertokens-plugins/packages/tenants-nodejs/src/types.ts:46
requireNonPublicTenantAssociation?boolean-supertokens-plugins/packages/tenants-nodejs/src/types.ts:44
requireTenantCreationRequestApproval?boolean-supertokens-plugins/packages/tenants-nodejs/src/types.ts:45

SuperTokensPluginTenantPluginNormalisedConfig

type SuperTokensPluginTenantPluginNormalisedConfig = {
allowPublicTenantAccess: boolean;
createRolesOnInit: boolean;
emailDelivery?: {
override?: (originalImplementation: EmailDeliveryInterface<PluginEmailDeliveryInput>) => EmailDeliveryInterface<PluginEmailDeliveryInput>;
service?: EmailDeliveryInterface<PluginEmailDeliveryInput>;
};
enableTenantListAPI: boolean;
requireNonPublicTenantAssociation: boolean;
requireTenantCreationRequestApproval: boolean;
};

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:59

Properties

PropertyTypeDescriptionDefined in
allowPublicTenantAccessboolean-supertokens-plugins/packages/tenants-nodejs/src/types.ts:64
createRolesOnInitboolean-supertokens-plugins/packages/tenants-nodejs/src/types.ts:63
emailDelivery?{ override?: (originalImplementation: EmailDeliveryInterface<PluginEmailDeliveryInput>) => EmailDeliveryInterface<PluginEmailDeliveryInput>; service?: EmailDeliveryInterface<PluginEmailDeliveryInput>; }Email delivery configuration - service is optional, override can provide sendEmail implementationsupertokens-plugins/packages/tenants-nodejs/src/types.ts:67
emailDelivery.override?(originalImplementation: EmailDeliveryInterface<PluginEmailDeliveryInput>) => EmailDeliveryInterface<PluginEmailDeliveryInput>-supertokens-plugins/packages/tenants-nodejs/src/types.ts:69
emailDelivery.service?EmailDeliveryInterface<PluginEmailDeliveryInput>-supertokens-plugins/packages/tenants-nodejs/src/types.ts:68
enableTenantListAPIboolean-supertokens-plugins/packages/tenants-nodejs/src/types.ts:62
requireNonPublicTenantAssociationboolean-supertokens-plugins/packages/tenants-nodejs/src/types.ts:60
requireTenantCreationRequestApprovalboolean-supertokens-plugins/packages/tenants-nodejs/src/types.ts:61

TenantCreationRequestMetadataType

type TenantCreationRequestMetadataType = ReturnType<typeof BaseFormSection>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/types.ts:22

Variables

default

default: {
init: any;
SMTPService: typeof PluginSMTPService;
};

Defined in: supertokens-plugins/packages/tenants-nodejs/src/index.ts:19

Type Declaration

getUserIdsInTenantWithRole

const getUserIdsInTenantWithRole: GetUserIdsInTenantWithRole;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/roles.ts:64

HANDLE_BASE_PATH

const HANDLE_BASE_PATH: "/plugin/supertokens-plugin-tenants";

Defined in: supertokens-plugins/packages/tenants-nodejs/src/constants.ts:6

init

const init: any;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/plugin.ts:36

METADATA_KEY

const METADATA_KEY: "supertokens-plugin-tenants";

Defined in: supertokens-plugins/packages/tenants-nodejs/src/constants.ts:10

PLUGIN_ERROR_NAME

const PLUGIN_ERROR_NAME: "supertokens-plugin-tenants-error";

Defined in: supertokens-plugins/packages/tenants-nodejs/src/constants.ts:8

PLUGIN_ID

const PLUGIN_ID: "supertokens-plugin-tenants" = "supertokens-plugin-tenants";

Defined in: supertokens-plugins/packages/tenants-nodejs/src/constants.ts:1

PLUGIN_SDK_VERSION

const PLUGIN_SDK_VERSION: string[];

Defined in: supertokens-plugins/packages/tenants-nodejs/src/constants.ts:4

PLUGIN_VERSION

const PLUGIN_VERSION: "0.0.1" = "0.0.1";

Defined in: supertokens-plugins/packages/tenants-nodejs/src/constants.ts:2

TENANT_CREATE_METADATA_KEY

const TENANT_CREATE_METADATA_KEY: "supertokens-plugin-tenants-tenant-create-requests";

Defined in: supertokens-plugins/packages/tenants-nodejs/src/constants.ts:11

TENANT_CREATE_METADATA_REQUESTS_KEY

const TENANT_CREATE_METADATA_REQUESTS_KEY: "requests" = "requests";

Defined in: supertokens-plugins/packages/tenants-nodejs/src/constants.ts:12

Functions

assignAdminToUserInTenant()

function assignAdminToUserInTenant(tenantId: string, userId: string): Promise<void>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/roles.ts:51

Parameters

ParameterType
tenantIdstring
userIdstring

Returns

Promise<void>

assignRoleToUserInTenant()

function assignRoleToUserInTenant(
tenantId: string,
userId: string,
role: string): Promise<void>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/roles.ts:31

Default definition of assignRoleToUserInTenant to be exported to be usable without having to initialize the plugin.

Parameters

ParameterType
tenantIdstring
userIdstring
rolestring

Returns

Promise<void>

createRoles()

function createRoles(): Promise<void>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/roles.ts:7

Returns

Promise<void>

extractInvitationCodeAndTenantId()

function extractInvitationCodeAndTenantId(req: BaseRequest): Promise<{
code: any;
shouldAcceptInvite: boolean;
tenantId: any;
}>;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/util.ts:19

Parameters

ParameterType
reqBaseRequest

Returns

Promise<{ code: any; shouldAcceptInvite: boolean; tenantId: any; }>

getOverrideableTenantFunctionImplementation()

function getOverrideableTenantFunctionImplementation(pluginConfig: SuperTokensPluginTenantPluginConfig): OverrideableTenantFunctionImplementation;

Defined in: supertokens-plugins/packages/tenants-nodejs/src/pluginImplementation.ts:32

Parameters

ParameterType
pluginConfigSuperTokensPluginTenantPluginConfig

Returns

OverrideableTenantFunctionImplementation

hasPermissions()

function hasPermissions(permissions: string[]): (globalValidators: SessionClaimValidator[]) => SessionClaimValidator[];

Defined in: supertokens-plugins/packages/tenants-nodejs/src/util.ts:12

Parameters

ParameterType
permissionsstring[]

Returns

(globalValidators: SessionClaimValidator[]): SessionClaimValidator[];
Parameters
ParameterType
globalValidatorsSessionClaimValidator[]
Returns

SessionClaimValidator[]

validateWithoutClaims()

function validateWithoutClaims(keys: string[]): (existingValidators: SessionClaimValidator[]) => SessionClaimValidator[];

Defined in: supertokens-plugins/packages/tenants-nodejs/src/util.ts:5

Parameters

ParameterType
keysstring[]

Returns

(existingValidators: SessionClaimValidator[]): SessionClaimValidator[];
Parameters
ParameterType
existingValidatorsSessionClaimValidator[]
Returns

SessionClaimValidator[]