Fix subuser token confusion in user auth flow

This commit is contained in:
Jeppe B
2026-06-01 22:35:24 +02:00
parent dd4c9da86c
commit fd4ec3dda2
2 changed files with 10 additions and 31 deletions
+9 -11
View File
@@ -100,9 +100,13 @@ class authentication implements authentication_i
public function validate_token(string $token): bool
{
// First: try validating as a classic user auth token
$dbToken = (new tokens_o())->getToken($token);
if ($dbToken && $dbToken->id) {
return true;
try {
$dbToken = (new tokens_o())->getToken($token);
if ($dbToken && $dbToken->id && $dbToken->type->value() === 'AUTH_TOKEN') {
return true;
}
} catch (Exception $e) {
// Ignore and continue with subuser session validation.
}
// Fallback: try validating as a subuser session token
$subuser = (new subusers_o())->getSubuserBySessionToken($token);
@@ -134,14 +138,8 @@ class authentication implements authentication_i
if (!$token->id) {
return false;
}
if ($token->type->value() === "AUTH_TOKEN_SUBUSER") {
// Get the customer number from the headers
if (!isset($headers['X-Customer-Number'])) {
return false;
}
$customer_number = (int)$headers['X-Customer-Number'];
// Get the user by the customer number
return (new users_o())->getUserByCustomerNumber($customer_number);
if ($token->type->value() !== 'AUTH_TOKEN') {
return false;
}
// Get the user from the database
return (new users_o())->getUserById($token->user_id->value());