Parcourir la source

JWT token 產生,User JWT token 產生

kungtinglin il y a 6 ans
Parent
commit
8f806b14d0
4 fichiers modifiés avec 39 ajouts et 4 suppressions
  1. 4 3
      src/controllers/AuthController.ts
  2. 8 1
      src/routes.ts
  3. 13 0
      src/services/JWTService.ts
  4. 14 0
      src/services/UserService.ts

+ 4 - 3
src/controllers/AuthController.ts

@@ -1,11 +1,12 @@
 import { Request, Response } from 'express'
 import { User } from '../database/models/User'
+import UserService from '../services/UserService'
 
 class AuthController {
-  async echo(req: Request, res: Response) {
-    var users = await User.findByPk(1)
+  echo(req: Request, res: Response) {
+    var token = UserService.generateLoginToken(1)
 
-    res.json(users)
+    res.json({ token })
   }
 }
 

+ 8 - 1
src/routes.ts

@@ -1,4 +1,11 @@
-export const routes = [
+interface route {
+  url: string
+  method: string
+  action: string
+  middlewares?: string
+}
+
+export const routes: Array<route> = [
   {
     url: '/login',
     method: 'get',

+ 13 - 0
src/services/JWTService.ts

@@ -0,0 +1,13 @@
+import jwt from 'jsonwebtoken'
+
+function generateToken(payload: object, expiresIn: number) {
+  if (!process.env.JWT_SECRET) {
+    throw new Error('Please set JWT secret in your env file')
+  }
+
+  return jwt.sign(payload, process.env.JWT_SECRET, { expiresIn })
+}
+
+export default {
+  generateToken
+}

+ 14 - 0
src/services/UserService.ts

@@ -0,0 +1,14 @@
+import JWTService from './JWTService'
+
+function generateLoginToken(userId: number) {
+  return JWTService.generateToken(
+    {
+      id: userId
+    },
+    60 * 60 * 60
+  )
+}
+
+export default {
+  generateLoginToken
+}