The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/server/lib/ldap/DataConverter.ts

42 lines
1.4 KiB

import { VirtualDataConverter } from '../../../app/importer/server/classes/VirtualDataConverter';
import { IImportUser } from '../../../definition/IImportUser';
import type { IUser } from '../../../definition/IUser';
import type { IConverterOptions } from '../../../app/importer/server/classes/ImportDataConverter';
import { Logger } from '../logger/Logger';
import { Users } from '../../../app/models/server/raw';
import { settings } from '../../../app/settings/server';
const logger = new Logger('LDAP Data Converter');
export class LDAPDataConverter extends VirtualDataConverter {
private mergeExistingUsers: boolean;
constructor(virtual = true, options?: IConverterOptions) {
super(virtual, options);
this.setLogger(logger);
this.mergeExistingUsers = settings.get<boolean>('LDAP_Merge_Existing_Users') ?? true;
}
findExistingUser(data: IImportUser): IUser | undefined {
if (data.services?.ldap?.id) {
const importedUser = Promise.await(Users.findOneByLDAPId(data.services.ldap.id, data.services.ldap.idAttribute));
if (importedUser) {
return importedUser;
}
}
if (!this.mergeExistingUsers) {
return;
}
// Search by email and username
return super.findExistingUser(data);
}
static convertSingleUser(userData: IImportUser, options?: IConverterOptions): void {
const converter = new LDAPDataConverter(true, options);
converter.addUser(userData);
converter.convertUsers();
}
}