create-authenik8-app 2.0.3 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,71 +1,55 @@
1
- <<<<<<< HEAD
2
- <<<<<<< HEAD
3
-
4
-
5
- =======
6
- Good catch — then your README should reflect that. Don’t undersell what you already built.
7
-
8
- Let’s fix it properly.
9
- >>>>>>> 5471da4 (Update file README.md)
10
1
 
2
+ # Create-authenik8-app
11
3
 
12
- ---
13
4
 
14
- <<<<<<< HEAD
15
- =======
16
- ✅ Updated npm README (with RBAC included)
17
5
 
18
- Replace your README with this version:
6
+ <p align="center">
7
+ <b> A lightweight authentication infrastructure generator powered by an internal Identity Engine.</b>
8
+ </p>
19
9
 
20
- >>>>>>> 5471da4 (Update file README.md)
21
- # create-authenik8-app
22
10
 
23
- <p align="center">
24
- <b>Scaffold secure Express authentication APIs in seconds</b>
25
- </p>
26
- <<<<<<< HEAD
11
+ ![subtitle](https://readme-typing-svg.demolab.com?font=Fira+Code&size=18&pause=1000&color=00C2FF&width=600&lines=Production-ready+Auth+Generator;JWT+%2B+OAuth+%2B+Prisma+%2B+Redis;Identity+Engine+powered+authentication+system)
27
12
 
28
13
  <p align="center">
29
- JWT Refresh Tokens • Redis • RBAC • TypeScript • Express
14
+ <img src="./assets/giffy-ezgif.com-video-to-gif-converter.gif" width="600" />
30
15
  </p>
31
-
32
16
  ---
33
17
 
34
- ## 📦 Usage
18
+ ## Usage
35
19
 
36
20
  Create a new project:
37
21
 
38
- ```bash
22
+ bash
39
23
  npx create-authenik8-app my-app
40
24
 
41
25
  Then:
42
26
 
43
27
  cd my-app
44
- npm install
28
+ redis-server --daemonize yes
45
29
  npm run dev
46
- ```
30
+
47
31
 
48
32
  ---
49
33
 
50
34
  ## What you get instantly
51
35
 
52
- A fully working Express authentication starter with:
36
+ A fully working Express authentication starter with:
53
37
 
54
- JWT authentication (access + refresh tokens)
38
+ JWT authentication (access + refresh tokens)
55
39
 
56
- Secure refresh token rotation
40
+ Secure refresh token rotation
57
41
 
58
- Redis-based token storage
42
+ Redis-based token storage
59
43
 
60
- Role-Based Access Control (RBAC)
44
+ Role-Based Access Control (RBAC)
61
45
 
62
- TypeScript setup
46
+ TypeScript setup
63
47
 
64
- Express server preconfigured
48
+ Express server preconfigured
65
49
 
66
- Clean scalable folder structure
50
+ Clean scalable folder structure
67
51
 
68
- .env file generated automatically
52
+ .env file generated automatically
69
53
 
70
54
 
71
55
 
@@ -99,9 +83,8 @@ Redis (required for refresh tokens)
99
83
 
100
84
  ---
101
85
 
102
- ## Redis Setup
103
- ```
104
-
86
+ ## Redis Setup
87
+
105
88
  Local
106
89
 
107
90
  redis-server
@@ -110,228 +93,85 @@ Docker
110
93
 
111
94
  docker run -p 6379:6379 redis
112
95
 
113
- ```
96
+
114
97
  ---
115
98
 
116
99
  ## Environment Variables
117
100
 
118
101
  Generated automatically:
119
- ```
102
+
103
+
120
104
  JWT_SECRET=your-secret
121
105
  REFRESH_SECRET=your-refresh-secret
122
106
 
123
107
  REDIS_HOST=127.0.0.1
124
108
  REDIS_PORT=6379
125
109
 
126
- ```
110
+
111
+
127
112
  ---
128
113
 
114
+
115
+
129
116
  ## RBAC Example
130
- ```
131
- Example of a protected route:
132
117
 
118
+ Example of a protected route:
119
+ ``
133
120
  app.get("/admin", auth.requireAdmin, (req, res) => {
134
121
  res.json({ message: "Admin only route" });
135
122
  });
123
+ ``
136
124
 
137
- ```
138
125
  ---
139
-
140
- 📦 Powered by
126
+ ## Powered by
141
127
 
142
128
  authenik8-core
143
129
 
144
-
145
-
146
- ---
147
-
148
- ## Project Structure
149
- ```
150
-
151
- my-app/
152
- ├── src/
153
- │ |
154
- │ ├
155
- │ └── server.ts
156
- ├── .env
157
- ├── package.json
158
- └── tsconfig.json
159
-
160
- ```
161
- ---
162
-
163
- ## Notes
164
-
165
- Redis is required for refresh token handling
166
-
167
- This CLI generates a starter project, not a full framework
168
-
169
- RBAC is included via middleware (e.g. requireAdmin)
170
-
171
-
172
-
173
- ---
174
-
175
- ## Roadmap
176
-
177
- OAuth providers (Google, GitHub)
178
-
179
- Advanced RBAC (custom roles/permissions)
180
-
181
- Docker templates
182
-
183
- Admin dashboard
184
-
185
- Production presets
186
-
187
-
188
-
189
- ---
190
- # Create-authenik8-app
191
- =======
192
- # create-authenik8-app
193
- >>>>>>> 01efb21 (Update file README.md)
194
-
195
- <p align="center">
196
- <b>Scaffold secure Express authentication APIs in seconds</b>
197
- </p>
198
- =======
199
- >>>>>>> 5471da4 (Update file README.md)
200
-
201
- <p align="center">
202
- JWT • Refresh Tokens • Redis • RBAC • TypeScript • Express
203
- </p>
204
-
205
- ---
206
-
207
- ## Usage
208
-
209
- Create a new project:
210
-
211
- ```bash
212
- npx create-authenik8-app my-app
213
-
214
- Then:
215
-
216
- cd my-app
217
- npm install
218
- npm run dev
219
-
220
-
221
- ---
222
-
223
- ## What you get instantly
224
-
225
- A fully working Express authentication starter with:
226
-
227
- JWT authentication (access + refresh tokens)
228
-
229
- Secure refresh token rotation
230
-
231
- Redis-based token storage
232
-
233
- Role-Based Access Control (RBAC)
234
-
235
- TypeScript setup
236
-
237
- Express server preconfigured
238
-
239
- Clean scalable folder structure
240
-
241
- .env file generated automatically
242
-
243
-
244
-
245
- ---
246
-
247
- 🧠 Why Authenik8?
248
-
249
- Authentication systems usually require:
250
-
251
- manual JWT setup
252
-
253
- refresh token handling
254
-
255
- Redis/session configuration
256
-
257
- access control logic
258
-
259
-
260
- Authenik8 provides all of this out of the box so you can start building your API immediately.
261
-
262
-
263
- ---
264
-
265
- Requirements
266
-
267
- Node.js 18+
268
-
269
- Redis (required for refresh tokens)
270
-
271
-
272
-
273
130
  ---
274
131
 
275
- Redis Setup
276
- ```
132
+ ## Design Goal
133
+ Authenik8 is not an auth library.
134
+ It is an auth system generator.
135
+ It removes setup time and enforces consistent backend security patterns by default.
277
136
 
278
- Local
137
+ Authenik8 treats authentication as an identity resolution problem, not just a login system.
279
138
 
280
- redis-server
139
+ At the core is an Identity Engine that ensures consistent user identity across:
140
+ - credentials (email/password)
141
+ - OAuth providers
142
+ - future authentication strategies
281
143
 
282
- Docker
283
-
284
- docker run -p 6379:6379 redis
285
- ```
286
144
  ---
287
145
 
288
- Environment Variables
289
-
290
- Generated automatically:
291
- ```
292
- JWT_SECRET=your-secret
293
- REFRESH_SECRET=your-refresh-secret
294
-
295
- REDIS_HOST=127.0.0.1
296
- REDIS_PORT=6379
297
- ```
146
+ ## OAuth
147
+ • Google
148
+ Github
149
+ OAuth in Authenik8 is not a direct provider integration layer.
298
150
 
299
- ---
151
+ It is implemented through an internal Identity Engine that sits inside `authenik8-core`.
300
152
 
301
- RBAC Example
153
+ The Identity Engine is responsible for:
154
+ - Resolving OAuth profiles into system identities
155
+ - Handling login vs account linking flows
156
+ - Preventing duplicate identity creation across providers
157
+ - Normalizing provider-specific user data into a unified schema
302
158
 
303
- Example of a protected route:
304
- ```
305
- app.get("/admin", auth.requireAdmin, (req, res) => {
306
- res.json({ message: "Admin only route" });
307
- });
308
- ```
159
+ This allows OAuth support to remain consistent regardless of provider complexity.
309
160
 
310
161
  ---
311
162
 
312
- 📦 Powered by
163
+ ### Production Enhancements
313
164
 
314
- authenik8-core
165
+ - PM2 cluster mode support
166
+ - Auto restart on crashes
167
+ - Memory usage guardrails
168
+ - Basic security middleware (helmet, rate limiting)
315
169
 
316
170
 
317
171
 
318
172
  ---
319
173
 
320
- 📁 Project Structure
321
-
322
- my-app/
323
- ├── src/
324
- │ ├
325
- │ ├
326
- │ └── server.ts
327
- ├── .env
328
- ├── package.json
329
- └── tsconfig.json
330
-
331
-
332
- ---
333
-
334
- 📌 Notes
174
+ ## Notes
335
175
 
336
176
  Redis is required for refresh token handling
337
177
 
@@ -343,9 +183,7 @@ RBAC is included via middleware (e.g. requireAdmin)
343
183
 
344
184
  ---
345
185
 
346
- 🧱 Roadmap
347
-
348
- OAuth providers (Google, GitHub)
186
+ ## Roadmap
349
187
 
350
188
  Advanced RBAC (custom roles/permissions)
351
189
 
package/dist/bin/index.js CHANGED
@@ -7,6 +7,85 @@ import { ExitPromptError } from "@inquirer/core";
7
7
  import ora from "ora";
8
8
  import { execSync } from "child_process";
9
9
  import { fileURLToPath } from "url";
10
+ import { spawnSync } from "child_process";
11
+ import os from "os";
12
+ function step(name, fn) {
13
+ return { name, fn };
14
+ }
15
+ let state = {};
16
+ let answers = {};
17
+ const stateFile = (project) => path.join(process.cwd(), project, ".authenik8-state.json");
18
+ function saveState(project, state) {
19
+ fs.ensureDirSync(path.join(process.cwd(), project));
20
+ fs.writeJsonSync(stateFile(project), state, { spaces: 2 });
21
+ }
22
+ function loadState(project) {
23
+ const file = stateFile(project);
24
+ if (!fs.existsSync(file))
25
+ return null;
26
+ return fs.readJsonSync(file);
27
+ }
28
+ function clearState(project) {
29
+ const file = stateFile(project);
30
+ if (fs.existsSync(file))
31
+ fs.removeSync(file);
32
+ }
33
+ const isResume = process.argv.includes("--resume");
34
+ const platform = os.platform();
35
+ // 'linux' | 'darwin' | 'win32'
36
+ const isTermux = process.env.PREFIX?.includes("com.termux") ||
37
+ process.env.TERMUX === "true";
38
+ function getBestHashLib() {
39
+ if (isTermux)
40
+ return "bcryptjs"; // argon2 breaks here
41
+ if (platform === "win32")
42
+ return "bcryptjs";
43
+ // avoids build tools issues for most users
44
+ if (platform === "darwin")
45
+ return "argon2";
46
+ // mac usually fine
47
+ if (platform === "linux")
48
+ return "argon2";
49
+ // but still fallback later if needed
50
+ return "bcryptjs";
51
+ }
52
+ function createSaver(projectName, ctx) {
53
+ return (step, extra) => {
54
+ saveState(projectName, {
55
+ step,
56
+ projectName,
57
+ ...ctx.state,
58
+ ...ctx.answers,
59
+ ...extra,
60
+ });
61
+ };
62
+ }
63
+ function generateHashModule(hashLib) {
64
+ if (hashLib === "argon2") {
65
+ return `
66
+ import argon2 from "argon2";
67
+
68
+ export const hashPassword = (password: string) => {
69
+ return argon2.hash(password);
70
+ };
71
+
72
+ export const comparePassword = (password: string, hash: string) => {
73
+ return argon2.verify(hash, password);
74
+ };
75
+ `;
76
+ }
77
+ return `
78
+ import bcrypt from "bcryptjs";
79
+
80
+ export const hashPassword = (password: string) => {
81
+ return bcrypt.hash(password, 10);
82
+ };
83
+
84
+ export const comparePassword = (password: string, hash: string) => {
85
+ return bcrypt.compare(password, hash);
86
+ };
87
+ `;
88
+ }
10
89
  const __filename = fileURLToPath(import.meta.url);
11
90
  const __dirname = path.dirname(__filename);
12
91
  const projectName = process.argv[2];
@@ -17,6 +96,32 @@ if (!projectName) {
17
96
  const isProduction = process.argv.includes("--production-ready");
18
97
  const targetDir = path.join(process.cwd(), projectName);
19
98
  let projectCreated = false;
99
+ const exists = fs.existsSync(targetDir);
100
+ if (isResume) {
101
+ }
102
+ if (exists && !isResume) {
103
+ const { action } = await inquirer.prompt([
104
+ {
105
+ type: "list",
106
+ name: "action",
107
+ message: `Folder "${projectName}" already exists. What do you want to do?`,
108
+ choices: [
109
+ { name: "Resume setup", value: "resume" },
110
+ { name: "Overwrite", value: "overwrite" },
111
+ { name: "Cancel", value: "cancel" },
112
+ ],
113
+ },
114
+ ]);
115
+ if (action === "resume") {
116
+ // trigger resume logic
117
+ }
118
+ if (action === "overwrite") {
119
+ await fs.remove(targetDir);
120
+ }
121
+ if (action === "cancel") {
122
+ process.exit(0);
123
+ }
124
+ }
20
125
  const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
21
126
  const cleanLogo = `
22
127
 
@@ -112,6 +217,7 @@ async function showBootLogo() {
112
217
  await sleep(800);
113
218
  boot.succeed("Engine ready");
114
219
  }
220
+ //const isResume = process.argv.includes("--resume");
115
221
  async function main() {
116
222
  await showBootLogo();
117
223
  if (process.argv.includes("--help")) {
@@ -122,6 +228,7 @@ Usage:
122
228
  create-authenik8-app <project-name>
123
229
 
124
230
  Options:
231
+ --resume Resume project setup(in development)
125
232
  --help Show this help message
126
233
  --production-ready production mode
127
234
  Features:
@@ -157,19 +264,19 @@ Available options:
157
264
  • Git initialization (optional)
158
265
  • OAuth + Auth
159
266
  `));
160
- // 🔥 PROMPTS
161
- const answers = await inquirer.prompt([
267
+ answers = await inquirer.prompt([
162
268
  {
163
269
  type: "list",
164
270
  name: "framework",
165
271
  message: "Choose framework:",
166
272
  choices: ["Express", "Fastify (coming soon)"],
273
+ default: state.framework ?? "Express",
167
274
  },
168
275
  {
169
276
  type: "confirm",
170
277
  name: "usePrisma",
171
278
  message: "Use Prisma?",
172
- default: true,
279
+ default: state.usePrisma ?? true,
173
280
  },
174
281
  {
175
282
  type: "list",
@@ -180,12 +287,13 @@ Available options:
180
287
  { name: "SQLite (quick start, limited features)", value: "sqlite" }
181
288
  ],
182
289
  when: (answers) => answers.usePrisma,
290
+ default: state.database ?? "sqlite",
183
291
  },
184
292
  {
185
293
  type: "confirm",
186
294
  name: "useGit",
187
295
  message: "Initialize git?",
188
- default: true,
296
+ default: state.useGit ?? true,
189
297
  }, {
190
298
  type: "list",
191
299
  name: "authMode",
@@ -195,11 +303,32 @@ Available options:
195
303
  { name: "Email + Password Auth", value: "auth" },
196
304
  { name: "Full Auth (Password + OAuth)", value: "auth-oauth" },
197
305
  ],
306
+ default: state.authMode ?? "base"
198
307
  }
199
308
  ]);
200
- // 🚫 Prevent overwrite
201
- if (fs.existsSync(targetDir)) {
202
- console.log(chalk.red("\n❌ Folder already exists"));
309
+ function assertRequired(value, name) {
310
+ if (value === undefined || value === null || value === "") {
311
+ console.log(`❌ Missing required input: ${name}`);
312
+ process.exit(1);
313
+ }
314
+ }
315
+ const finalConfig = {
316
+ ...state,
317
+ ...answers,
318
+ };
319
+ assertRequired(finalConfig.framework, "framework");
320
+ assertRequired(finalConfig.authMode, "authMode");
321
+ if (finalConfig.usePrisma && !finalConfig.database) {
322
+ finalConfig.database = "sqlite";
323
+ }
324
+ if (finalConfig.usePrisma) {
325
+ assertRequired(finalConfig.database, "database");
326
+ }
327
+ if (finalConfig.usePrisma && !answers.database && !state.database) {
328
+ console.log(chalk.gray("ℹ️ Defaulting to SQLite (quick start)"));
329
+ }
330
+ if (!answers.authMode || !answers.framework) {
331
+ console.log("❌ Invalid setup state. Restart CLI.");
203
332
  process.exit(1);
204
333
  }
205
334
  console.log(chalk.cyan("\n⚙️ Setting things up...\n"));
@@ -224,6 +353,47 @@ Available options:
224
353
  console.error(err);
225
354
  process.exit(1);
226
355
  }
356
+ let selectedHash = "bcryptjs"; // default safe fallback
357
+ if (answers.authMode !== "base") {
358
+ const authSpinner = ora("Installing password auth...").start();
359
+ selectedHash = getBestHashLib();
360
+ try {
361
+ spawnSync("npm", ["install", selectedHash], {
362
+ cwd: targetDir,
363
+ stdio: "ignore"
364
+ });
365
+ authSpinner.succeed(`Password auth ready ${selectedHash}`);
366
+ }
367
+ catch (err) {
368
+ if (selectedHash !== "bcryptjs") {
369
+ authSpinner.warn(`${selectedHash} failed, falling back to bcryptjs`);
370
+ spawnSync("npm", ["install", "bcryptjs"], {
371
+ cwd: targetDir,
372
+ stdio: "ignore",
373
+ });
374
+ selectedHash = "bcryptjs";
375
+ authSpinner.succeed("Password auth ready (bcryptjs fallback)");
376
+ }
377
+ else {
378
+ authSpinner.fail("Failed to install password auth");
379
+ process.exit(1);
380
+ }
381
+ }
382
+ }
383
+ const hashLib = getBestHashLib(); // or CLI decision
384
+ await fs.writeFile(path.join(targetDir, "src/utils/hash.ts"), generateHashModule(hashLib));
385
+ const deps = [];
386
+ if (hashLib === "argon2")
387
+ deps.push("argon2");
388
+ if (hashLib === "bcryptjs")
389
+ deps.push("bcryptjs");
390
+ if (deps.length) {
391
+ execSync(`npm install ${deps.join(" ")}`, {
392
+ cwd: targetDir,
393
+ stdio: "ignore",
394
+ });
395
+ }
396
+ ;
227
397
  if (answers.usePrisma) {
228
398
  const prismaSpinner = ora("Adding Prisma setup...").start();
229
399
  try {
@@ -299,21 +469,6 @@ Available options:
299
469
  pm2Spinner.fail("Failed to install PM2");
300
470
  }
301
471
  }
302
- if (answers.authMode !== "base") {
303
- const authSpinner = ora("Installing password auth...").start();
304
- try {
305
- execSync("npm install argon2", {
306
- cwd: targetDir,
307
- stdio: "ignore",
308
- });
309
- authSpinner.succeed("Password auth ready (argon2)");
310
- }
311
- catch (err) {
312
- authSpinner.fail("Failed to install password auth");
313
- console.error(err);
314
- process.exit(1);
315
- }
316
- }
317
472
  }
318
473
  if (answers.useGit) {
319
474
  const gitSpinner = ora("Initializing git...").start();
@@ -407,14 +562,6 @@ Run:
407
562
  `);
408
563
  }
409
564
  }
