reset.tsx 956 B

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