Patch LDAP issue

This commit is contained in:
Tuan Dang
2024-04-23 21:16:55 -07:00
parent f3fc898232
commit a54d156bf0
3 changed files with 36 additions and 38 deletions
+4 -11
View File
@@ -103,16 +103,10 @@ export const registerLdapRouter = async (server: FastifyZodProvider) => {
: {})
});
ldapClient.bind(ldapConfig.bindDN, ldapConfig.bindPass, (err) => {
if (err) {
ldapClient.unbind();
return cb(err);
}
const groupFilter =
const groupFilter = "(|(memberUid={{.Username}})(member={{.UserDN}})(uniqueMember={{.UserDN}}))";
const searchFilter =
ldapConfig.groupSearchFilter ||
"(|(memberUid={{.Username}})(member={{.UserDN}})(uniqueMember={{.UserDN}}))";
const searchFilter = groupFilter.replace("{{.Username}}", user.uid).replace("{{.UserDN}}", user.dn);
groupFilter.replace("{{.Username}}", user.uid).replace("{{.UserDN}}", user.dn);
searchGroups(ldapClient, searchFilter, ldapConfig.groupSearchBase)
.then((groups) => {
@@ -134,10 +128,9 @@ export const registerLdapRouter = async (server: FastifyZodProvider) => {
})
.catch((err2) => {
ldapClient.unbind();
logger.error(err);
logger.error(err2);
cb(err2, false);
});
});
} catch (error) {
logger.error(error);
return cb(error, false);
@@ -14,19 +14,24 @@ export const searchGroups = async (
},
(err, res) => {
if (err) {
reject(err);
return reject(err);
}
const groups: { dn: string; cn: string }[] = [];
res.on("searchEntry", (entry) => {
groups.push({ dn: entry.object.dn, cn: entry.object.cn as string });
});
const dn = entry.dn.toString();
const regex = /cn=([^,]+)/;
const match = dn.match(regex);
// parse the cn from the dn
const cn = (match && match[1]) as string;
groups.push({ dn, cn });
});
res.on("error", (error) => {
console.error(`error: ${error.message}`);
reject(error);
});
res.on("end", () => {
resolve(groups);
});
@@ -191,7 +191,7 @@ export const authLoginServiceFactory = ({
const decodedProviderToken = validateProviderAuthToken(providerAuthToken, email);
authMethod = decodedProviderToken.authMethod;
if (isAuthMethodSaml(authMethod) && decodedProviderToken.orgId) {
if ((isAuthMethodSaml(authMethod) || authMethod === AuthMethod.LDAP) && decodedProviderToken.orgId) {
organizationId = decodedProviderToken.orgId;
}
}