410
- process.on("SIGINT", async () => {
411
- console.log("\n👋 Authenik8 setup cancelled.");
412
- if (projectCreated && fs.existsSync(targetDir)) {
413
- await fs.remove(targetDir);
414
- console.log("🧹 Cleaned up incomplete project.");
415
- }
416
- process.exit(0);
417
- });
418
565
  main().catch(async (err) => {
419
566
  if (err instanceof ExitPromptError) {
420
567
  console.log("\n👋 Authenik8 setup cancelled.");
@@ -424,12 +571,5 @@ main().catch(async (err) => {
424
571
  }
425
572
  process.exit(0);
426
573
  }
427
- console.error("\n❌ Unexpected error:");
428
- console.error(err);
429
- if (projectCreated && fs.existsSync(targetDir)) {
430
- await fs.remove(targetDir);
431
- console.log("🧹 Cleaned up incomplete project.");
432
- }
433
- process.exit(1);
434
574
  });
435
575
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,34 +1,35 @@
1
1
  {
2
2
  "name": "create-authenik8-app",
3
- "version": "2.0.3",
4
- "description":"Create production-ready backend APIs in seconds. Authenik8 scaffolds Express + Prisma projects with JWT authentication, database setup (PostgreSQL or SQLite), and scalable architecture out of the box.",
3
+ "version": "2.0.5",
4
+ "description": "Create production-ready backend APIs in seconds. Authenik8 scaffolds Express + Prisma projects with JWT authentication, database setup (PostgreSQL or SQLite), and scalable architecture out of the box.",
5
5
  "bin": {
6
6
  "create-authenik8-app": "dist/bin/index.js"
7
7
  },
8
8
  "keywords": [
9
- "cli",
10
- "create-app",
11
- "express",
12
- "node",
13
- "typescript",
14
- "prisma",
15
- "auth",
16
- "authentication",
17
- "scaffold",
18
- "boilerplate",
19
- "starter",
20
- "backend",
21
- "jwt",
22
- "redis",
23
- "api",
24
- "nodejs-cli",
25
- "project-generator",
26
- "fullstack-backend"
27
- ],
28
- "license":"MIT",
29
- "author":"Karabo Seeisa",
9
+ "cli",
10
+ "create-app",
11
+ "express",
12
+ "node",
13
+ "typescript",
14
+ "prisma",
15
+ "auth",
16
+ "authentication",
17
+ "scaffold",
18
+ "boilerplate",
19
+ "starter",
20
+ "backend",
21
+ "jwt",
22
+ "redis",
23
+ "api",
24
+ "nodejs-cli",
25
+ "project-generator",
26
+ "fullstack-backend"
27
+ ],
28
+ "license": "MIT",
29
+ "author": "Karabo Seeisa",
30
30
  "type": "module",
31
31
  "dependencies": {
32
+ "argon2": "^0.44.0",
32
33
  "authenik8-core": "^1.0.3",
33
34
  "chalk": "^5.6.2",
34
35
  "fs-extra": "^11.3.4",
@@ -2,10 +2,11 @@ import express from "express";
2
2
  import { getAuth } from "./auth";
3
3
 
4
4
  const router = express.Router();
5
- const auth = getAuth();
6
5
 
7
- router.get("/protected", auth.requireAdmin, (req, res) => {
8
- res.json({ message: "Protected route" });
6
+ router.get("/protected", (req, res,next) => {
7
+ const auth = getAuth();
8
+ return auth.requireAdmin(req,res,next);},(req,res)=>{
9
+ res.json({ message: "Protected route" });
9
10
  });
10
11
 
11
12
  export default router;
@@ -2,7 +2,7 @@ import express from "express";
2
2
  import passwordRoutes from "./auth/password.route";
3
3
  import oauthRoutes from "./auth/oauth.routes";
4
4
  import protectedRoutes from "./auth/protected.routes";
5
- import { initAuth } from "./auth";
5
+ import { initAuth } from "./auth/auth";
6
6
  const app = express();
7
7
  app.use(express.json());
8
8
 
@@ -1,12 +0,0 @@
1
- import argon2 from "argon2";
2
-
3
- export const hashPassword = async (password: string): Promise<string> => {
4
- return argon2.hash(password);
5
- };
6
-
7
- export const comparePassword = async (
8
- password: string,
9
- hash: string
10
- ): Promise<boolean> => {
11
- return argon2.verify(hash, password);
12
- };
@@ -1,12 +0,0 @@
1
- import argon2 from "argon2";
2
-
3
- export const hashPassword = async (password: string): Promise<string> => {
4
- return argon2.hash(password);
5
- };
6
-
7
- export const comparePassword = async (
8
- password: string,
9
- hash: string
10
- ): Promise<boolean> => {
11
- return argon2.verify(hash, password);
12
- };