0.0.3 • Published 4 years ago

@analyticshub/alfa-auth-client v0.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

Библиотека сервера авторизации

@analyticshub/alfa-auth-client

Пример использования

Настройка

1. Подключите пакеты
// use npm
npm install @analyticshub/alfa-auth-client
// use yarn
yarn add @analyticshub/alfa-auth-client
2. Добавьте ссылки на зависимости в ваш код
import { AuthService, LocalStorageTokenStorage } from "@analyticshub/alfa-auth-client";
3. Подготовьте конфигурацию
// тип для пользователя
interface IUserData {
  id_user: string;
  login: string;
  groups: string[];
}

// базовый адрес сервера
const authServerBaseUrl = "https://example-server.com";

// частота автоматического обновления токена (в секундах)
const refreshInterval = 300;
4. Подготовьте хранилище для токена
const tokenStorage = new LocalStorageTokenStorage("authorization_token")
5. Запустите сервис
const authService = new AuthService<IUserData>({
  baseUrl: authServerBaseUrl,
  refreshTokenIntervalSeconds: refreshInterval,
  storage: tokenStorage,
})
6. Получите токен

Токен приходит как url-параметр.

Его нужно самостоятельно "забрать" из адресной строки в момент загрузки страницы.

const urlParams = new URLSearchParams(location.search);
const token = urlParams.get("token");
if (token) {
  // установить токен
  authService.setToken(token);
  // удалить токен из адресной строки
  urlParams.delete("token");
  history.replace(`${location.pathname}?${urlParams}`);
}

Получение данных токена и пользователя

if (authService.isAuthorized) {
  const token: string = authService.getToken();
  const user: IUserData = authService.userPayload;
}

Протухание токена

Библиотека автоматически обновляет токен авторизации с указанным в конфигурации интервалом.

Токен может меняться, всегда используйте authService.getToken() в методах API.

Библиотека бросит исключение при попытке доступа к токену (или пользователю), если токен отсутствует.

Поймав исключение, следует отправить браузер на страницу входа путём вызова error.redirectToAuth()

import { AuthServiceError } from "@analyticshub/alfa-auth-client"

try {
  const user = authService.userPayload;
} catch (error) {
  if (error instanceof AuthServiceError) {
    await app.stashUsavedJobBeforeRedirect();
    
    error.redirectToAuth();
  }
}

Вызов authService.isAuthorized не бросает исключения: его можно использовать для проверки.

Редирект также можно вызвать в любой момент:

authService.redirectToAuth();

После авторизации сервер вернёт пользователя на ту же страницу, с которой совершён редирект.