mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-16 01:26:44 +00:00
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import { Container } from 'typedi';
|
|
|
|
import type { User } from '@/databases/entities/user';
|
|
import { UserRepository } from '@/databases/repositories/user.repository';
|
|
import { AuthError } from '@/errors/response-errors/auth.error';
|
|
import { EventService } from '@/events/event.service';
|
|
import { isLdapLoginEnabled } from '@/ldap.ee/helpers.ee';
|
|
import { PasswordUtility } from '@/services/password.utility';
|
|
|
|
export const handleEmailLogin = async (
|
|
email: string,
|
|
password: string,
|
|
): Promise<User | undefined> => {
|
|
const user = await Container.get(UserRepository).findOne({
|
|
where: { email },
|
|
relations: ['authIdentities'],
|
|
});
|
|
|
|
if (user?.password && (await Container.get(PasswordUtility).compare(password, user.password))) {
|
|
return user;
|
|
}
|
|
|
|
// At this point if the user has a LDAP ID, means it was previously an LDAP user,
|
|
// so suggest to reset the password to gain access to the instance.
|
|
const ldapIdentity = user?.authIdentities?.find((i) => i.providerType === 'ldap');
|
|
if (user && ldapIdentity && !isLdapLoginEnabled()) {
|
|
Container.get(EventService).emit('login-failed-due-to-ldap-disabled', { userId: user.id });
|
|
|
|
throw new AuthError('Reset your password to gain access to the instance.');
|
|
}
|
|
|
|
return undefined;
|
|
};
|