{"id":16144571,"url":"https://github.com/reenphygeorge/smol-auth","last_synced_at":"2025-03-18T17:31:52.403Z","repository":{"id":210699113,"uuid":"708289940","full_name":"reenphygeorge/smol-auth","owner":"reenphygeorge","description":"A smol authentication package with RBAC 🔐 ","archived":false,"fork":false,"pushed_at":"2024-01-06T15:36:36.000Z","size":260,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-11T19:48:19.879Z","etag":null,"topics":["jwt","kysely","npm","postgresql","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reenphygeorge.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-22T05:14:27.000Z","updated_at":"2024-01-02T17:37:43.000Z","dependencies_parsed_at":"2024-10-27T18:25:30.504Z","dependency_job_id":"a36fbe73-5b7c-4ccc-9d50-c3a7c1422ed0","html_url":"https://github.com/reenphygeorge/smol-auth","commit_stats":null,"previous_names":["reenphygeorge/smol-auth"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reenphygeorge%2Fsmol-auth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reenphygeorge%2Fsmol-auth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reenphygeorge%2Fsmol-auth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reenphygeorge%2Fsmol-auth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reenphygeorge","download_url":"https://codeload.github.com/reenphygeorge/smol-auth/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243944565,"owners_count":20372831,"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":["jwt","kysely","npm","postgresql","typescript"],"created_at":"2024-10-10T00:13:35.815Z","updated_at":"2025-03-18T17:31:52.005Z","avatar_url":"https://github.com/reenphygeorge.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n  \u003cimg src=\"https://res.cloudinary.com/rxg/image/upload/v1701412436/smol-auth/smol-removebg-preview_1_ssj3gm.png\" height=\"150\"/\u003e\n  \u003c/p\u003e\n  \u003cb\u003e A smol authentication package with RBAC 🔐 \u003c/b\u003e\n\u003c/div\u003e\n\n## Guide to smol\n\n#### Integrate smol-auth with your project\n\n##### For Backend\n\n1. Install the packages\n\n        npm i smol-auth-express\n\n2. Setup an env file with accessToken \u0026 RefreshToken secrets which are long strings. You can generate it by running the following commands:\n\n        node -e \"console.log(require('crypto').randomBytes(32).toString('hex'));\"\n\n3. Initialize smol service\n\n        import { validateUser, smol } from 'smol-auth-express';\n        import express from 'express';\n\n        const app = express();\n\n        const smolConfig = {\n          connectionUrl: process.env.DB_URL,\n          accessTokenSecret: process.env.ACCESS_TOKEN_SECRET,\n          refreshTokenSecret: process.env.REFRESH_TOKEN_SECRET,\n          clientDomain: process.env.WEBSITE_DOMAIN\n        }\n\n        smol()\n          .init(app, smolConfig)\n\n`Only Express \u0026 postgreSQL (auth db) is supported`\n\n###### RBAC\n1. Basic Role: To grant broad permissions to a role, use the `*` wildcard. For example:\n\n        smol()\n          .addRoles({\n              admin: '*',\n          }, { defaultRole: 'admin' })\n          .init(app, smolConfig)\n\n2. Multiple \u0026 Specific Roles: To specify permissions for a role on a particular route and method, use an array. For example:\n\n        smol()\n        .addRoles({\n            admin: '*',\n            user: [{ route: '/posts', method: '*' }],\n            viewer: [{ route: '/posts', method: ['GET'] }]\n        }, { defaultRole: 'viewer' })\n        .init(app, smolConfig)\n\n`Default Role is required for now`\n\n##### For Frontend\n\n1. Install the packages\n\n        npm i smol-auth-client\n\n2. Initialize smolClient\n\n        import { smolClient } from 'smol-auth-client'\n\n        smolClient(process.env.API_DOMAIN)\n\n3. Use the corresponding functions\n\n        import { signin, signup, getAuthId, signout } from 'smol-auth-client'\n        \n        const signupData = await signup(email, password)\n\n        const signinData = await signin(email, password)\n        \n        const authId = await getAuthId()\n        \n        await signout()\n\n\n#### Try with our example app\n\n1. Clone the repo \n\n        git clone https://github.com/reenphygeorge/smol-auth\n\n2. Install all required packages\n\n        npm run install:all\n\n3. Build smol-packages\n\n        npm run build\n\n4. Start Example API Service\n\n        npm run start-example:api\n\n5. Start Example Client Service\n\n        npm run start-example:client\n\n6. Connect [NocoDB](https://docs.nocodb.com/data-sources/connect-to-data-source/) to the auth db for dashboard\n\n        http://localhost:8080\n\n7. To stop docker containers after exit\n\n        npm run docker:stop\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freenphygeorge%2Fsmol-auth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freenphygeorge%2Fsmol-auth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freenphygeorge%2Fsmol-auth/lists"}