{"_id":"@caracal7/worker-auth-providers","name":"@caracal7/worker-auth-providers","dist-tags":{"latest":"0.0.13-beta.4"},"versions":{"0.0.13-beta.4":{"name":"@caracal7/worker-auth-providers","version":"0.0.13-beta.4","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/caracal7/worker-auth-providers.git"},"author":{"name":"Subh","email":"subhendukundu14@gmail.com"},"license":"MIT","scripts":{"build":"rm -rf dist && tsc"},"devDependencies":{"@cloudflare/workers-types":"^4.20221111.1","eslint":"^7.32.0","eslint-config-airbnb-base":"^14.2.1","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.23.4","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.2","prettier-eslint":"^13.0.0","typescript":"^4.8.4"},"dependencies":{"@aws-sdk/client-sns":"^3.245.0","@tsndr/cloudflare-worker-jwt":"^2.0.1","jose":"^4.14.4","query-string":"^7.0.1"},"_id":"@caracal7/worker-auth-providers@0.0.13-beta.4","gitHead":"dac03df5b65218afeda7eab2754174e12667c7d2","description":"<p align=\"center\"><img src=\"/logo.png\" alt=\"worker-auth-providers\" width=\"120px\"></p>","bugs":{"url":"https://github.com/caracal7/worker-auth-providers/issues"},"homepage":"https://github.com/caracal7/worker-auth-providers#readme","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-JBJ+Bo+KYGc6+EOLtaUs7u1MjHjI0dT7SlJ5Pw9Gs+jP+8kUwJpTfSKgeN8oSm1vonuQAtYReg05lGOixjKkyw==","shasum":"3390259132363b380e4c36a08256ccbf545f3ca7","tarball":"https://registry.npmjs.org/@caracal7/worker-auth-providers/-/worker-auth-providers-0.0.13-beta.4.tgz","fileCount":144,"unpackedSize":134884,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC08VJKTGoISdxcz43+InZoomcopcZ5aHcCtViX+1rXIgIgbdIViKRK3NQOQwQF/FBJ9anzycsDM1w/m+H8KiEXUZw="}]},"_npmUser":{"name":"caracal7","email":"caracal7@ya.ru"},"directories":{},"maintainers":[{"name":"caracal7","email":"caracal7@ya.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/worker-auth-providers_0.0.13-beta.4_1716287383519_0.9497839009936255"},"_hasShrinkwrap":false}},"time":{"created":"2024-05-21T10:29:43.439Z","0.0.13-beta.4":"2024-05-21T10:29:43.652Z","modified":"2024-05-21T10:29:43.898Z"},"maintainers":[{"name":"caracal7","email":"caracal7@ya.ru"}],"description":"<p align=\"center\"><img src=\"/logo.png\" alt=\"worker-auth-providers\" width=\"120px\"></p>","homepage":"https://github.com/caracal7/worker-auth-providers#readme","repository":{"type":"git","url":"git+https://github.com/caracal7/worker-auth-providers.git"},"author":{"name":"Subh","email":"subhendukundu14@gmail.com"},"bugs":{"url":"https://github.com/caracal7/worker-auth-providers/issues"},"license":"MIT","readme":"<p align=\"center\"><img src=\"/logo.png\" alt=\"worker-auth-providers\" width=\"120px\"></p>\n\n<h1 align=\"center\">worker-auth-providers</h1>\n\n<p align=\"center\">\nAn open-source auth providers for <a href=\"https://workers.cloudflare.com/\">Cloudflare workers</a>\n</p>\n\n<p align=\"center\">\n<img src=\"https://img.shields.io/github/repo-size/subhendukundu/worker-auth-providers?color=%23DA631D&label=Repo%20Size\" alt=\"Repo Size\">\n\n<img src=\"https://img.shields.io/github/issues/subhendukundu/worker-auth-providers?color=%23DA631D&label=Issues\" alt=\"Issues\">\n\n<img src=\"https://img.shields.io/github/issues-pr/subhendukundu/worker-auth-providers?color=%23DA631D&label=Pull%20Requests\" alt=\"Pull Requests\">\n\n<img src=\"https://img.shields.io/github/last-commit/subhendukundu/worker-auth-providers?color=%23DA631D&label=Last%20Commit\" alt=\"Last Commit\">\n\n\n</p>\nworker-auth-providers is an open-source providers to make authentication easy with workers. Very lightweight script which doesn't need a lot of dependencies. Plug it with any framework or template of workers.\n\n## 🚀 Demo\n[Try now](https://worker-auth-providers.coolbio.workers.dev)\n\n## 🧐 Features\n- Open Source\n- Fast & Lightweight\n- Easy\n\n\n## 🛠️ Installation\n**Step 1**: Install the dependencies\n```bash\nnpm install worker-auth-providers\n```\n**Step 2**: Import the dependencies\n```javascript\nimport {\n  github, google,\n  twilio, facebook, discord,\n  spotify\n} from \"worker-auth-providers\";\n```\n**Step 3**: Redirect users\n```javascript\nconst githubLoginUrl = await github.redirect({\n    options: {\n        clientId,\n    },\n});\nreturn {\n    status: 302,\n    headers: {\n        location: githubLoginUrl,\n    },\n};\n\n// or send otp\n\nconst res = await awsSNS.send({\n  options: {\n    phone,\n    region: 'ap-south-1',\n    kvProvider: WORKER_AUTH_PROVIDERS_STORE,\n  },\n})\n```\n**Step 4**: Get user\n```javascript\nconst { user: providerUser, tokens } = await github.users({\n    options: { clientSecret, clientId },\n    request,\n});\nconsole.log(\"[providerUser]\", providerUser);\n\n// or verify otp\nconst res = await awsSNS.verify({\n  options: {\n    phone,\n    otp,\n    kvProvider: WORKER_AUTH_PROVIDERS_STORE,\n    secret: 'eyJhbGciOiJIUzI1NiJ9.ew0KICAic3ViIjogIjE2Mjc4MTE1MDEiLA0KICAibmFtZSI6ICJoYWFsLmluIiwNCiAgImlhdCI6ICIwMTA4MjAyMCINCn0.aNr18szvBz3Db3HAsJ-2KHYbnnHwHfK65CiZ_AWwpc0',\n  },\n})\n```\n\n## 📃 Documentation\nComing soon\n\n## 👩‍💻 Tech\n- [Cloudflare](https://www.cloudflare.com/)\n\n## 🍰 Contributing\nContributions are always welcome!\nSee [contributing.md](contributing.md) for ways to get started.\nPlease adhere to this project's [code of conduct](code-of-conduct.md).\n\n\n## Roadmap\n\n- [ ] Docs.\n- [x] Apple.\n- [ ] Azure (Microsoft)\n- [x] Google.\n- [x] Github\n- [x] OTP Twilio\n- [x] Mailgun Email\n- [x] Sendgrid Email\n- [x] Facebook\n- [x] Discord\n- [ ] Instagram\n- [ ] Amazon\n- [ ] Twitter\n- [x] Spotify\n- [ ] Auth0\n\n\n##FAQs\n\n#### How to persist login?\n\nUse cookie. Setting a cookie to indicate that they’re authorized for future requests\n\n```javascript\nconst cookieKey = \"worker-auth-providers\"\nconst persistAuth = async exchange => {\n    const date = new Date()  date.setDate(date.getDate() + 1)\n    const headers = { \n      Location: \"/\",\n      \"Set-cookie\": `${cookieKey}=${id}; Secure; HttpOnly; SameSite=Lax; Expires=${date.toUTCString()}`,\n    }\n    return { headers, status: 302 }\n}\n```\n\n#### How to logout?\n\nEasy, delete the cookie\n\n```javascript\nexport const logout = event => {\n  const cookieHeader = event.request.headers.get('Cookie')\n  if (cookieHeader && cookieHeader.includes(cookieKey)) {\n    return {\n      headers: {\n        'Set-cookie': `${cookieKey}=\"\"; HttpOnly; Secure; SameSite=Lax;`,\n      },\n    }\n  }\n  return {}\n}\n```\n\n## Feedback\n\nIf you have any feedback, please reach out to me at subhendukundu14@gmail.com\n\n\n## ✍️ Authors\n- [@subhendukundu](https://www.github.com/subhendukundu)\n\n## 💼 License\n[MIT](https://github.com/subhendukundu/worker-auth-providers/blob/main/LICENSE)\n","readmeFilename":"README.md"}