fix(api): better handle user attributes

This commit is contained in:
Artur
2024-10-03 13:02:40 -03:00
parent 8b11e2bde0
commit fc2086fcbe
2 changed files with 15 additions and 14 deletions

View File

@@ -74,15 +74,14 @@ export const accountRouter = router({
}
const user = await keycloak.users.findOne({ id: userId })
console.log(user)
if (!user || !user.id || !user.email || !user.attributes)
if (!user || !user.id || !user.email)
throw new TRPCError({
code: 'NOT_FOUND',
message: 'USER_NOT_FOUND',
})
let emailVerifyTokenVersion = parseInt(user.attributes.emailVerifyTokenVersion?.[0]) || null
let emailVerifyTokenVersion = parseInt(user.attributes?.emailVerifyTokenVersion?.[0]) || null
if (!emailVerifyTokenVersion) {
await keycloak.users.update(

View File

@@ -88,13 +88,14 @@ export const authRouter = router({
const user = await keycloak.users.findOne({ id: decoded.userId })
if (!user || !user.id || !user.attributes)
if (!user || !user.id)
throw new TRPCError({
code: 'NOT_FOUND',
message: 'USER_NOT_FOUND',
})
const emailVerifyTokenVersion = parseInt(user.attributes.emailVerifyTokenVersion?.[0]) || null
const emailVerifyTokenVersion =
parseInt(user.attributes?.emailVerifyTokenVersion?.[0]) || null
if (emailVerifyTokenVersion !== decoded.tokenVersion) {
throw new TRPCError({
@@ -125,14 +126,14 @@ export const authRouter = router({
const users = await keycloak.users.find({ email: input.email })
const user = users[0]
if (!user || !user.id || !user.attributes)
if (!user || !user.id)
throw new TRPCError({
code: 'NOT_FOUND',
message: 'USER_NOT_FOUND',
})
let passwordResetTokenVersion =
parseInt(user.attributes.passwordResetTokenVersion?.[0]) || null
parseInt(user.attributes?.passwordResetTokenVersion?.[0]) || null
if (!passwordResetTokenVersion) {
await keycloak.users.update(
@@ -187,21 +188,22 @@ export const authRouter = router({
await authenticateKeycloakClient()
const user = await keycloak.users.findOne({ id: decoded.userId })
if (!user || !user.attributes)
if (!user || !user.id || !user.email)
throw new TRPCError({
code: 'NOT_FOUND',
message: 'USER_NOT_FOUND',
})
const passwordResetTokenVersion =
parseInt(user.attributes.passwordResetTokenVersion?.[0]) || null
let passwordResetTokenVersion =
parseInt(user.attributes?.passwordResetTokenVersion?.[0]) || null
if (!passwordResetTokenVersion) {
console.error(`User ${user.id} has no passwordResetTokenVersion attribute`)
await keycloak.users.update(
{ id: user.id },
{ email: user.email, attributes: { passwordResetTokenVersion: 1 } }
)
throw new TRPCError({
code: 'INTERNAL_SERVER_ERROR',
})
passwordResetTokenVersion = 1
}
if (decoded.tokenVersion !== passwordResetTokenVersion)