Class: ImsUserFindingService
backend-services/ims-user-finding.service.ImsUserFindingService
Constructors
constructor
• new ImsUserFindingService(graphqlService, strategiesService, loginDataService, imsUserService, backendUserService)
Parameters
| Name | Type |
|---|---|
graphqlService | GraphqlService |
strategiesService | StrategiesService |
loginDataService | UserLoginDataService |
imsUserService | UserLoginDataImsUserService |
backendUserService | BackendUserService |
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:28
Properties
backendUserService
• Private Readonly backendUserService: BackendUserService
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:33
graphqlService
• Private Readonly graphqlService: GraphqlService
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:29
imsUserService
• Private Readonly imsUserService: UserLoginDataImsUserService
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:32
logger
• Private Readonly logger: Logger
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:27
loginDataService
• Private Readonly loginDataService: UserLoginDataService
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:31
strategiesService
• Private Readonly strategiesService: StrategiesService
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:30
Methods
checkFieldsDirectly
▸ Private checkFieldsDirectly(node, requiredTemplatedValues, fieldsToCheck?): boolean
Checks if the values of the specified fields on the templatedValues match the values of those fields on the node
Deletes the keys that were compared from templatedValue
Can be used directly on e.g. the ims as node to check the description or on the templated fields of the ims to check those
Parameters
| Name | Type | Description |
|---|---|---|
node | object | The node object containing all values of keys to potentially check |
requiredTemplatedValues | object | The values that the node object must match to pass. All fields to check will be deleted from this object |
fieldsToCheck? | string[] | The names of the fields that should be checked for equivalence on the node object directly instead of on its templated fields. If not given, all keys of templatedFields will be matched |
Returns
boolean
true iff all specified keys that the templatedValues had a value fore matched, false else
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:78
checkIfInstanceMatches
▸ Private checkIfInstanceMatches(strategy, instance, ims, imsTemplatedValues): Promise<boolean>
Parameters
| Name | Type |
|---|---|
strategy | Strategy |
instance | StrategyInstance |
ims | object |
imsTemplatedValues | Object |
Returns
Promise<boolean>
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:97
checkImsUserExists
▸ checkImsUserExists(imsUser): Promise<boolean>
Checks for the existance of a IMSUser with the neo4jid specified in the given UserLoginDataImsUser
Meant to check database consistency. For a properly created UserLoginDataImsUser this should always return true
Parameters
| Name | Type |
|---|---|
imsUser | UserLoginDataImsUser |
Returns
Promise<boolean>
true iff the UserLoginDataImsUser has a valid associated IMSUser in the backend
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:473
createAndLinkImsUsersForLoginData
▸ createAndLinkImsUsersForLoginData(loginData): Promise<UserLoginDataImsUser[]>
Performs IMSUser search creation and linkage
Steps:
- Searches all IMSUser instances in the backend that match the given login data.
- For IMSs which don't have a single matching IMSUser, creates new IMSUsers in the backend.
- For all found and created IMSUsers, finds existing ims user entities in the database
- If there is an ims user entity with a different login data, fails. Filters are to unprecise
- Creates new ims user entities for all found and created IMSUsers that don't have an entity yet
- If the login data has a user linked: For all created ims user entities links the corresponding IMSUser and GropiusUser
Parameters
| Name | Type | Description |
|---|---|---|
loginData | UserLoginData | The login data for which to perform ims user search and linking |
Returns
Promise<UserLoginDataImsUser[]>
A list of all ims user entitites created as result of the search (not including existing entities)
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:431
createAndLinkSingleImsUser
▸ createAndLinkSingleImsUser(imsUserId): Promise<UserLoginDataImsUser>
Parameters
| Name | Type |
|---|---|
imsUserId | string |
Returns
Promise<UserLoginDataImsUser>
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:252
createImsUserEntitiesForNeo4jIds
▸ Private createImsUserEntitiesForNeo4jIds(neo4jImsUserIds, loginData): Promise<UserLoginDataImsUser[]>
Creates and saves ims user entities for the given neo4jids and links them to the given login data object.
Caller must make sure, that no ims user entity for the given neo4j ids exist yet.
Parameters
| Name | Type | Description |
|---|---|---|
neo4jImsUserIds | string[] | The list of neo4j ids for which to create a ims user in the database |
loginData | UserLoginData | The login data to link with the newly created ims user |
Returns
Promise<UserLoginDataImsUser[]>
The list of all the ims user entites crated
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:402
createNewImsUserInBackendForLoginDataAndIms
▸ createNewImsUserInBackendForLoginDataAndIms(loginData, imsId): Promise<string>
Parameters
| Name | Type |
|---|---|
loginData | UserLoginData |
imsId | string |
Returns
Promise<string>
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:338
extractFieldsFromObject
▸ Private extractFieldsFromObject(data, fields): Object
Extracts a subset of fields from the given object, deletes them from the given object and returns them as seperate object
Parameters
| Name | Type | Description |
|---|---|---|
data | object | The object to extract fields from. This will be modified using delete |
fields | string[] | The names of the fields to remove from the object |
Returns
Object
An object with the extracted fields
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:157
findImsUserIdsForLoginData
▸ findImsUserIdsForLoginData(loginData): Promise<{ imsIdsWithoutImsUsers: string[] ; imsUserIds: string[] }>
Searches for IMSUsers that match the given login data as well as imss that don't have a single matching user
Works by searching for IMSs of which the templated fields (and direct values) match the object given by the strategy instance. Then on these IMSs searches for IMSUsers of which the templated fields (and direct values) match the object given by the login data.
Parameters
| Name | Type | Description |
|---|---|---|
loginData | UserLoginData | The login data instance to search imsUsers and imss for |
Returns
Promise<{ imsIdsWithoutImsUsers: string[] ; imsUserIds: string[] }>
The ims users that match the given logn data and all imss that have no ims user matching the given login data
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:296
findLoginDataForImsUser
▸ findLoginDataForImsUser(imsUserId): Promise<UserLoginData>
Parameters
| Name | Type |
|---|---|
imsUserId | string |
Returns
Promise<UserLoginData>
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:232
generateImsUserWithDifferentLoginDataError
▸ Private generateImsUserWithDifferentLoginDataError(imsUserNeo4jId, loginDataExpectedId, loginDataActualId): string
Throws an error with the following message: Text for when an ims user entity is found in the database, which has a different login data than the login data for which the ims user was found using matching of templated values on ims and ims users
Parameters
| Name | Type | Description |
|---|---|---|
imsUserNeo4jId | string | The neo4j id of the ims user that was found to have a conflice |
loginDataExpectedId | string | The database id of the login data that is currently being processed and for which the given ims user was found |
loginDataActualId | string | The database id of the login data that is already associated with the given ims user |
Returns
string
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:47
getKnownImsUsersForIds
▸ Private getKnownImsUsersForIds(imsUserIds): Promise<{ id: string ; imsUser: UserLoginDataImsUser ; loginDataId: string }[]>
Loads the ims user entities from the database for a given set of backend ids of ims users. Additionally fetches the id of the login data to which the entity belongs.
For every given id returns the given id, the ims user entity (if existing) and the login data id (if ims user entity exists). If ims user doesn't exist, just returns the given neo4jid
Parameters
| Name | Type | Description |
|---|---|---|
imsUserIds | string[] | The ist of neo4j/backend ids for which to fetch the ims user |
Returns
Promise<{ id: string ; imsUser: UserLoginDataImsUser ; loginDataId: string }[]>
The list of the ims user entities loaded for the given neo4j id and the id of the login data
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:378
getMatchingInstance
▸ Private getMatchingInstance(ims, imsTemplatedValues): Promise<{ instance: StrategyInstance ; strategy: Strategy }>
Parameters
| Name | Type |
|---|---|
ims | object |
imsTemplatedValues | Object |
Returns
Promise<{ instance: StrategyInstance ; strategy: Strategy }>
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:117
getMatchingLoginData
▸ getMatchingLoginData(matchingInstance, matchingStrategy, imsUserTemplatedValues, imsUser): Promise<UserLoginData>
Parameters
| Name | Type |
|---|---|
matchingInstance | StrategyInstance |
matchingStrategy | Strategy |
imsUserTemplatedValues | object |
imsUser | Object |
imsUser.displayName | string |
imsUser.email? | string |
imsUser.id | string |
imsUser.username? | string |
Returns
Promise<UserLoginData>
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:192
transformObjectToFilterObject
▸ Private transformObjectToFilterObject(data): Object
Converts an object of string keys and values to an object with the same keys where the values are wrapped as a filter for graphql.
Example:
- Input:
{test: "123", other: "key"} - Output:
{test: {eq: "123"}, other: {eq: "key"}}
Parameters
| Name | Type | Description |
|---|---|---|
data | Object | The object for which to wrap the values in (string) filters |
Returns
Object
The filter object
Defined in
gropius-login-service/backend/src/backend-services/ims-user-finding.service.ts:177