{"_id":"@analyticshub/alfa-auth-client","_rev":"9-e091dd8852dc08b204b8fafda82af79f","time":{"0.0.2-beta1":"2021-04-26T09:12:36.097Z","created":"2021-04-27T14:50:29.941Z","0.0.1":"2021-04-27T14:50:30.455Z","modified":"2022-04-04T13:55:04.590Z","0.0.2":"2021-05-18T16:02:31.339Z","0.0.3":"2021-05-18T18:08:28.154Z"},"name":"@analyticshub/alfa-auth-client","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"@analyticshub/alfa-auth-client","version":"0.0.1","description":"","main":"dist/index.js","private":false,"scripts":{"build":"tsc && babel src --extensions \".ts,.tsx\" -d dist","prettify":"prettier --write src","test":"echo \"Error: no test specified\" && exit 1","prepare":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/analyticshub-ru/alfa-auth-client.git"},"keywords":["auth","alfa-auth"],"license":"MIT","bugs":{"url":"https://github.com/analyticshub-ru/alfa-auth-client/issues"},"homepage":"https://github.com/analyticshub-ru/alfa-auth-client#readme","devDependencies":{"@babel/cli":"^7.13.16","@babel/core":"^7.13.16","@babel/plugin-proposal-class-properties":"^7.13.0","@babel/plugin-proposal-object-rest-spread":"^7.13.8","@babel/plugin-transform-runtime":"^7.13.15","@babel/preset-env":"^7.13.15","@babel/preset-typescript":"^7.13.0","@types/node":"^14.14.41","prettier":"^2.2.1","typescript":"^4.2.4"},"dependencies":{"@babel/runtime-corejs3":"^7.13.17","jwt-decode":"^3.1.2"},"gitHead":"5e2b857f0b728dbcae1a785c2e9ff0ff88a82102","_id":"@analyticshub/alfa-auth-client@0.0.1","_nodeVersion":"10.23.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Mlb64svt2oyAuD34Kd9y70C0ER1sR3FVg4yWj5+OIK42mbQ2nHlruFhR+xzni43oo6eCLVm/Y6CVEDvfHb8D3A==","shasum":"a5f6b997788a8786b5b3d8a5d2bcb4fa743c90d9","tarball":"https://registry.npmjs.org/@analyticshub/alfa-auth-client/-/alfa-auth-client-0.0.1.tgz","fileCount":26,"unpackedSize":22497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiCS2CRA9TVsSAnZWagAA9oIP/0YyNWojo0PL0/s84OB6\nqziZAmvistEC9fM1b/ynjfwZkVso3FR+UBqmw7e0N2r/JiWNsVxPQq9kn6jZ\nqFyrh8b48q8AtU+gNHM0AzPIIyJ7ii7456FXSPC1m9Tyb8OzRWY+MwyzL7ze\nFdickYAi7pS+8Cb5GoGH8KzYdFfs61M6OgoWzC8OJkgbd1NLfGFHqM+kqMiL\nvsOEcFmC0+jvf2thEGANVZ/l1iY051CHuuZOMm0ClYsDZBgScdh5vuxDMg5l\nBlhqBF/FXXTh/qVpiBi8jJc9DfZilj2HbLNhvFTol0WhBT2p4bJ67Mqhfgl6\n1cpdPqOd/sI1WZBGA/6noAet0DidH99XspYldmMP+QYLOmo8/epOWHZuHL37\nnLdUx8iCH0VyjQNGzPA8KaUgwIq62XxsaLsp6EavWD0ueevnwXQWZxtJQpIP\nepLy1V1F5RuJdckRgprYfApa6MihWM2zyJ4wporNPhbyJd0sclv5Ro1AB7s7\nQ1ZFEKQ1sQ0l5nRDz0MkncHkKLYSWjZXuSn0iWZ5OZOpRJX07p5bH79brn99\nGxJn2hzPaEZdl1e+5jo6EErc5OOqBI7brIzv8t0fED88B+i+a5nrkVgj0Khx\n1oke7PDxjTcxbbPF3aTbhvp4OrLVQrTK2uiR7zpHnen5ZJALkAHmfzJuOoZT\nqKnU\r\n=xD3q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEaGpSn7WeyFZuLLmThjLH+/msY7ufOGgqK9RB5ZNMmGAiBFhYhkq7hZ33jIbyYYzGPWZHPtbjIpmzgg220yOjXDCA=="}]},"_npmUser":{"name":"aahub","email":"aahub@mail.ru"},"directories":{},"maintainers":[{"name":"aahub","email":"aahub@mail.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alfa-auth-client_0.0.1_1619535030273_0.45304797296908217"},"_hasShrinkwrap":false},"0.0.3":{"name":"@analyticshub/alfa-auth-client","version":"0.0.3","description":"[@analyticshub/alfa-auth-client][server]","main":"dist/index.js","private":false,"scripts":{"build":"tsc && babel src --extensions \".ts,.tsx\" -d dist","prettify":"prettier --write src","test":"echo \"Error: no test specified\" && exit 1","prepare":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/analyticshub-ru/alfa-auth-client.git"},"keywords":["auth","alfa-auth"],"license":"MIT","bugs":{"url":"https://github.com/analyticshub-ru/alfa-auth-client/issues"},"homepage":"https://github.com/analyticshub-ru/alfa-auth-client#readme","devDependencies":{"@babel/cli":"^7.13.16","@babel/core":"^7.13.16","@babel/plugin-proposal-class-properties":"^7.13.0","@babel/plugin-proposal-object-rest-spread":"^7.13.8","@babel/plugin-transform-runtime":"^7.13.15","@babel/preset-env":"^7.13.15","@babel/preset-typescript":"^7.13.0","@types/node":"^14.14.41","prettier":"^2.2.1","typescript":"^4.2.4"},"dependencies":{"@babel/runtime-corejs3":"^7.13.17","jwt-decode":"^3.1.2"},"gitHead":"8d421dcbf1d92bfaf1e4c73100d80970b82336ce","_id":"@analyticshub/alfa-auth-client@0.0.3","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-5kKFDkw9EhoU4pVscN6tP617G2vBjMDhsdivSunZ6/1gDbE7nw3IPCug6jIhRxHtkQ4IGTzdUqXZA4WBFY+tZA==","shasum":"461f34b9cb57f019f33e4fa3934d7f0d0e4075b5","tarball":"https://registry.npmjs.org/@analyticshub/alfa-auth-client/-/alfa-auth-client-0.0.3.tgz","fileCount":24,"unpackedSize":25208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpAKcCRA9TVsSAnZWagAAEBAP/iZ64fX+Df23lBDjf/74\nsfKlU5ieznDeIbCb4P7Laq9JtvJQWKR8FjNWT3X8lOy6z5/D5nZyGO+oMS06\nKgZCmA9Gt7Htrh2WQs4SdZ3I1l7FInVcT/HItX40tfOqwhRhu1SFCSdlRyiM\nfJhQJqZ8LYuXN5q5xOEMdXim5WzhOgbnFdHFogcU5iqbTUuKa+k95hweXPys\nqym8n7a+RBf/ZoLN5MI1vUQHmxLbY9SDVUfoZubo0+qsL1mUO30ruGGrN6Mo\n+DIJRD8XMHCl4UgDRIspMYbPSKSIEJKFxnOq63uIQdIWKye1jVNloxIfS2OG\nSJ2sjMEqTOTVj+hGfWHBXF63LHw3y3uRCULmHIBzK5aats9cGsjx/rFoa5p5\n66Dmb0h1Ba5cJ+UHtTO45PtVKABV2DpVcoUu6VScHqMxe4V1eTl7WdrG0Kp2\nEeykEgbgdiGjnnX3P4XcbuN1b//dvZtGlWti3zd97S3H41fGO7CE9WHOR1LD\nbaMpU7f1mf9ybc0tMGpdHVQjZ+EEocz82pfyufUiTGzCMTRSD0y0l56q/YgH\nkqym4EQo4OXvBwCug6fOFykDuq9vE/hibM2+dp/FQzf6zcE7qKLBzM2xO4nA\ny57co2KFlwsS2eL5R4TcTDVGlDvyrew3YsTGHBA72GbjW3BIk1X9L3SRpD25\nuJeN\r\n=P3P9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFNCtq5FYYl43N5LVqnJp5psAGpFs02F6OFlqF0Sj70fAiEAqlWo/v5C3FcYVUtmeGEdbAxUP71t1+artKj0SsbNSAo="}]},"_npmUser":{"name":"aahub","email":"aahub@mail.ru"},"directories":{},"maintainers":[{"name":"aahub","email":"aahub@mail.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/alfa-auth-client_0.0.3_1621361307808_0.8604097994387787"},"_hasShrinkwrap":false}},"maintainers":[{"name":"aahub","email":"aahub@mail.ru"}],"homepage":"https://github.com/analyticshub-ru/alfa-auth-client#readme","keywords":["auth","alfa-auth"],"repository":{"type":"git","url":"git+https://github.com/analyticshub-ru/alfa-auth-client.git"},"bugs":{"url":"https://github.com/analyticshub-ru/alfa-auth-client/issues"},"license":"MIT","readme":"# Библиотека сервера авторизации\r\n\r\n[@analyticshub/alfa-auth-client][server]\r\n\r\n# Пример использования\r\n\r\n### Настройка\r\n\r\n##### 1. Подключите пакеты\r\n\r\n```\r\n// use npm\r\nnpm install @analyticshub/alfa-auth-client\r\n// use yarn\r\nyarn add @analyticshub/alfa-auth-client\r\n```\r\n\r\n##### 2. Добавьте ссылки на зависимости в ваш код\r\n\r\n```typescript\r\nimport { AuthService, LocalStorageTokenStorage } from \"@analyticshub/alfa-auth-client\";\r\n```\r\n\r\n##### 3. Подготовьте конфигурацию\r\n\r\n```typescript\r\n// тип для пользователя\r\ninterface IUserData {\r\n  id_user: string;\r\n  login: string;\r\n  groups: string[];\r\n}\r\n\r\n// базовый адрес сервера\r\nconst authServerBaseUrl = \"https://example-server.com\";\r\n\r\n// частота автоматического обновления токена (в секундах)\r\nconst refreshInterval = 300;\r\n```\r\n\r\n##### 4. Подготовьте хранилище для токена\r\n\r\n```typescript\r\nconst tokenStorage = new LocalStorageTokenStorage(\"authorization_token\")\r\n```\r\n\r\n##### 5. Запустите сервис\r\n\r\n```typescript\r\nconst authService = new AuthService<IUserData>({\r\n  baseUrl: authServerBaseUrl,\r\n  refreshTokenIntervalSeconds: refreshInterval,\r\n  storage: tokenStorage,\r\n})\r\n```\r\n\r\n##### 6. Получите токен\r\n\r\nТокен приходит как url-параметр. \r\n\r\nЕго нужно самостоятельно \"забрать\" из адресной строки в момент загрузки страницы.\r\n\r\n```typescript\r\nconst urlParams = new URLSearchParams(location.search);\r\nconst token = urlParams.get(\"token\");\r\nif (token) {\r\n  // установить токен\r\n  authService.setToken(token);\r\n  // удалить токен из адресной строки\r\n  urlParams.delete(\"token\");\r\n  history.replace(`${location.pathname}?${urlParams}`);\r\n}\r\n```\r\n\r\n### Получение данных токена и пользователя\r\n\r\n```typescript\r\nif (authService.isAuthorized) {\r\n  const token: string = authService.getToken();\r\n  const user: IUserData = authService.userPayload;\r\n}\r\n```\r\n\r\n### Протухание токена\r\n\r\nБиблиотека автоматически обновляет токен авторизации с указанным в конфигурации интервалом.\r\n\r\n> Токен может меняться, всегда используйте `authService.getToken()` в методах API.\r\n\r\nБиблиотека бросит исключение при попытке доступа к токену (или пользователю), если токен отсутствует.\r\n\r\n> Поймав исключение, следует отправить браузер на страницу входа путём вызова `error.redirectToAuth()`\r\n\r\n```typescript\r\nimport { AuthServiceError } from \"@analyticshub/alfa-auth-client\"\r\n\r\ntry {\r\n  const user = authService.userPayload;\r\n} catch (error) {\r\n  if (error instanceof AuthServiceError) {\r\n    await app.stashUsavedJobBeforeRedirect();\r\n    \r\n    error.redirectToAuth();\r\n  }\r\n}\r\n```\r\n\r\n> Вызов `authService.isAuthorized` не бросает исключения: его можно использовать для проверки.\r\n\r\nРедирект также можно вызвать в любой момент:\r\n```typescript\r\nauthService.redirectToAuth();\r\n```\r\n\r\nПосле авторизации сервер вернёт пользователя на ту же страницу, с которой совершён редирект.\r\n\r\n[server]: https://www.npmjs.com/package/@analyticshub/alfa-auth-client\r\n","readmeFilename":"README.md","description":"[@analyticshub/alfa-auth-client][server]"}