fix: JSON parsing for user roles and offline counting sync

This commit is contained in:
2026-06-12 10:53:14 +03:30
parent cc85a78e45
commit aabcea3aeb
2 changed files with 12 additions and 2 deletions
+6 -1
View File
@@ -24,7 +24,12 @@ export async function POST(req) {
return Response.json({ error: 'رمز عبور اشتباه است.' }, { status: 401 }); return Response.json({ error: 'رمز عبور اشتباه است.' }, { status: 401 });
} }
let userRoles = Array.isArray(user.roles) ? user.roles : (user.role === 'ADMIN' ? ['ADMIN'] : ['COUNTER']); let parsedRoles = user.roles;
if (typeof parsedRoles === 'string') {
try { parsedRoles = JSON.parse(parsedRoles); } catch (e) { parsedRoles = null; }
}
let userRoles = Array.isArray(parsedRoles) ? parsedRoles : (user.role === 'ADMIN' ? ['ADMIN'] : ['COUNTER']);
const token = signToken({ id: user.id, username: user.username, name: user.name, orgId: user.orgId, roles: userRoles, role: user.role }); const token = signToken({ id: user.id, username: user.username, name: user.name, orgId: user.orgId, roles: userRoles, role: user.role });
@@ -41,7 +41,12 @@ export async function POST(req) {
where: { id: authenticator.id }, where: { id: authenticator.id },
data: { counter: BigInt(verification.authenticationInfo.newCounter) } data: { counter: BigInt(verification.authenticationInfo.newCounter) }
}); });
let userRoles = Array.isArray(user.roles) ? user.roles : (user.role === 'ADMIN' ? ['ADMIN'] : ['COUNTER']); let parsedRoles = user.roles;
if (typeof parsedRoles === 'string') {
try { parsedRoles = JSON.parse(parsedRoles); } catch (e) { parsedRoles = null; }
}
let userRoles = Array.isArray(parsedRoles) ? parsedRoles : (user.role === 'ADMIN' ? ['ADMIN'] : ['COUNTER']);
const token = signToken({ id: user.id, username: user.username, name: user.name, roles: userRoles, role: user.role }); const token = signToken({ id: user.id, username: user.username, name: user.name, roles: userRoles, role: user.role });
return NextResponse.json({ verified: true, token, user: { id: user.id, name: user.name, roles: userRoles, role: user.role } }); return NextResponse.json({ verified: true, token, user: { id: user.id, name: user.name, roles: userRoles, role: user.role } });
} }