All files / src/lib redirect.ts

0% Statements 0/13
0% Branches 0/8
0% Functions 0/2
0% Lines 0/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24                                               
export const getRedirectPath = (search: string): string | null => {
  // redirectクエリパラメータを取得
  const params = new URLSearchParams(search);
  const redirectParam = params.get('redirect');
 
  // 有効なパスかどうかを検証
  if (!redirectParam) return null;
  if (!redirectParam.startsWith('/') || redirectParam.startsWith('//')) {
    return null;
  }
  return redirectParam;
};
 
export const buildCallbackURL = (redirectPath: string | null): string => {
  // 環境変数からリダイレクトURLを取得し、必要に応じてredirectクエリパラメータを追加
  const baseRedirectURL = import.meta.env.VITE_CLIENT_URL satisfies string;
  if (!redirectPath) {
    // redirectパスがない場合、ルートのページのURLを返す
    return `${baseRedirectURL}/`;
  }
  // redirectパスがある場合、クエリパラメータとして追加して返す
  return `${baseRedirectURL}?redirect=${encodeURIComponent(redirectPath)}`;
};