Skip to content

Commit 9d2d2e6

Browse files
gnyiriGergely Nyiri
andauthored
feat: specialize ELI User Authorization (#1331)
Co-authored-by: Gergely Nyiri <gergely.nyiri@eli-alps.hu>
1 parent 8993574 commit 9d2d2e6

4 files changed

Lines changed: 25 additions & 8 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { ValidUserInfo } from '@user-office-software/openid/lib/model/ValidUserInfo';
2+
import { injectable } from 'tsyringe';
3+
4+
import { OAuthAuthorization } from './OAuthAuthorization';
5+
6+
@injectable()
7+
export class ELIUserAuthorization extends OAuthAuthorization {
8+
protected getUniqueId(user: ValidUserInfo) {
9+
return user.unique_id as string;
10+
}
11+
}

apps/backend/src/auth/OAuthAuthorization.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import 'reflect-metadata';
21
import { env } from 'process';
2+
import 'reflect-metadata';
33

44
import { logger } from '@user-office-software/duo-logger';
55
import { OpenIdClient } from '@user-office-software/openid';
@@ -128,9 +128,9 @@ export class OAuthAuthorization extends UserAuthorization {
128128
): Promise<User> {
129129
const client = await OpenIdClient.getInstance();
130130
const institution = await this.getOrCreateUserInstitution(userInfo);
131-
const userWithOAuthSubMatch = await this.userDataSource.getByOIDCSub(
132-
userInfo.sub
133-
);
131+
const userId = this.getUniqueId(userInfo);
132+
const userWithOAuthSubMatch =
133+
await this.userDataSource.getByOIDCSub(userId);
134134

135135
const userWithEmailMatch = await this.userDataSource.getByEmail(
136136
userInfo.email
@@ -146,7 +146,7 @@ export class OAuthAuthorization extends UserAuthorization {
146146
lastname: userInfo.family_name,
147147
oauthIssuer: client.issuer.metadata.issuer,
148148
oauthRefreshToken: tokenSet.refresh_token ?? '',
149-
oidcSub: userInfo.sub,
149+
oidcSub: userId,
150150
institutionId: institution?.id ?? user.institutionId,
151151
preferredname: userInfo.preferred_username,
152152
user_title: userInfo.title as string,
@@ -159,7 +159,7 @@ export class OAuthAuthorization extends UserAuthorization {
159159
userInfo.given_name,
160160
userInfo.family_name,
161161
userInfo.preferred_username ?? '',
162-
userInfo.sub,
162+
userId,
163163
tokenSet.refresh_token ?? '',
164164
client.issuer.metadata.issuer,
165165
institution?.id ?? 1,

apps/backend/src/auth/UserAuthorization.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import 'reflect-metadata';
2+
3+
import { ValidUserInfo } from '@user-office-software/openid/lib/model/ValidUserInfo';
24
import { container } from 'tsyringe';
35

46
import { Tokens } from '../config/Tokens';
@@ -33,6 +35,10 @@ export abstract class UserAuthorization {
3335
Tokens.AdminDataSource
3436
);
3537

38+
protected getUniqueId(user: ValidUserInfo) {
39+
return user.sub;
40+
}
41+
3642
isUserOfficer(agent: UserWithRole | null) {
3743
return agent?.currentRole?.shortCode === Roles.USER_OFFICER;
3844
}

apps/backend/src/config/dependencyConfigELI.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'reflect-metadata';
22

33
import { DataAccessUsersAuthorization } from '../auth/DataAccessUsersAuthorization';
4-
import { OAuthAuthorization } from '../auth/OAuthAuthorization';
4+
import { ELIUserAuthorization } from '../auth/ELIUserAuthorization';
55
import { ProposalAuthorization } from '../auth/ProposalAuthorization';
66
import { VisitAuthorization } from '../auth/VisitAuthorization';
77
import { VisitRegistrationAuthorization } from '../auth/VisitRegistrationAuthorization';
@@ -117,7 +117,7 @@ mapClass(Tokens.StatusDataSource, PostgresStatusDataSource);
117117
mapClass(Tokens.TagDataSource, PostgresTagDataSource);
118118

119119
mapClass(Tokens.ExperimentDataSource, PostgresExperimentDataSource);
120-
mapClass(Tokens.UserAuthorization, OAuthAuthorization);
120+
mapClass(Tokens.UserAuthorization, ELIUserAuthorization);
121121
mapClass(Tokens.ProposalAuthorization, ProposalAuthorization);
122122
mapClass(Tokens.DataAccessUsersAuthorization, DataAccessUsersAuthorization);
123123

0 commit comments

Comments
 (0)