Skip to main content

Class: Strategy

strategies/Strategy.Strategy

Hierarchy

Constructors

constructor

new Strategy(typeName, strategyInstanceService, strategiesService, canLoginRegister?, canSync?, needsRedirectFlow?, allowsImplicitSignup?)

Parameters

NameTypeDefault value
typeNamestringundefined
strategyInstanceServiceStrategyInstanceServiceundefined
strategiesServiceStrategiesServiceundefined
canLoginRegisterbooleantrue
canSyncbooleanfalse
needsRedirectFlowbooleanfalse
allowsImplicitSignupbooleanfalse

Defined in

login-service/src/strategies/Strategy.ts:20

Properties

allowsImplicitSignup

Readonly allowsImplicitSignup: boolean = false

Defined in

login-service/src/strategies/Strategy.ts:27


canLoginRegister

Readonly canLoginRegister: boolean = true

Defined in

login-service/src/strategies/Strategy.ts:24


canSync

Readonly canSync: boolean = false

Defined in

login-service/src/strategies/Strategy.ts:25


needsRedirectFlow

Readonly needsRedirectFlow: boolean = false

Defined in

login-service/src/strategies/Strategy.ts:26


strategiesService

Protected Readonly strategiesService: StrategiesService

Defined in

login-service/src/strategies/Strategy.ts:23


strategyInstanceService

Protected Readonly strategyInstanceService: StrategyInstanceService

Defined in

login-service/src/strategies/Strategy.ts:22


typeName

Readonly typeName: string

Defined in

login-service/src/strategies/Strategy.ts:21

Accessors

acceptsVariables

get acceptsVariables(): Object

Returns

Object

Defined in

login-service/src/strategies/Strategy.ts:131

Methods

checkAndExtendInstanceConfig

Protected checkAndExtendInstanceConfig(instanceConfig): object

Checks the given config for a instance and extends it (e.g. with default values) of this strategy for validity

For strategies that can sync, this checks the existance and format of imsTemplatedFieldsFilter in the instance config. This is expected to contain the fields with the values that are expected for an IMS to be considered an ims fot this strategy instance.

Parameters

NameTypeDescription
instanceConfigobjectThe config object to check for validity

Returns

object

The instance config in the way as it should be insterted in the instance

Throws

Any error/exception if the instance config was invalid and no instance may be crated

Defined in

login-service/src/strategies/Strategy.ts:45


createOrUpdateNewInstance

createOrUpdateNewInstance(input, instanceToUpdate?): Promise<StrategyInstance>

Parameters

NameType
inputUpdateStrategyInstanceInput | CreateStrategyInstanceInput
instanceToUpdate?StrategyInstance

Returns

Promise<StrategyInstance>

Defined in

login-service/src/strategies/Strategy.ts:76


existsInstanceClearName

existsInstanceClearName(name): Promise<boolean>

Parameters

NameType
namestring

Returns

Promise<boolean>

Defined in

login-service/src/strategies/Strategy.ts:116


getAllInstances

getAllInstances(): Promise<StrategyInstance[]>

Returns

Promise<StrategyInstance[]>

Defined in

login-service/src/strategies/Strategy.ts:120


getImsTemplatedValuesForStrategyInstance

getImsTemplatedValuesForStrategyInstance(instance): object | Promise<object>

Returns the object containing the templated fields and their values that an IMS needs to match, in order to be considered tha IMS that is represented by the strategy instance given. Values will be compared field by field with the templated values of the IMS.

The fields id, name and description of the returned object will not be compared to the templated values, but instead to the actual fields of the IMS with those respective names.

For example: The API-Url must match in order for a GitHub IMS belonging to a GitHub strategy instance

Can/Should be overridden by strategies capable of sync. Default implementation returns imsTemplatedFieldsFilter of instance config

Parameters

NameTypeDescription
instanceStrategyInstanceThe strategy instance for which the templated values should be retuned

Returns

object | Promise<object>

An object which, if it matches the templated fields of an IMS, the given instance is the matching strategy instance for that IMS Null if the strategy does not sync

Defined in

login-service/src/strategies/Strategy.ts:161


