Advertisement
Guest User

Untitled

a guest
Sep 16th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. export const secret: string = "RbBQqA6uF#ms%F8s7h*?@=95HUm&DGMDd6zLF74XzWQ6dtwXSJwBX#?gL2JWf!";
  2. export const length: number = 128;
  3. export const digest: string = "RbBQqA6uF#msRF8s";
  4.  
  5. export const secret: string = "RbBQqA6uF#ms%F8s7h*?@=95HUm&DGMDd6zLF74XzWQ6dtwXSJwBX#?gL2JWf!";
  6. export const length: number = 512;
  7. export const digest: string = "sha512";
  8.  
  9. import { Router, Response, Request, NextFunction } from "express";
  10. import { verify } from "jsonwebtoken";
  11. import { secret } from "../config";
  12.  
  13. const protectedRouter: Router = Router();
  14.  
  15. protectedRouter.use((request: Request & { headers: { authorization: string } }, response: Response, next: NextFunction) => {
  16. const token = request.headers.authorization;
  17.  
  18. verify(token, secret, function(tokenError) {
  19. if (tokenError) {
  20. return response.status(200).json({
  21. message: "Invalid token, please Log in first"
  22. });
  23. }
  24.  
  25. next();
  26. });
  27. });
  28.  
  29. protectedRouter.get("/", (request: Request, response: Response) => {
  30. response.json({
  31. text: "Greetings, you have valid token.",
  32. title: "Protected call"
  33. });
  34. });
  35.  
  36. export { protectedRouter }
  37.  
  38. import { Router, Request, Response, NextFunction } from "express";
  39. import { randomBytes, pbkdf2 } from "crypto";
  40. import { sign } from "jsonwebtoken";
  41. import { secret, length, digest } from "../config";
  42.  
  43. const loginRouter: Router = Router();
  44.  
  45. const user = {
  46. hashedPassword: "97fe86e10b558f6b0de6b20a4f22fae853bcce13723451999327976a2ca6fa4e7bb554c1cc0f262f8b0caa31ca967761" +
  47. "a5d283aa140e0b1388dbbcb42d58a07576564eb32cdf9e090820f17b5595a9c50f53b584089cbef4788c088e7fc6181080ec7" +
  48. "310b08edd3964d1a031aa1730b9d6a5ab91efea70e16350dd92d3f6c69e",
  49. salt: "joH3RgPYTAgRy/+cBbQGwy26fZE/fmzbmw2/v/DLoJWvF8QAUuzvFFTp9xcvh9BBoxB0E1E6e7bL/Gc4s+aYHCrLwYebXLMx0" +
  50. "P/VRWTPqvoUe7T1JrzCBdLK5yDvb5Vl2H5oB8hCe/Gb6fLP3/fQM7CKsAQJHJYwq8aj1N7ssjI=",
  51. username: "john"
  52. };
  53.  
  54. loginRouter.post("/signup", function (request: Request, response: Response, next: NextFunction) {
  55. if (!request.body.hasOwnProperty("password")) {
  56. let err = new Error("No password");
  57. return next(err);
  58. }
  59.  
  60. const salt = randomBytes(128).toString("base64");
  61.  
  62. pbkdf2(request.body.password, salt, 10000, length, digest, (err: Error, hash: Buffer) => {
  63. response.json({
  64. hashed: hash.toString("hex"),
  65. salt: salt
  66. });
  67. });
  68. });
  69.  
  70. // login method
  71. loginRouter.post("/", function (request: Request, response: Response, next: NextFunction) {
  72.  
  73. pbkdf2(request.body.password, user.salt, 10000, length, digest, (err: Error, hash: Buffer) => {
  74. if (err) {
  75. console.log(err);
  76. }
  77.  
  78. // check if password is active
  79. if (hash.toString("hex") === user.hashedPassword) {
  80.  
  81. const token = sign({"user": user.username, permissions: []}, secret, { expiresIn: "7d" });
  82. response.json({"jwt": token});
  83.  
  84. } else {
  85. response.json({message: "Wrong password"});
  86. }
  87.  
  88. });
  89. });
  90.  
  91. export { loginRouter }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement