Futa Arai 2 лет назад
Родитель
Сommit
c970adfeea

+ 1 - 1
apps/app/src/features/external-user-group/server/service/external-user-group-sync-service.integ.ts

@@ -8,7 +8,7 @@ import PassportService from '~/server/service/passport';
 
 
 import { ExternalGroupProviderType, ExternalUserGroupTreeNode } from '../../interfaces/external-user-group';
 import { ExternalGroupProviderType, ExternalUserGroupTreeNode } from '../../interfaces/external-user-group';
 
 
-import ExternalUserGroupSyncService from './external-user-group-sync-service';
+import ExternalUserGroupSyncService from './external-user-group-sync';
 
 
 
 
 // dummy class to implement generateExternalUserGroupTrees which returns test data
 // dummy class to implement generateExternalUserGroupTrees which returns test data

+ 2 - 3
apps/app/src/features/external-user-group/server/service/external-user-group-sync-service.ts → apps/app/src/features/external-user-group/server/service/external-user-group-sync.ts

@@ -72,7 +72,7 @@ abstract class ExternalUserGroupSyncService {
 
 
           // remove existing relations from list to create
           // remove existing relations from list to create
           const existingRelations = await ExternalUserGroupRelation.find({ relatedGroup: { $in: userGroupIds }, relatedUser: user._id });
           const existingRelations = await ExternalUserGroupRelation.find({ relatedGroup: { $in: userGroupIds }, relatedUser: user._id });
-          const existingGroupIds = existingRelations.map(r => r.relatedGroup);
+          const existingGroupIds = existingRelations.map(r => r.relatedGroup.toString());
           const groupIdsToCreateRelation = excludeTestIdsFromTargetIds(userGroupIds, existingGroupIds);
           const groupIdsToCreateRelation = excludeTestIdsFromTargetIds(userGroupIds, existingGroupIds);
 
 
           await ExternalUserGroupRelation.createRelations(groupIdsToCreateRelation, user);
           await ExternalUserGroupRelation.createRelations(groupIdsToCreateRelation, user);
@@ -104,8 +104,7 @@ abstract class ExternalUserGroupSyncService {
     const externalAccount = await getExternalAccount();
     const externalAccount = await getExternalAccount();
 
 
     if (externalAccount != null) {
     if (externalAccount != null) {
-      await externalAccount.populate('user');
-      return externalAccount.user;
+      return (await externalAccount.populate<{user: IUserHasId}>('user')).user;
     }
     }
     return null;
     return null;
   }
   }

+ 1 - 1
apps/app/src/features/external-user-group/server/service/ldap-user-group-sync-service.ts

@@ -6,7 +6,7 @@ import {
   ExternalGroupProviderType, ExternalUserGroupTreeNode, ExternalUserInfo, LdapGroupMembershipAttributeType,
   ExternalGroupProviderType, ExternalUserGroupTreeNode, ExternalUserInfo, LdapGroupMembershipAttributeType,
 } from '../../interfaces/external-user-group';
 } from '../../interfaces/external-user-group';
 
 
-import ExternalUserGroupSyncService from './external-user-group-sync-service';
+import ExternalUserGroupSyncService from './external-user-group-sync';
 
 
 class LdapUserGroupSyncService extends ExternalUserGroupSyncService {
 class LdapUserGroupSyncService extends ExternalUserGroupSyncService {
 
 

+ 1 - 1
apps/app/src/server/models/external-account.ts

@@ -15,7 +15,7 @@ const uniqueValidator = require('mongoose-unique-validator');
 
 
 const ObjectId = mongoose.Schema.Types.ObjectId;
 const ObjectId = mongoose.Schema.Types.ObjectId;
 
 
-interface ExternalAccountDocument extends IExternalAccount, Document {}
+export interface ExternalAccountDocument extends IExternalAccount, Document {}
 
 
 export interface ExternalAccountModel extends Model<ExternalAccountDocument> {
 export interface ExternalAccountModel extends Model<ExternalAccountDocument> {
   [x:string]: any, // for old methods
   [x:string]: any, // for old methods

+ 2 - 3
apps/app/src/server/service/external-account.ts

@@ -1,11 +1,10 @@
 import { ErrorV3 } from '^/../../packages/core/dist';
 import { ErrorV3 } from '^/../../packages/core/dist';
 
 
 import { LoginErrorCode } from '~/interfaces/errors/login-error';
 import { LoginErrorCode } from '~/interfaces/errors/login-error';
-import { IExternalAccountHasId } from '~/interfaces/external-account';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import { NullUsernameToBeRegisteredError } from '../models/errors';
 import { NullUsernameToBeRegisteredError } from '../models/errors';
-import ExternalAccount from '../models/external-account';
+import ExternalAccount, { ExternalAccountDocument } from '../models/external-account';
 
 
 import PassportService from './passport';
 import PassportService from './passport';
 
 
@@ -23,7 +22,7 @@ class ExternalAccountService {
   async getOrCreateUser(
   async getOrCreateUser(
       userInfo: {id: string, username: string, name?: string, email?: string},
       userInfo: {id: string, username: string, name?: string, email?: string},
       providerId: string,
       providerId: string,
-  ): Promise<IExternalAccountHasId | undefined> {
+  ): Promise<ExternalAccountDocument | undefined> {
     // get option
     // get option
     const isSameUsernameTreatedAsIdenticalUser = this.passportService.isSameUsernameTreatedAsIdenticalUser(providerId);
     const isSameUsernameTreatedAsIdenticalUser = this.passportService.isSameUsernameTreatedAsIdenticalUser(providerId);
     const isSameEmailTreatedAsIdenticalUser = this.passportService.isSameEmailTreatedAsIdenticalUser(providerId);
     const isSameEmailTreatedAsIdenticalUser = this.passportService.isSameEmailTreatedAsIdenticalUser(providerId);