getImsUserTemplatedValuesForLoginData

getImsUserTemplatedValuesForLoginData(loginData): object | Promise<object>

Returns the object containing the templated fields and their values that an IMSUser needs to match, in order to be considered an IMSUser that belongs to the given loginData (i.e. the IMS is a login of the user of this login data on the ims of this login data)

The fields id, username, displayName and email of the returned object will not be compared to the templated values, but instead to the actual fields of the IMSUser with those respective names.

For example: The username on GitHub must match the username in the login data.

Can/Should/Must be overridden by strategies capable of sync. Default implementation returns the loginData.data field unchanged

Parameters

NameTypeDescription
loginDataUserLoginDataThe login data for which the templated field values should be returned, representing a login of the user using a strategy instance

Returns

object | Promise<object>

An object which, if it matches the templated fields of an IMSUser, the given loginData is the matching login for that IMSUser Null if the strategy does not sync

Defined in

login-service/src/strategies/Strategy.ts:188


getInstanceById

getInstanceById(id): Promise<StrategyInstance>

Parameters

NameType
idstring

Returns

Promise<StrategyInstance>

Defined in

login-service/src/strategies/Strategy.ts:124


getLoginDataDataForImsUserTemplatedFields

getLoginDataDataForImsUserTemplatedFields(imsUserTemplatedFields): object | Promise<object>

Does the opposite of getImsUserTemplatedValuesForLoginData.

Returns an object that needs to match the data field of a LoginData in order for the IMSUser to be considerd matching the login data.

The imsUserTemplatedFields should also contain the fields id, username, displayName and email directly of the IMSUser in addition to the templated fields and values.

For example: Given templated fields of an IMSUser containing its username, this should return the login data object that also matches the user with that username

Can/Should/Must be overridden by strategies capable of sync. Default implementation returns the imsUserTemplatedFields unchanged

Parameters

NameTypeDescription
imsUserTemplatedFieldsobjectTemplated fields and values as well as the fields id, username, displayName and email of the IMSUser.

Returns

object | Promise<object>

An object, that the .data field of a login data needs to match.

Defined in

login-service/src/strategies/Strategy.ts:217


getSyncDataForLoginData

getSyncDataForLoginData(loginData): { [key: string]: any; token: string } | Promise<{ [key: string]: any; token: string }>

Parameters

NameType
loginDataUserLoginData

Returns

{ [key: string]: any; token: string } | Promise<{ [key: string]: any; token: string }>

Defined in

login-service/src/strategies/Strategy.ts:137


getUserDataSuggestion

getUserDataSuggestion(loginData): Object

For a given login data return data that has been retrieved from the authentication source with which to prefill the input fields for the user registration

WARNING: Does not check wether the returned data is valid or e.g. a username is unique. This is purely a data mapper.

Parameters

NameTypeDescription
loginDataUserLoginDataThe login data of the authentication for which to retrieve the data

Returns

Object

Suggestions for the user data based on the login data. NOT checked!

NameType
displayName?string
email?string
username?string

Defined in

login-service/src/strategies/Strategy.ts:234


performAuth

Abstract performAuth(strategyInstance, authStateData, req, res): Promise<{ info: any ; result: AuthResult ; returnedState: AuthStateData }>

Parameters

NameType
strategyInstanceStrategyInstance
authStateDataobject | AuthStateData
reqany
resany

Returns

Promise<{ info: any ; result: AuthResult ; returnedState: AuthStateData }>

Defined in

login-service/src/strategies/Strategy.ts:238


toJSON

toJSON(): Object

Returns

Object

NameType
acceptsVariables{ [variableName: string]: StrategyVariable; }
allowsImplicitSignupboolean
canLoginRegisterboolean
canSyncboolean
needsRedirectFlowboolean
typeNamestring

Defined in

login-service/src/strategies/Strategy.ts:249


updateCapabilityFlags

Private updateCapabilityFlags(patrentValue, useDefault, inputValue?): boolean

Parameters

NameType
patrentValueboolean
useDefaultboolean
inputValue?boolean

Returns

boolean

Defined in

login-service/src/strategies/Strategy.ts:64