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