fix: refactor user discovery search

This commit is contained in:
Max Peintner
2024-12-06 10:53:44 +01:00
parent 5b6848780b
commit 2e5b3b710e
2 changed files with 100 additions and 49 deletions

View File

@@ -291,19 +291,24 @@ export async function createInviteCode(userId: string, host: string | null) {
);
}
export async function listUsers({
loginName,
userName,
email,
organizationId,
}: {
export type ListUsersCommand = {
loginName?: string;
userName?: string;
email?: string;
phone?: string;
organizationId?: string;
}) {
};
export async function listUsers({
loginName,
userName,
phone,
email,
organizationId,
}: ListUsersCommand) {
const queries: SearchQuery[] = [];
// either loginName or userName and email or phone are required
if (loginName) {
queries.push(
create(SearchQuerySchema, {
@@ -316,9 +321,57 @@ export async function listUsers({
},
}),
);
}
} else if (userName && (email || phone)) {
const userNameQuery = create(SearchQuerySchema, {
query: {
case: "userNameQuery",
value: {
userName: userName,
method: TextQueryMethod.EQUALS,
},
},
});
if (userName) {
const orQueries: SearchQuery[] = [userNameQuery];
if (email) {
const emailQuery = create(SearchQuerySchema, {
query: {
case: "emailQuery",
value: {
emailAddress: email,
method: TextQueryMethod.EQUALS,
},
},
});
orQueries.push(emailQuery);
}
if (phone) {
// TODO add after https://github.com/zitadel/zitadel/issues/9016 is merged
// const phoneQuery = create(SearchQuerySchema, {
// query: {
// case: "phoneQuery",
// value: {
// emailAddress: email,
// method: TextQueryMethod.EQUALS,
// },
// },
// });
// orQueries.push(phoneQuery);
}
queries.push(
create(SearchQuerySchema, {
query: {
case: "orQuery",
value: {
queries: orQueries,
},
},
}),
);
} else if (userName) {
queries.push(
create(SearchQuerySchema, {
query: {
@@ -345,19 +398,6 @@ export async function listUsers({
);
}
if (email) {
queries.push(
create(SearchQuerySchema, {
query: {
case: "emailQuery",
value: {
emailAddress: email,
},
},
}),
);
}
return userService.listUsers({ queries: queries });
}