reset.tsx 974 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { Handlers } from "$fresh/server.ts";
  2. import {
  3. checkToken,
  4. getCryptoString,
  5. makeErrorResponse,
  6. makeSuccessResponse,
  7. setToken,
  8. } from "utils/server.ts";
  9. import { find, insert, update } from "utils/db.ts";
  10. export const handler: Handlers = {
  11. async POST(req: Request) {
  12. const reqJson = await req.json();
  13. const tokenUserId = checkToken(req);
  14. if (tokenUserId && reqJson.old && reqJson.new) {
  15. const user = find(
  16. "User",
  17. {
  18. id: tokenUserId,
  19. },
  20. ["password"],
  21. );
  22. if (user.length > 0) {
  23. // Match old password
  24. if (
  25. await getCryptoString(reqJson.old, "MD5") === user[0][0] as string
  26. ) {
  27. // Store new password
  28. const newUser = update("User", tokenUserId, {
  29. password: await getCryptoString(reqJson.new, "MD5"),
  30. });
  31. return makeSuccessResponse(true);
  32. }
  33. }
  34. }
  35. return makeErrorResponse();
  36. },
  37. };