25 lines
1005 B
JavaScript
25 lines
1005 B
JavaScript
/** Maps a backend error envelope's `error.code` to the client's AuthErrorCode screens. Only codes with a dedicated screen are mapped; anything else falls back to the HTTP-status-derived code via authErrorCodeFromStatus. */
|
|
const BACKEND_ERROR_CODE_MAP = {
|
|
TOKEN_EXPIRED: 'session-expired',
|
|
INVALID_SIGNATURE: 'invalid-signature',
|
|
UNAUTHENTICATED: 'unauthorized',
|
|
FORBIDDEN: 'forbidden',
|
|
SERVICE_UNAVAILABLE: 'backend-unavailable',
|
|
};
|
|
export function authErrorCodeFromBackendCode(code) {
|
|
return typeof code === 'string' ? BACKEND_ERROR_CODE_MAP[code] : undefined;
|
|
}
|
|
/** Maps a backend HTTP status to the AuthErrorCode screen it should route to. */
|
|
export function authErrorCodeFromStatus(status) {
|
|
switch (status) {
|
|
case 401:
|
|
return 'unauthorized';
|
|
case 403:
|
|
return 'forbidden';
|
|
case 0:
|
|
return 'backend-unavailable';
|
|
default:
|
|
return status >= 500 ? 'backend-unavailable' : 'unauthorized';
|
|
}
|
|
}
|