Skip to main content

Class: GithubTokenStrategyService

strategies/github-token/github-token.service.GithubTokenStrategyService

Base class for all strategies.

Param

The name of the strategy

Param

The service to use for strategy instances

Param

The service to use for strategies

Param

Whether the strategy can be used for login and registration of new users (does not affect registering additional accounts)

Param

Whether the strategy can be used to sync with external services

Param

Whether the strategy needs a redirect flow for login

Param

Whether the strategy allows implicit signup

Param

Whether the strategy forces the use of a suggested username

Hierarchy

Constructors

constructor

new GithubTokenStrategyService(strategiesService, strategyInstanceService, loginDataService)

Parameters

NameType
strategiesServiceStrategiesService
strategyInstanceServiceStrategyInstanceService
loginDataServiceUserLoginDataService

Overrides

Strategy.constructor

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:14

Properties

allowsImplicitSignup

Readonly allowsImplicitSignup: boolean = false

Inherited from

Strategy.allowsImplicitSignup

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:50


canLoginRegister

Readonly canLoginRegister: boolean = true

Inherited from

Strategy.canLoginRegister

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:47


canSync

Readonly canSync: boolean = false

Inherited from

Strategy.canSync

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:48


forceSuggestedUsername

Readonly forceSuggestedUsername: boolean = false

Inherited from

Strategy.forceSuggestedUsername

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:51


loginDataService

Private Readonly loginDataService: UserLoginDataService

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:17


needsRedirectFlow

Readonly needsRedirectFlow: boolean = false

Inherited from

Strategy.needsRedirectFlow

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:49


strategiesService

Protected Readonly strategiesService: StrategiesService

Inherited from

Strategy.strategiesService

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:46


strategyInstanceService

Protected Readonly strategyInstanceService: StrategyInstanceService

Inherited from

Strategy.strategyInstanceService

Defined in

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


typeName

Readonly typeName: string

Inherited from

Strategy.typeName

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:44

Accessors

acceptsVariables

get acceptsVariables(): StrategyVariable[]

Returns

StrategyVariable[]

Overrides

Strategy.acceptsVariables

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:33


instanceConfigSchema

get instanceConfigSchema(): Record<string, Schema>

Returns

Record<string, Schema>

Overrides

Strategy.instanceConfigSchema

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:22


updateActions

get updateActions(): StrategyUpdateAction[]

Returns

StrategyUpdateAction[]

Overrides

Strategy.updateActions

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:43

Methods

checkAndExtendInstanceConfig

Protected checkAndExtendInstanceConfig(instanceConfig): object

Chechs the given config is valid for a github (or github enterprise)

Needed parameters

  • imsTemplatedFieldsFilter containing:

Parameters

NameTypeDescription
instanceConfigobjectThe instance config for a github-token strategy instance to check

Returns

object

The extended config (with default parameters for the global github) if check successful

Overrides

Strategy.checkAndExtendInstanceConfig

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:70


createOrUpdateNewInstance

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

Parameters

NameType
inputUpdateStrategyInstanceInput | CreateStrategyInstanceInput
instanceToUpdate?StrategyInstance

Returns

Promise<StrategyInstance>

Inherited from

Strategy.createOrUpdateNewInstance

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:100


existsInstanceClearName

existsInstanceClearName(name): Promise<boolean>

Parameters

NameType
namestring

Returns

Promise<boolean>

Inherited from

Strategy.existsInstanceClearName

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:140


getAllInstances

getAllInstances(): Promise<StrategyInstance[]>

Returns

Promise<StrategyInstance[]>

Inherited from

Strategy.getAllInstances

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:144


getCensoredInstanceConfig

getCensoredInstanceConfig(instance): object

Returns the instance config of the strategy instance, but with sensitive data censored.

WARNING: The result of this function WILL be exposed to the user.

Parameters

NameTypeDescription
instanceStrategyInstanceThe strategy instance for which to get the censored instance config

Returns

object

The censored instance config

Overrides

Strategy.getCensoredInstanceConfig

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:114


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

Inherited from

Strategy.getImsTemplatedValuesForStrategyInstance

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:191


getImsUserTemplatedValuesForLoginData

getImsUserTemplatedValuesForLoginData(loginData): 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

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

Overrides

Strategy.getImsUserTemplatedValuesForLoginData

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:93


getInstanceById

getInstanceById(id): Promise<StrategyInstance>

Parameters

NameType
idstring

Returns

Promise<StrategyInstance>

Inherited from

Strategy.getInstanceById

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:148


getLoginDataDataForImsUserTemplatedFields

getLoginDataDataForImsUserTemplatedFields(imsUser): 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
imsUserobjectTemplated 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.

Overrides

Strategy.getLoginDataDataForImsUserTemplatedFields

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:103


getLoginDataDescription

getLoginDataDescription(loginData): Promise<string>

Gets a description of the login data, e.g. a username or email.

Parameters

NameTypeDescription
loginDataUserLoginDataThe login data for which to get the description

Returns

Promise<string>

A description of the login data

Overrides

Strategy.getLoginDataDescription

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:110


getSyncDataForLoginData

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

Parameters

NameType
loginDataUserLoginData

Returns

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

Overrides

Strategy.getSyncDataForLoginData

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:87


getUserData

Private getUserData(token, strategyInstance): Promise<{ displayName: string ; email: string ; github_id: number ; github_node_id: string ; token: string ; username: string }>

Parameters

NameType
tokenstring
strategyInstanceStrategyInstance

Returns

Promise<{ displayName: string ; email: string ; github_id: number ; github_node_id: string ; token: string ; username: string }>

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:120


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

Inherited from

Strategy.getUserDataSuggestion

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:274


handleAction

handleAction(loginData, name, data): Promise<void>

Handles an action that was triggered by the user. Actions are defined via updateActions.

Parameters

NameTypeDescription
loginDataUserLoginDatathe login data of the user that triggered the action
namestringthe name of the action
dataRecord<string, any>the data for the action

Returns

Promise<void>

Overrides

Strategy.handleAction

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:192


performAuth

performAuth(strategyInstance, state, req, res): Promise<PerformAuthResult>

Parameters

NameType
strategyInstanceStrategyInstance
stateAuthStateServerData & OAuthAuthorizeServerState
reqany
resany

Returns

Promise<PerformAuthResult>

Overrides

Strategy.performAuth

Defined in

gropius-login-service/backend/src/strategies/github-token/github-token.service.ts:168


toJSON

toJSON(): Object

Returns

Object

NameType
acceptsVariablesStrategyVariable[]
allowsImplicitSignupboolean
canLoginRegisterboolean
canSyncboolean
instanceConfigSchemaRecord<string, Schema>
needsRedirectFlowboolean
typeNamestring
updateActionsStrategyUpdateAction[]

Inherited from

Strategy.toJSON

Defined in

gropius-login-service/backend/src/strategies/Strategy.ts:309