File size: 1,007 Bytes
3bbb98d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
export const ADMIN_TOKEN_STORAGE_KEY = 'adminToken';

export const getAdminToken = (): string | null => {
  if (typeof window === 'undefined') return null;
  return localStorage.getItem(ADMIN_TOKEN_STORAGE_KEY);
};

export const setAdminToken = (token: string) => {
  if (typeof window === 'undefined') return;
  localStorage.setItem(ADMIN_TOKEN_STORAGE_KEY, token);
};

export const clearAdminToken = () => {
  if (typeof window === 'undefined') return;
  localStorage.removeItem(ADMIN_TOKEN_STORAGE_KEY);
};

export const withAdminTokenHeader = (headers: HeadersInit = {}): HeadersInit => {
  const token = getAdminToken();
  if (!token) return headers;

  return {
    ...headers,
    'x-admin-token': token,
  };
};

export const appendTokenToUrl = (url: string): string => {
  const token = getAdminToken();
  if (!token) return url;

  const [base, search] = url.split('?');
  const params = new URLSearchParams(search || '');
  params.set('token', token);
  return `${base}?${params.toString()}`;
};