name-exists.ts 833 B

1234567891011121314151617181920212223242526272829
  1. import { eventHandler, getQuery } from 'h3';
  2. import { verifyAccessToken } from '~/utils/jwt-utils';
  3. import { MOCK_MENU_LIST } from '~/utils/mock-data';
  4. import { unAuthorizedResponse, useResponseSuccess } from '~/utils/response';
  5. const namesMap: Record<string, any> = {};
  6. function getNames(menus: any[]) {
  7. menus.forEach((menu) => {
  8. namesMap[menu.name] = String(menu.id);
  9. if (menu.children) {
  10. getNames(menu.children);
  11. }
  12. });
  13. }
  14. getNames(MOCK_MENU_LIST);
  15. export default eventHandler(async (event) => {
  16. const userinfo = verifyAccessToken(event);
  17. if (!userinfo) {
  18. return unAuthorizedResponse(event);
  19. }
  20. const { id, name } = getQuery(event);
  21. return (name as string) in namesMap &&
  22. (!id || namesMap[name as string] !== String(id))
  23. ? useResponseSuccess(true)
  24. : useResponseSuccess(false);
  25. });