mirror of
https://github.com/whyour/qinglong.git
synced 2025-11-09 16:16:07 +08:00
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { AuthInfo, TokenInfo } from '../data/system';
|
|
|
|
/**
|
|
* Validates if a token exists in the authentication info.
|
|
* Supports both legacy string tokens and new TokenInfo array format.
|
|
*
|
|
* @param authInfo - The authentication information
|
|
* @param headerToken - The token to validate
|
|
* @param platform - The platform (desktop, mobile)
|
|
* @returns true if the token is valid, false otherwise
|
|
*/
|
|
export function isValidToken(
|
|
authInfo: AuthInfo | null | undefined,
|
|
headerToken: string,
|
|
platform: string,
|
|
): boolean {
|
|
if (!authInfo || !headerToken) {
|
|
return false;
|
|
}
|
|
|
|
const { token = '', tokens = {} } = authInfo;
|
|
|
|
// Check legacy token field
|
|
if (headerToken === token) {
|
|
return true;
|
|
}
|
|
|
|
// Check platform-specific tokens (support both legacy string and new TokenInfo[] format)
|
|
const platformTokens = tokens[platform];
|
|
if (platformTokens) {
|
|
if (typeof platformTokens === 'string') {
|
|
// Legacy format: single string token
|
|
return headerToken === platformTokens;
|
|
} else if (Array.isArray(platformTokens)) {
|
|
// New format: array of TokenInfo objects
|
|
return platformTokens.some((t: TokenInfo) => t.value === headerToken);
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|