server.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { crypto, toHashString, DigestAlgorithm } from "$crypto/mod.ts";
  2. import { setCookie, getCookies, deleteCookie } from "$http/cookie.ts";
  3. import { find } from "utils/db.ts";
  4. export async function getCryptoString(rawString: string, cryptoMethod: string) {
  5. const buffer = await crypto.subtle.digest(
  6. cryptoMethod as DigestAlgorithm,
  7. new TextEncoder().encode(rawString)
  8. );
  9. return toHashString(buffer);
  10. }
  11. export function checkToken(req: Request) {
  12. const cookies = getCookies(req.headers);
  13. if (cookies) {
  14. const token = find(
  15. "Token",
  16. {
  17. token: cookies["pd-user-token"] || "",
  18. },
  19. ["user_id"]
  20. );
  21. if (token.length > 0) {
  22. return token[0][0] as string;
  23. }
  24. }
  25. return false;
  26. }
  27. export function setToken(res: Response, token: string) {
  28. setCookie(res.headers, {
  29. name: "pd-user-token",
  30. value: token,
  31. path: "/",
  32. });
  33. }
  34. export function clearToken(res: Response) {
  35. deleteCookie(res.headers, "pd-user-token", { path: "/" });
  36. }
  37. export function makeSuccessResponse(
  38. data:
  39. | Record<string, unknown>
  40. | Record<string, unknown>[]
  41. | string
  42. | number
  43. | boolean
  44. ) {
  45. return new Response(
  46. JSON.stringify({
  47. success: true,
  48. data: data,
  49. }),
  50. {
  51. headers: { "Content-Type": "application/json" },
  52. }
  53. );
  54. }
  55. export function makeErrorResponse() {
  56. return new Response(
  57. JSON.stringify({
  58. success: false,
  59. }),
  60. {
  61. headers: { "Content-Type": "application/json" },
  62. }
  63. );
  64. }