This commit implements the core admin dashboard functionality including NextAuth authentication, Cloudflare D1 database integration with complete schema, and Cloudflare R2 file upload system for portfolio images. Features include artist management, appointment scheduling, and data migration capabilities.
4 lines
4.8 KiB
JavaScript
4 lines
4.8 KiB
JavaScript
"use strict";(()=>{var e={};e.id=5701,e.ids=[5701],e.modules={72934:e=>{e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},27790:e=>{e.exports=require("assert")},78893:e=>{e.exports=require("buffer")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},86624:e=>{e.exports=require("querystring")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},56710:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>v,patchFetch:()=>O,requestAsyncStorage:()=>j,routeModule:()=>y,serverHooks:()=>R,staticGenerationAsyncStorage:()=>E});var n={};t.r(n),t.d(n,{GET:()=>x,POST:()=>m,dynamic:()=>d});var s=t(73278),o=t(45002),a=t(54877),i=t(71309),u=t(18445),p=t(33897),l=t(1035),c=t(29628);let d="force-dynamic",f=c.z.object({name:c.z.string().min(1),email:c.z.string().email(),role:c.z.enum(["SUPER_ADMIN","SHOP_ADMIN","ARTIST","CLIENT"])});async function x(e,{params:r}={},t){try{let r=await (0,u.getServerSession)(p.Lz);if(!r?.user)return i.NextResponse.json({error:"Unauthorized"},{status:401});let{searchParams:n}=new URL(e.url),s=n.get("email"),o=(0,l.VK)(t?.env);if(s){let e=o.prepare("SELECT * FROM users WHERE email = ?"),r=await e.bind(s).first();if(!r)return i.NextResponse.json({error:"User not found"},{status:404});return i.NextResponse.json({user:r})}{let e=o.prepare("SELECT * FROM users ORDER BY created_at DESC"),r=await e.all();return i.NextResponse.json({users:r.results})}}catch(e){return console.error("Error fetching users:",e),i.NextResponse.json({error:"Failed to fetch users"},{status:500})}}async function m(e,{params:r}={},t){try{let r=await (0,u.getServerSession)(p.Lz);if(!r?.user)return i.NextResponse.json({error:"Unauthorized"},{status:401});let n=await e.json(),s=f.parse(n),o=(0,l.VK)(t?.env),a=o.prepare("SELECT id FROM users WHERE email = ?"),c=await a.bind(s.email).first();if(c)return i.NextResponse.json({user:c});let d=crypto.randomUUID(),x=o.prepare(`
|
|
INSERT INTO users (id, email, name, role, created_at, updated_at)
|
|
VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
|
`);await x.bind(d,s.email,s.name,s.role).run();let m=o.prepare("SELECT * FROM users WHERE id = ?"),y=await m.bind(d).first();return i.NextResponse.json({user:y},{status:201})}catch(e){if(console.error("Error creating user:",e),e instanceof c.z.ZodError)return i.NextResponse.json({error:"Invalid user data",details:e.errors},{status:400});return i.NextResponse.json({error:"Failed to create user"},{status:500})}}let y=new s.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/users/route",pathname:"/api/users",filename:"route",bundlePath:"app/api/users/route"},resolvedPagePath:"/home/Nicholai/Documents/Dev/united_v03/united-tattoo/united-tattoo/app/api/users/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:j,staticGenerationAsyncStorage:E,serverHooks:R}=y,v="/api/users/route";function O(){return(0,a.patchFetch)({serverHooks:R,staticGenerationAsyncStorage:E})}},32482:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0})},18445:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0});var n={};Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o.default}});var s=t(32482);Object.keys(s).forEach(function(e){!("default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e))&&(e in r&&r[e]===s[e]||Object.defineProperty(r,e,{enumerable:!0,get:function(){return s[e]}}))});var o=function(e,r){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=a(void 0);if(t&&t.has(e))return t.get(e);var n={__proto__:null},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&({}).hasOwnProperty.call(e,o)){var i=s?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}(t(4128));function a(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(a=function(e){return e?t:r})(e)}Object.keys(o).forEach(function(e){!("default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e))&&(e in r&&r[e]===o[e]||Object.defineProperty(r,e,{enumerable:!0,get:function(){return o[e]}}))})}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),n=r.X(0,[9379,8213,4128,4833,1253],()=>t(56710));module.exports=n})(); |