{"id":19578652,"url":"https://github.com/pierrecabriere/rxjs-auth","last_synced_at":"2025-04-27T06:34:19.488Z","repository":{"id":65582533,"uuid":"300389633","full_name":"pierrecabriere/rxjs-auth","owner":"pierrecabriere","description":"Simple javascript auth-manager based on rxjs","archived":false,"fork":false,"pushed_at":"2024-09-25T10:19:35.000Z","size":87,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-01T03:04:59.508Z","etag":null,"topics":["authentication","browser","javascript","jwt","nodejs","rxjs"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pierrecabriere.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-01T18:50:39.000Z","updated_at":"2024-09-25T10:19:39.000Z","dependencies_parsed_at":"2023-01-30T14:35:10.881Z","dependency_job_id":null,"html_url":"https://github.com/pierrecabriere/rxjs-auth","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrecabriere%2Frxjs-auth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrecabriere%2Frxjs-auth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrecabriere%2Frxjs-auth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrecabriere%2Frxjs-auth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pierrecabriere","download_url":"https://codeload.github.com/pierrecabriere/rxjs-auth/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224062730,"owners_count":17249291,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","browser","javascript","jwt","nodejs","rxjs"],"created_at":"2024-11-11T07:12:30.980Z","updated_at":"2024-11-11T07:12:31.586Z","avatar_url":"https://github.com/pierrecabriere.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rxjs-auth\n\nSimple javascript auth-manager based on rxjs\n\n--\n\n## Usage\n\n### Create manager\n\n```ts\nimport RxjsAuth, { AuthTokenStorage } from \"rxjs-auth\";\n\nconst authmanager = RxjsAuth.create(\"myProjectIdentifier\", {\n  login: (credentials) =\u003e axios.post(\"/give-me-my-access-token\", credentials).then(res =\u003e res.data),\n  fetchUser: (token) =\u003e axios.post(\"/who-am-i\", { headers: { \"Authorization\": \"Bearer \" + token } }).then(res =\u003e res.data),\n  // optional\n  isUserLogged: (resFromFetchUser) =\u003e !!resFromFetchUser,\n  getAccessToken: (loginData) =\u003e loginData.accessToken,\n  getRefreshToken: (loginData) =\u003e loginData.refreshToken, \n  tokenStorage: AuthTokenStorage.localStorage // default value is memory\n});\n\nexport { authmanager };\n```\n\n### Enjoy !\n\nFirst, include access token in your requests headers with `getAccessToken()`\n\n```ts\naxios.interceptors.request.use(function(config) {\n  const accessToken = authmanager.getAccessToken();\n\n  if (token) {\n    config.headers.Authorization = `Bearer ${accessToken}`;\n  }\n\n  return config;\n});\n```\n\nThen, login with `login()`\n\n```ts\nconsole.log(authmanager.logged); // false\nconsole.log(authmanager.user); // null\nconsole.log(authmanager.loading); // false, true while authmanager is logging\nawait authmanager.login(credentials);\nconsole.log(authmanager.logged); // true\nconsole.log(authmanager.user); // ...\n```\n\n### Default configuration\n\n```ts\nconst defaultOptions: AuthClientOptions = {\n  isUserLogged: (data) =\u003e !!data \u0026\u0026 Object.keys(data).length \u003e 0,\n  tokenStorage: AuthTokenStorage.default,\n  getAccessToken: (data) =\u003e data,\n  getRefreshToken: () =\u003e null,\n};\n```\n\n### Subscribe\n\n```ts\nauthmanager.loadingSubject.subscribe(_loading =\u003e console.log(\"loading: \" + _loading));\nauthmanager.loggedSubject.subscribe(_logged =\u003e console.log(\"logged: \" + _logged));\nauthmanager.userSubject.subscribe(_user =\u003e console.log(\"user: \" + _user));\n```\n\n### Sync at startup\n\n```ts\n// Fetch the user from the previously stored token\nauthmanager.sync();\n```\n\n### Logout\n\n```ts\nauthmanager.logout();\n```\n\n### Update options\n\n```ts\nauthmanager.setOptions({\n    tokenStorage: AuthTokenStorage.cookie\n});\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierrecabriere%2Frxjs-auth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpierrecabriere%2Frxjs-auth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierrecabriere%2Frxjs-auth/lists"}