Skip to content

Commit

Permalink
fix(api/users): 🚑 Catch crash when keycloak user doesnt exist on search
Browse files Browse the repository at this point in the history
  • Loading branch information
Nudelsuppe42 committed Sep 15, 2024
1 parent 5be8412 commit 6170639
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 18 deletions.
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"actions",
"frontend/components",
"frontent/pages",
"frontend/blog"
"frontend/blog",
"api/users"
]
}
37 changes: 20 additions & 17 deletions apps/api/src/controllers/UserController.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { ApplicationStatus } from '@prisma/client';
import { Request, Response } from 'express';
import Core, { ExtendedPrismaClient } from '../Core.js';
import { ERROR_GENERIC, ERROR_NO_PERMISSION, ERROR_VALIDATION } from '../util/Errors.js';

import type KcAdminClient from '@keycloak/keycloak-admin-client';
import { ApplicationStatus } from '@prisma/client';
import { validationResult } from 'express-validator';
import { userHasPermissions } from '../web/routes/utils/CheckUserPermissionMiddleware.js';

Expand Down Expand Up @@ -611,22 +611,25 @@ async function searchUser(
},
},
});
const kcUsers = await Promise.all(
users?.map(async (user) => {
const kcUser = await kcAdmin.users.findOne({
id: user.ssoId,
});
const discordIdentity = kcUser.federatedIdentities.find((identity) => identity.identityProvider == 'discord');
return {
...user,
minecraft: kcUser?.attributes?.minecraft?.at(0) || null,
minecraftVerified: kcUser?.attributes?.minecraftVerified?.at(0) == 'true' || false,
createdAt: new Date(kcUser?.createdTimestamp || 0).toISOString(),
discordId: discordIdentity.userId,
discordName: discordIdentity.userName.replace('#0', ''),
};
}),
);
const kcUsers = (
await Promise.all(
users?.map(async (user) => {
const kcUser = await kcAdmin.users.findOne({
id: user.ssoId,
});
if (!kcUser) return null;
const discordIdentity = kcUser.federatedIdentities.find((identity) => identity.identityProvider == 'discord');
return {
...user,
minecraft: kcUser?.attributes?.minecraft?.at(0) || null,
minecraftVerified: kcUser?.attributes?.minecraftVerified?.at(0) == 'true' || false,
createdAt: new Date(kcUser?.createdTimestamp || 0).toISOString(),
discordId: discordIdentity.userId,
discordName: discordIdentity.userName.replace('#0', ''),
};
}),
)
).filter((user) => user != null);
return kcUsers;
}

Expand Down

0 comments on commit 6170639

Please sign in to comment.