feat: Docker部署与CI/CD集成, 搜索栏修复, 上传目录改为data

This commit is contained in:
xiner
2025-11-28 18:42:30 +08:00
commit 8351d6bbfc
243 changed files with 13192 additions and 0 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
[]

View File

@@ -0,0 +1 @@
[]

View File

@@ -0,0 +1 @@
{"version":1,"functions":{"/api/v1/admin/config":{},"/api/v1/materials/upload-zip":{},"/api/v1/materials/upload-video":{}}}

View File

@@ -0,0 +1 @@
self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-c67a75d1b6f99dc8.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:["static/ZILm_S7wuNLBJvcXdOxKg/_buildManifest.js","static/ZILm_S7wuNLBJvcXdOxKg/_ssgManifest.js"],rootMainFiles:[],pages:{"/":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-03cd576e71e4cd66.js","static/chunks/main-a87b5ffee240b6be.js","static/chunks/7b3a7bf8-bf0e044ebc1c1648.js","static/chunks/605-a9ef1a4d7e037b3d.js","static/chunks/221-4d0521e8c44484d0.js","static/chunks/pages/index-fab3e6df678d43cd.js"],"/_app":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-03cd576e71e4cd66.js","static/chunks/main-a87b5ffee240b6be.js","static/css/93a7e244351c21c3.css","static/chunks/pages/_app-33f3889526a1f6be.js"],"/_error":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-03cd576e71e4cd66.js","static/chunks/main-a87b5ffee240b6be.js","static/chunks/pages/_error-5a00309fd5f4b49e.js"],"/auth/login":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-03cd576e71e4cd66.js","static/chunks/main-a87b5ffee240b6be.js","static/chunks/605-a9ef1a4d7e037b3d.js","static/chunks/pages/auth/login-f89d7cc3b92cdbb6.js"],"/auth/register":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-03cd576e71e4cd66.js","static/chunks/main-a87b5ffee240b6be.js","static/chunks/605-a9ef1a4d7e037b3d.js","static/chunks/pages/auth/register-7764882a4d5e8b33.js"],"/console":["static/chunks/webpack-8fa1640cc84ba8fe.js","static/chunks/framework-03cd576e71e4cd66.js","static/chunks/main-a87b5ffee240b6be.js","static/chunks/221-4d0521e8c44484d0.js","static/chunks/pages/console-4f917759f5d20401.js"]},ampFirstPages:[]};

View File

@@ -0,0 +1,6 @@
{
"sortedMiddleware": [],
"middleware": {},
"functions": {},
"version": 2
}

View File

@@ -0,0 +1 @@
self.__REACT_LOADABLE_MANIFEST="{}";

View File

@@ -0,0 +1 @@
self.__NEXT_FONT_MANIFEST='{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}';

View File

@@ -0,0 +1 @@
{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}

View File

@@ -0,0 +1 @@
{"/_app":"pages/_app.js","/_error":"pages/_error.js","/_document":"pages/_document.js","/api/v1/admin/users":"pages/api/v1/admin/users.js","/api/v1/admin/users/[id]/role":"pages/api/v1/admin/users/[id]/role.js","/api/v1/admin/users/[id]/toggle-status":"pages/api/v1/admin/users/[id]/toggle-status.js","/api/v1/auth/login":"pages/api/v1/auth/login.js","/api/v1/auth/logout":"pages/api/v1/auth/logout.js","/api/v1/auth/me":"pages/api/v1/auth/me.js","/api/v1/auth/register":"pages/api/v1/auth/register.js","/api/v1/materials/[id]":"pages/api/v1/materials/[id].js","/api/v1/materials/[id]/comments":"pages/api/v1/materials/[id]/comments.js","/api/v1/materials/[id]/favorite":"pages/api/v1/materials/[id]/favorite.js","/api/v1/materials":"pages/api/v1/materials.js","/api/v1/users/me":"pages/api/v1/users/me.js","/api/v1/users/me/favorites":"pages/api/v1/users/me/favorites.js","/api/v1/users/me/materials":"pages/api/v1/users/me/materials.js","/auth/login":"pages/auth/login.html","/auth/register":"pages/auth/register.html","/console":"pages/console.html","/":"pages/index.html","/api/v1/materials/upload-video":"pages/api/v1/materials/upload-video.js","/api/v1/materials/upload-zip":"pages/api/v1/materials/upload-zip.js","/api/v1/admin/config":"pages/api/v1/admin/config.js","/404":"pages/404.html"}

View File

@@ -0,0 +1 @@
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/93a7e244351c21c3.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/93a7e244351c21c3.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-8fa1640cc84ba8fe.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/framework-03cd576e71e4cd66.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/main-a87b5ffee240b6be.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_app-33f3889526a1f6be.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_error-5a00309fd5f4b49e.js" defer="" crossorigin=""></script><script src="/_next/static/ZILm_S7wuNLBJvcXdOxKg/_buildManifest.js" defer="" crossorigin=""></script><script src="/_next/static/ZILm_S7wuNLBJvcXdOxKg/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div><div class="fixed top-4 right-4 z-[9999] space-y-2"></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"ZILm_S7wuNLBJvcXdOxKg","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>

View File

@@ -0,0 +1 @@
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/93a7e244351c21c3.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/93a7e244351c21c3.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-8fa1640cc84ba8fe.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/framework-03cd576e71e4cd66.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/main-a87b5ffee240b6be.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_app-33f3889526a1f6be.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_error-5a00309fd5f4b49e.js" defer="" crossorigin=""></script><script src="/_next/static/ZILm_S7wuNLBJvcXdOxKg/_buildManifest.js" defer="" crossorigin=""></script><script src="/_next/static/ZILm_S7wuNLBJvcXdOxKg/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div><div class="fixed top-4 right-4 z-[9999] space-y-2"></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"ZILm_S7wuNLBJvcXdOxKg","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>

View File

@@ -0,0 +1,33 @@
(()=>{var e={};e.id=888,e.ids=[888],e.modules={4297:(e,r,t)=>{"use strict";t.d(r,{Z:()=>l});var s=t(6689),i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let a=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),l=(e,r)=>{let t=(0,s.forwardRef)(({color:t="currentColor",size:l=24,strokeWidth:c=2,absoluteStrokeWidth:d,className:o="",children:n,...u},h)=>(0,s.createElement)("svg",{ref:h,...i,width:l,height:l,stroke:t,strokeWidth:d?24*Number(c)/Number(l):c,className:["lucide",`lucide-${a(e)}`,o].join(" "),...u},[...r.map(([e,r])=>(0,s.createElement)(e,r)),...Array.isArray(n)?n:[n]]));return t.displayName=`${e}`,t}},7653:(e,r,t)=>{"use strict";t.d(r,{Z:()=>s});/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let s=(0,t(4297).Z)("AlertCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},3756:(e,r,t)=>{"use strict";t.d(r,{Z:()=>s});/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let s=(0,t(4297).Z)("CheckCircle",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},6989:(e,r,t)=>{"use strict";t.d(r,{Z:()=>s});/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let s=(0,t(4297).Z)("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},1352:(e,r,t)=>{"use strict";t.d(r,{Z:()=>s});/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let s=(0,t(4297).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},7776:(e,r,t)=>{"use strict";t.d(r,{V:()=>u,p:()=>n});var s=t(997),i=t(6689),a=t(3756),l=t(7653),c=t(6989),d=t(1352);let o=(0,i.createContext)(void 0),n=()=>{let e=(0,i.useContext)(o);if(!e)throw Error("useToast must be used within ToastProvider");return e},u=({children:e})=>{let[r,t]=(0,i.useState)([]),n=(0,i.useCallback)((e,r)=>{let s=Math.random().toString(36).substring(7),i={id:s,message:e,type:r};t(e=>[...e,i]),setTimeout(()=>{t(e=>e.filter(e=>e.id!==s))},5e3)},[]),u=(0,i.useCallback)(e=>n(e,"success"),[n]),h=(0,i.useCallback)(e=>n(e,"error"),[n]),x=(0,i.useCallback)(e=>n(e,"info"),[n]),m=e=>{t(r=>r.filter(r=>r.id!==e))};return(0,s.jsxs)(o.Provider,{value:{showToast:n,success:u,error:h,info:x},children:[e,s.jsx("div",{className:"fixed top-4 right-4 z-[9999] space-y-2",children:r.map(e=>(0,s.jsxs)("div",{className:`
flex items-center gap-3 min-w-[300px] max-w-md p-4 rounded-lg
backdrop-blur-md border shadow-lg
animate-in slide-in-from-right duration-300
${"success"===e.type?"bg-green-900/90 border-green-500 text-green-100":""}
${"error"===e.type?"bg-red-900/90 border-red-500 text-red-100":""}
${"info"===e.type?"bg-blue-900/90 border-blue-500 text-blue-100":""}
`,children:["success"===e.type&&s.jsx(a.Z,{className:"w-5 h-5 flex-shrink-0"}),"error"===e.type&&s.jsx(l.Z,{className:"w-5 h-5 flex-shrink-0"}),"info"===e.type&&s.jsx(c.Z,{className:"w-5 h-5 flex-shrink-0"}),s.jsx("p",{className:"flex-1 text-sm font-mono",children:e.message}),s.jsx("button",{onClick:()=>m(e.id),className:"flex-shrink-0 hover:opacity-70 transition-opacity",children:s.jsx(d.Z,{className:"w-4 h-4"})})]},e.id))})]})}},1484:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>c});var s=t(997);t(6764);var i=t(968),a=t.n(i),l=t(7776);function c({Component:e,pageProps:r}){return(0,s.jsxs)(l.V,{children:[(0,s.jsxs)(a(),{children:[s.jsx("title",{children:"NEXUS_MAT.OS"}),s.jsx("meta",{name:"viewport",content:"width=device-width, initial-scale=1"})]}),s.jsx(e,{...r})]})}},6764:()=>{},968:e=>{"use strict";e.exports=require("next/head")},6689:e=>{"use strict";e.exports=require("react")},997:e=>{"use strict";e.exports=require("react/jsx-runtime")}};var r=require("../webpack-runtime.js");r.C(e);var t=r(r.s=1484);module.exports=t})();

View File

@@ -0,0 +1 @@
{"version":1,"files":["../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../node_modules/@swc/helpers/_/_interop_require_wildcard/package.json","../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs","../../../node_modules/@swc/helpers/package.json","../../../node_modules/next/dist/shared/lib/amp-context.shared-runtime.js","../../../node_modules/next/dist/shared/lib/amp-mode.js","../../../node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js","../../../node_modules/next/dist/shared/lib/head.js","../../../node_modules/next/dist/shared/lib/side-effect.js","../../../node_modules/next/dist/shared/lib/utils/warn-once.js","../../../node_modules/next/head.js","../../../node_modules/next/package.json","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../package.json","../../../pages/_app.tsx","../../package.json","../webpack-runtime.js"]}

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=660,e.ids=[660],e.modules={6100:(e,r,s)=>{s.r(r),s.d(r,{default:()=>x});var t=s(997),i=s(6859),d=s.n(i);class x extends d(){render(){return(0,t.jsxs)(i.Html,{lang:"zh-CN",children:[t.jsx(i.Head,{}),(0,t.jsxs)("body",{children:[t.jsx(i.Main,{}),t.jsx(i.NextScript,{})]})]})}}},2785:e=>{e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},6689:e=>{e.exports=require("react")},997:e=>{e.exports=require("react/jsx-runtime")},1017:e=>{e.exports=require("path")}};var r=require("../webpack-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[859],()=>s(6100));module.exports=t})();

View File

@@ -0,0 +1 @@
{"version":1,"files":["../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/lru-cache/index.js","../../../node_modules/next/dist/compiled/lru-cache/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/compiled/node-html-parser/index.js","../../../node_modules/next/dist/compiled/node-html-parser/package.json","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../../package.json","../../../pages/_document.tsx","../../package.json","../chunks/859.js","../webpack-runtime.js"]}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":1,"files":["../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../node_modules/@swc/helpers/_/_interop_require_wildcard/package.json","../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs","../../../node_modules/@swc/helpers/package.json","../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/lru-cache/index.js","../../../node_modules/next/dist/compiled/lru-cache/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/compiled/node-html-parser/index.js","../../../node_modules/next/dist/compiled/node-html-parser/package.json","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/dist/shared/lib/amp-context.shared-runtime.js","../../../node_modules/next/dist/shared/lib/amp-mode.js","../../../node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js","../../../node_modules/next/dist/shared/lib/head.js","../../../node_modules/next/dist/shared/lib/side-effect.js","../../../node_modules/next/dist/shared/lib/utils/warn-once.js","../../../node_modules/next/head.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../package.json","../chunks/859.js","../webpack-runtime.js"]}

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=355,e.ids=[355],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6249:(e,t)=>{Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},4585:(e,t,r)=>{r.r(t),r.d(t,{config:()=>f,default:()=>l,routeModule:()=>p});var a={};r.r(a),r.d(a,{default:()=>c});var n=r(1802),s=r(7153),u=r(6249),o=r(2944),i=r(9036);let d={maintenanceMode:!1,apiVersion:"1.0.0",maxUploadMB:(0,i.I)().uploadMaxMB};async function c(e,t){if(await (0,o.k)(e,t)){if("GET"===e.method)return t.status(200).json({success:!0,data:d});if("PUT"===e.method){let{maxUploadMB:r}=e.body||{};return"number"==typeof r&&((0,i.A)({uploadMaxMB:r}),d.maxUploadMB=r),t.status(200).json({success:!0,message:"Configuration updated successfully",data:e.body})}return t.status(405).json({success:!1,error:"Method not allowed"})}}let l=(0,u.l)(a,"default"),f=(0,u.l)(a,"config"),p=new n.PagesAPIRouteModule({definition:{kind:s.x.PAGES_API,page:"/api/v1/admin/config",pathname:"/api/v1/admin/config",bundlePath:"",filename:""},userland:a})},3481:(e,t,r)=>{r.d(t,{K:()=>s});var a=r(1450),n=r(1026);let s={async getUserById(e){let t=await a.Z.user.findUnique({where:{id:e},select:{id:!0,username:!0,avatarUrl:!0,role:!0,status:!0,createdAt:!0,lastLogin:!0}});return t?{...t,role:t.role,createdAt:t.createdAt.toISOString(),lastLogin:t.lastLogin?.toISOString()||new Date().toISOString(),avatarUrl:t.avatarUrl||""}:null},getUserByUsername:async e=>a.Z.user.findUnique({where:{username:e}}),async createUser(e,t,r){let s=await (0,n.c_)(t),u=`https://api.dicebear.com/7.x/avataaars/svg?seed=${e}`;return a.Z.user.create({data:{username:e,password:s,avatarUrl:u,role:"CREATOR",status:"ACTIVE"}})},async authenticateUser(e,t){let r=await this.getUserByUsername(e);return r&&r.password&&await (0,n.Gv)(t,r.password)?(await a.Z.user.update({where:{id:r.id},data:{lastLogin:new Date}}),{id:r.id,username:r.username,avatarUrl:r.avatarUrl||"",role:r.role,status:r.status,createdAt:r.createdAt.toISOString(),lastLogin:new Date().toISOString()}):null},getAllUsers:async()=>a.Z.user.findMany({orderBy:{createdAt:"desc"}}),updateUser:async(e,t)=>a.Z.user.update({where:{id:e},data:{username:t.username,avatarUrl:t.avatarUrl}}),updateUserRole:async(e,t)=>a.Z.user.update({where:{id:e},data:{role:t}}),async toggleUserStatus(e){let t=await a.Z.user.findUnique({where:{id:e}});if(!t)throw Error("User not found");let r="ACTIVE"===t.status?"BANNED":"ACTIVE";return a.Z.user.update({where:{id:e},data:{status:r}})}}},1026:(e,t,r)=>{r.d(t,{Gv:()=>d,RA:()=>c,WX:()=>l,c_:()=>i});var a=r(7096),n=r.n(a),s=r(9344),u=r.n(s);function o(){let e=process.env.JWT_SECRET;if(!e)throw Error("JWT_SECRET is not set");return e}async function i(e){return n().hash(e,10)}async function d(e,t){return n().compare(e,t)}function c(e){return u().sign({userId:e},o(),{expiresIn:"7d"})}function l(e){try{return u().verify(e,o())}catch(e){return null}}},2944:(e,t,r)=>{r.d(t,{k:()=>s});var a=r(8103),n=r(7556);async function s(e,t){return!!await (0,a.m)(e,t)&&(e.user?.role===n.i.ADMIN||(t.status(403).json({success:!1,error:"Admin access required"}),!1))}},8103:(e,t,r)=>{r.d(t,{R:()=>u,m:()=>s});var a=r(1026),n=r(3481);async function s(e,t){let r=o(e);if(!r)return t.status(401).json({success:!1,error:"Authentication required"}),!1;let s=(0,a.WX)(r);if(!s)return t.status(401).json({success:!1,error:"Invalid or expired token"}),!1;let u=await n.K.getUserById(s.userId);return u?"BANNED"===u.status?(t.status(403).json({success:!1,error:"Account has been banned"}),!1):(e.user=u,!0):(t.status(401).json({success:!1,error:"User not found"}),!1)}async function u(e){let t=o(e);if(!t)return;let r=(0,a.WX)(t);if(!r)return;let s=await n.K.getUserById(r.userId);s&&"BANNED"!==s.status&&(e.user=s)}function o(e){if(e.cookies.token)return e.cookies.token;let t=e.headers.authorization;return t&&t.startsWith("Bearer ")?t.substring(7):null}},1450:(e,t,r)=>{r.d(t,{Z:()=>n});var a=r(3524);let n=globalThis.prisma??new a.PrismaClient},9036:(e,t,r)=>{r.d(t,{A:()=>s,I:()=>n});let a={uploadMaxMB:3},n=()=>a,s=e=>("number"==typeof e.uploadMaxMB&&(a.uploadMaxMB=e.uploadMaxMB),a)},7556:(e,t,r)=>{var a,n;r.d(t,{i:()=>a}),function(e){e.USER="USER",e.ADMIN="ADMIN",e.CREATOR="CREATOR",e.MANAGER="MANAGER"}(a||(a={})),function(e){e.CODE="CODE",e.ASSET_ZIP="ASSET_ZIP",e.VIDEO="VIDEO"}(n||(n={}))},7153:(e,t)=>{var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},1802:(e,t,r)=>{e.exports=r(145)}};var t=require("../../../../webpack-api-runtime.js");t.C(e);var r=t(t.s=4585);module.exports=r})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=345,e.ids=[345],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6249:(e,t)=>{Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},1717:(e,t,r)=>{r.r(t),r.d(t,{config:()=>l,default:()=>d,routeModule:()=>f});var s={};r.r(s),r.d(s,{default:()=>c});var a=r(1802),n=r(7153),u=r(6249),i=r(2944),o=r(3481);async function c(e,t){if("GET"!==e.method)return t.status(405).json({success:!1,error:"Method not allowed"});if(await (0,i.k)(e,t))try{let e=await o.K.getAllUsers();return t.status(200).json({success:!0,data:e})}catch(e){return console.error("Error fetching users:",e),t.status(500).json({success:!1,error:"Failed to fetch users"})}}let d=(0,u.l)(s,"default"),l=(0,u.l)(s,"config"),f=new a.PagesAPIRouteModule({definition:{kind:n.x.PAGES_API,page:"/api/v1/admin/users",pathname:"/api/v1/admin/users",bundlePath:"",filename:""},userland:s})},3481:(e,t,r)=>{r.d(t,{K:()=>n});var s=r(1450),a=r(1026);let n={async getUserById(e){let t=await s.Z.user.findUnique({where:{id:e},select:{id:!0,username:!0,avatarUrl:!0,role:!0,status:!0,createdAt:!0,lastLogin:!0}});return t?{...t,role:t.role,createdAt:t.createdAt.toISOString(),lastLogin:t.lastLogin?.toISOString()||new Date().toISOString(),avatarUrl:t.avatarUrl||""}:null},getUserByUsername:async e=>s.Z.user.findUnique({where:{username:e}}),async createUser(e,t,r){let n=await (0,a.c_)(t),u=`https://api.dicebear.com/7.x/avataaars/svg?seed=${e}`;return s.Z.user.create({data:{username:e,password:n,avatarUrl:u,role:"CREATOR",status:"ACTIVE"}})},async authenticateUser(e,t){let r=await this.getUserByUsername(e);return r&&r.password&&await (0,a.Gv)(t,r.password)?(await s.Z.user.update({where:{id:r.id},data:{lastLogin:new Date}}),{id:r.id,username:r.username,avatarUrl:r.avatarUrl||"",role:r.role,status:r.status,createdAt:r.createdAt.toISOString(),lastLogin:new Date().toISOString()}):null},getAllUsers:async()=>s.Z.user.findMany({orderBy:{createdAt:"desc"}}),updateUser:async(e,t)=>s.Z.user.update({where:{id:e},data:{username:t.username,avatarUrl:t.avatarUrl}}),updateUserRole:async(e,t)=>s.Z.user.update({where:{id:e},data:{role:t}}),async toggleUserStatus(e){let t=await s.Z.user.findUnique({where:{id:e}});if(!t)throw Error("User not found");let r="ACTIVE"===t.status?"BANNED":"ACTIVE";return s.Z.user.update({where:{id:e},data:{status:r}})}}},1026:(e,t,r)=>{r.d(t,{Gv:()=>c,RA:()=>d,WX:()=>l,c_:()=>o});var s=r(7096),a=r.n(s),n=r(9344),u=r.n(n);function i(){let e=process.env.JWT_SECRET;if(!e)throw Error("JWT_SECRET is not set");return e}async function o(e){return a().hash(e,10)}async function c(e,t){return a().compare(e,t)}function d(e){return u().sign({userId:e},i(),{expiresIn:"7d"})}function l(e){try{return u().verify(e,i())}catch(e){return null}}},2944:(e,t,r)=>{r.d(t,{k:()=>n});var s=r(8103),a=r(7556);async function n(e,t){return!!await (0,s.m)(e,t)&&(e.user?.role===a.i.ADMIN||(t.status(403).json({success:!1,error:"Admin access required"}),!1))}},8103:(e,t,r)=>{r.d(t,{R:()=>u,m:()=>n});var s=r(1026),a=r(3481);async function n(e,t){let r=i(e);if(!r)return t.status(401).json({success:!1,error:"Authentication required"}),!1;let n=(0,s.WX)(r);if(!n)return t.status(401).json({success:!1,error:"Invalid or expired token"}),!1;let u=await a.K.getUserById(n.userId);return u?"BANNED"===u.status?(t.status(403).json({success:!1,error:"Account has been banned"}),!1):(e.user=u,!0):(t.status(401).json({success:!1,error:"User not found"}),!1)}async function u(e){let t=i(e);if(!t)return;let r=(0,s.WX)(t);if(!r)return;let n=await a.K.getUserById(r.userId);n&&"BANNED"!==n.status&&(e.user=n)}function i(e){if(e.cookies.token)return e.cookies.token;let t=e.headers.authorization;return t&&t.startsWith("Bearer ")?t.substring(7):null}},1450:(e,t,r)=>{r.d(t,{Z:()=>a});var s=r(3524);let a=globalThis.prisma??new s.PrismaClient},7556:(e,t,r)=>{var s,a;r.d(t,{i:()=>s}),function(e){e.USER="USER",e.ADMIN="ADMIN",e.CREATOR="CREATOR",e.MANAGER="MANAGER"}(s||(s={})),function(e){e.CODE="CODE",e.ASSET_ZIP="ASSET_ZIP",e.VIDEO="VIDEO"}(a||(a={}))},7153:(e,t)=>{var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},1802:(e,t,r)=>{e.exports=r(145)}};var t=require("../../../../webpack-api-runtime.js");t.C(e);var r=t(t.s=1717);module.exports=r})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=68,e.ids=[68],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6249:(e,r)=>{Object.defineProperty(r,"l",{enumerable:!0,get:function(){return function e(r,t){return t in r?r[t]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,t)):"function"==typeof r&&"default"===t?r:void 0}}})},3824:(e,r,t)=>{t.r(r),t.d(r,{config:()=>l,default:()=>c,routeModule:()=>f});var a={};t.r(a),t.d(a,{default:()=>d});var s=t(1802),n=t(7153),u=t(6249),i=t(2944),o=t(3481);async function d(e,r){if("POST"!==e.method)return r.status(405).json({success:!1,error:"Method not allowed"});if(!await (0,i.k)(e,r))return;let{id:t}=e.query,{role:a}=e.body||{};if("string"!=typeof t||"string"!=typeof a)return r.status(400).json({success:!1,error:"Invalid input"});try{let e=await o.K.updateUserRole(t,a);return r.status(200).json({success:!0,data:e})}catch(e){return console.error("Error updating role:",e),r.status(500).json({success:!1,error:"Failed to update role"})}}let c=(0,u.l)(a,"default"),l=(0,u.l)(a,"config"),f=new s.PagesAPIRouteModule({definition:{kind:n.x.PAGES_API,page:"/api/v1/admin/users/[id]/role",pathname:"/api/v1/admin/users/[id]/role",bundlePath:"",filename:""},userland:a})},3481:(e,r,t)=>{t.d(r,{K:()=>n});var a=t(1450),s=t(1026);let n={async getUserById(e){let r=await a.Z.user.findUnique({where:{id:e},select:{id:!0,username:!0,avatarUrl:!0,role:!0,status:!0,createdAt:!0,lastLogin:!0}});return r?{...r,role:r.role,createdAt:r.createdAt.toISOString(),lastLogin:r.lastLogin?.toISOString()||new Date().toISOString(),avatarUrl:r.avatarUrl||""}:null},getUserByUsername:async e=>a.Z.user.findUnique({where:{username:e}}),async createUser(e,r,t){let n=await (0,s.c_)(r),u=`https://api.dicebear.com/7.x/avataaars/svg?seed=${e}`;return a.Z.user.create({data:{username:e,password:n,avatarUrl:u,role:"CREATOR",status:"ACTIVE"}})},async authenticateUser(e,r){let t=await this.getUserByUsername(e);return t&&t.password&&await (0,s.Gv)(r,t.password)?(await a.Z.user.update({where:{id:t.id},data:{lastLogin:new Date}}),{id:t.id,username:t.username,avatarUrl:t.avatarUrl||"",role:t.role,status:t.status,createdAt:t.createdAt.toISOString(),lastLogin:new Date().toISOString()}):null},getAllUsers:async()=>a.Z.user.findMany({orderBy:{createdAt:"desc"}}),updateUser:async(e,r)=>a.Z.user.update({where:{id:e},data:{username:r.username,avatarUrl:r.avatarUrl}}),updateUserRole:async(e,r)=>a.Z.user.update({where:{id:e},data:{role:r}}),async toggleUserStatus(e){let r=await a.Z.user.findUnique({where:{id:e}});if(!r)throw Error("User not found");let t="ACTIVE"===r.status?"BANNED":"ACTIVE";return a.Z.user.update({where:{id:e},data:{status:t}})}}},1026:(e,r,t)=>{t.d(r,{Gv:()=>d,RA:()=>c,WX:()=>l,c_:()=>o});var a=t(7096),s=t.n(a),n=t(9344),u=t.n(n);function i(){let e=process.env.JWT_SECRET;if(!e)throw Error("JWT_SECRET is not set");return e}async function o(e){return s().hash(e,10)}async function d(e,r){return s().compare(e,r)}function c(e){return u().sign({userId:e},i(),{expiresIn:"7d"})}function l(e){try{return u().verify(e,i())}catch(e){return null}}},2944:(e,r,t)=>{t.d(r,{k:()=>n});var a=t(8103),s=t(7556);async function n(e,r){return!!await (0,a.m)(e,r)&&(e.user?.role===s.i.ADMIN||(r.status(403).json({success:!1,error:"Admin access required"}),!1))}},8103:(e,r,t)=>{t.d(r,{R:()=>u,m:()=>n});var a=t(1026),s=t(3481);async function n(e,r){let t=i(e);if(!t)return r.status(401).json({success:!1,error:"Authentication required"}),!1;let n=(0,a.WX)(t);if(!n)return r.status(401).json({success:!1,error:"Invalid or expired token"}),!1;let u=await s.K.getUserById(n.userId);return u?"BANNED"===u.status?(r.status(403).json({success:!1,error:"Account has been banned"}),!1):(e.user=u,!0):(r.status(401).json({success:!1,error:"User not found"}),!1)}async function u(e){let r=i(e);if(!r)return;let t=(0,a.WX)(r);if(!t)return;let n=await s.K.getUserById(t.userId);n&&"BANNED"!==n.status&&(e.user=n)}function i(e){if(e.cookies.token)return e.cookies.token;let r=e.headers.authorization;return r&&r.startsWith("Bearer ")?r.substring(7):null}},1450:(e,r,t)=>{t.d(r,{Z:()=>s});var a=t(3524);let s=globalThis.prisma??new a.PrismaClient},7556:(e,r,t)=>{var a,s;t.d(r,{i:()=>a}),function(e){e.USER="USER",e.ADMIN="ADMIN",e.CREATOR="CREATOR",e.MANAGER="MANAGER"}(a||(a={})),function(e){e.CODE="CODE",e.ASSET_ZIP="ASSET_ZIP",e.VIDEO="VIDEO"}(s||(s={}))},7153:(e,r)=>{var t;Object.defineProperty(r,"x",{enumerable:!0,get:function(){return t}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(t||(t={}))},1802:(e,r,t)=>{e.exports=t(145)}};var r=require("../../../../../../webpack-api-runtime.js");r.C(e);var t=r(r.s=3824);module.exports=t})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=691,e.ids=[691],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6249:(e,t)=>{Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},5113:(e,t,r)=>{r.r(t),r.d(t,{config:()=>l,default:()=>d,routeModule:()=>f});var s={};r.r(s),r.d(s,{default:()=>c});var a=r(1802),n=r(7153),u=r(6249),i=r(2944),o=r(3481);async function c(e,t){if("POST"!==e.method)return t.status(405).json({success:!1,error:"Method not allowed"});if(!await (0,i.k)(e,t))return;let{id:r}=e.query;if("string"!=typeof r)return t.status(400).json({success:!1,error:"Invalid user ID"});try{let e=await o.K.toggleUserStatus(r);return t.status(200).json({success:!0,data:e})}catch(e){return console.error("Error toggling user status:",e),t.status(500).json({success:!1,error:"Failed to toggle user status"})}}let d=(0,u.l)(s,"default"),l=(0,u.l)(s,"config"),f=new a.PagesAPIRouteModule({definition:{kind:n.x.PAGES_API,page:"/api/v1/admin/users/[id]/toggle-status",pathname:"/api/v1/admin/users/[id]/toggle-status",bundlePath:"",filename:""},userland:s})},3481:(e,t,r)=>{r.d(t,{K:()=>n});var s=r(1450),a=r(1026);let n={async getUserById(e){let t=await s.Z.user.findUnique({where:{id:e},select:{id:!0,username:!0,avatarUrl:!0,role:!0,status:!0,createdAt:!0,lastLogin:!0}});return t?{...t,role:t.role,createdAt:t.createdAt.toISOString(),lastLogin:t.lastLogin?.toISOString()||new Date().toISOString(),avatarUrl:t.avatarUrl||""}:null},getUserByUsername:async e=>s.Z.user.findUnique({where:{username:e}}),async createUser(e,t,r){let n=await (0,a.c_)(t),u=`https://api.dicebear.com/7.x/avataaars/svg?seed=${e}`;return s.Z.user.create({data:{username:e,password:n,avatarUrl:u,role:"CREATOR",status:"ACTIVE"}})},async authenticateUser(e,t){let r=await this.getUserByUsername(e);return r&&r.password&&await (0,a.Gv)(t,r.password)?(await s.Z.user.update({where:{id:r.id},data:{lastLogin:new Date}}),{id:r.id,username:r.username,avatarUrl:r.avatarUrl||"",role:r.role,status:r.status,createdAt:r.createdAt.toISOString(),lastLogin:new Date().toISOString()}):null},getAllUsers:async()=>s.Z.user.findMany({orderBy:{createdAt:"desc"}}),updateUser:async(e,t)=>s.Z.user.update({where:{id:e},data:{username:t.username,avatarUrl:t.avatarUrl}}),updateUserRole:async(e,t)=>s.Z.user.update({where:{id:e},data:{role:t}}),async toggleUserStatus(e){let t=await s.Z.user.findUnique({where:{id:e}});if(!t)throw Error("User not found");let r="ACTIVE"===t.status?"BANNED":"ACTIVE";return s.Z.user.update({where:{id:e},data:{status:r}})}}},1026:(e,t,r)=>{r.d(t,{Gv:()=>c,RA:()=>d,WX:()=>l,c_:()=>o});var s=r(7096),a=r.n(s),n=r(9344),u=r.n(n);function i(){let e=process.env.JWT_SECRET;if(!e)throw Error("JWT_SECRET is not set");return e}async function o(e){return a().hash(e,10)}async function c(e,t){return a().compare(e,t)}function d(e){return u().sign({userId:e},i(),{expiresIn:"7d"})}function l(e){try{return u().verify(e,i())}catch(e){return null}}},2944:(e,t,r)=>{r.d(t,{k:()=>n});var s=r(8103),a=r(7556);async function n(e,t){return!!await (0,s.m)(e,t)&&(e.user?.role===a.i.ADMIN||(t.status(403).json({success:!1,error:"Admin access required"}),!1))}},8103:(e,t,r)=>{r.d(t,{R:()=>u,m:()=>n});var s=r(1026),a=r(3481);async function n(e,t){let r=i(e);if(!r)return t.status(401).json({success:!1,error:"Authentication required"}),!1;let n=(0,s.WX)(r);if(!n)return t.status(401).json({success:!1,error:"Invalid or expired token"}),!1;let u=await a.K.getUserById(n.userId);return u?"BANNED"===u.status?(t.status(403).json({success:!1,error:"Account has been banned"}),!1):(e.user=u,!0):(t.status(401).json({success:!1,error:"User not found"}),!1)}async function u(e){let t=i(e);if(!t)return;let r=(0,s.WX)(t);if(!r)return;let n=await a.K.getUserById(r.userId);n&&"BANNED"!==n.status&&(e.user=n)}function i(e){if(e.cookies.token)return e.cookies.token;let t=e.headers.authorization;return t&&t.startsWith("Bearer ")?t.substring(7):null}},1450:(e,t,r)=>{r.d(t,{Z:()=>a});var s=r(3524);let a=globalThis.prisma??new s.PrismaClient},7556:(e,t,r)=>{var s,a;r.d(t,{i:()=>s}),function(e){e.USER="USER",e.ADMIN="ADMIN",e.CREATOR="CREATOR",e.MANAGER="MANAGER"}(s||(s={})),function(e){e.CODE="CODE",e.ASSET_ZIP="ASSET_ZIP",e.VIDEO="VIDEO"}(a||(a={}))},7153:(e,t)=>{var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},1802:(e,t,r)=>{e.exports=r(145)}};var t=require("../../../../../../webpack-api-runtime.js");t.C(e);var r=t(t.s=5113);module.exports=r})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=396,e.ids=[396],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6249:(e,t)=>{Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},8995:(e,t,r)=>{r.r(t),r.d(t,{config:()=>l,default:()=>c,routeModule:()=>p});var a={};r.r(a),r.d(a,{default:()=>d});var s=r(1802),n=r(7153),u=r(6249),i=r(3481),o=r(1026);async function d(e,t){if("POST"!==e.method)return t.status(405).json({success:!1,error:"Method not allowed"});try{let{username:r,password:a}=e.body;if(!r||!a)return t.status(400).json({success:!1,error:"Username and password are required"});let s=await i.K.authenticateUser(r,a);if(!s)return t.status(401).json({success:!1,error:"Invalid username or password"});if("BANNED"===s.status)return t.status(403).json({success:!1,error:"Account has been banned"});let n=(0,o.RA)(s.id);return t.setHeader("Set-Cookie",`token=${n}; HttpOnly; Path=/; Max-Age=604800; SameSite=Strict`),t.status(200).json({success:!0,data:{user:s,token:n}})}catch(e){return console.error("Login error:",e),t.status(500).json({success:!1,error:"Login failed"})}}let c=(0,u.l)(a,"default"),l=(0,u.l)(a,"config"),p=new s.PagesAPIRouteModule({definition:{kind:n.x.PAGES_API,page:"/api/v1/auth/login",pathname:"/api/v1/auth/login",bundlePath:"",filename:""},userland:a})},3481:(e,t,r)=>{r.d(t,{K:()=>n});var a=r(1450),s=r(1026);let n={async getUserById(e){let t=await a.Z.user.findUnique({where:{id:e},select:{id:!0,username:!0,avatarUrl:!0,role:!0,status:!0,createdAt:!0,lastLogin:!0}});return t?{...t,role:t.role,createdAt:t.createdAt.toISOString(),lastLogin:t.lastLogin?.toISOString()||new Date().toISOString(),avatarUrl:t.avatarUrl||""}:null},getUserByUsername:async e=>a.Z.user.findUnique({where:{username:e}}),async createUser(e,t,r){let n=await (0,s.c_)(t),u=`https://api.dicebear.com/7.x/avataaars/svg?seed=${e}`;return a.Z.user.create({data:{username:e,password:n,avatarUrl:u,role:"CREATOR",status:"ACTIVE"}})},async authenticateUser(e,t){let r=await this.getUserByUsername(e);return r&&r.password&&await (0,s.Gv)(t,r.password)?(await a.Z.user.update({where:{id:r.id},data:{lastLogin:new Date}}),{id:r.id,username:r.username,avatarUrl:r.avatarUrl||"",role:r.role,status:r.status,createdAt:r.createdAt.toISOString(),lastLogin:new Date().toISOString()}):null},getAllUsers:async()=>a.Z.user.findMany({orderBy:{createdAt:"desc"}}),updateUser:async(e,t)=>a.Z.user.update({where:{id:e},data:{username:t.username,avatarUrl:t.avatarUrl}}),updateUserRole:async(e,t)=>a.Z.user.update({where:{id:e},data:{role:t}}),async toggleUserStatus(e){let t=await a.Z.user.findUnique({where:{id:e}});if(!t)throw Error("User not found");let r="ACTIVE"===t.status?"BANNED":"ACTIVE";return a.Z.user.update({where:{id:e},data:{status:r}})}}},1026:(e,t,r)=>{r.d(t,{Gv:()=>d,RA:()=>c,WX:()=>l,c_:()=>o});var a=r(7096),s=r.n(a),n=r(9344),u=r.n(n);function i(){let e=process.env.JWT_SECRET;if(!e)throw Error("JWT_SECRET is not set");return e}async function o(e){return s().hash(e,10)}async function d(e,t){return s().compare(e,t)}function c(e){return u().sign({userId:e},i(),{expiresIn:"7d"})}function l(e){try{return u().verify(e,i())}catch(e){return null}}},1450:(e,t,r)=>{r.d(t,{Z:()=>s});var a=r(3524);let s=globalThis.prisma??new a.PrismaClient},7153:(e,t)=>{var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},1802:(e,t,r)=>{e.exports=r(145)}};var t=require("../../../../webpack-api-runtime.js");t.C(e);var r=t(t.s=8995);module.exports=r})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=502,e.ids=[502],e.modules={145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6249:(e,t)=>{Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function e(t,n){return n in t?t[n]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,n)):"function"==typeof t&&"default"===n?t:void 0}}})},8930:(e,t,n)=>{n.r(t),n.d(t,{config:()=>d,default:()=>s,routeModule:()=>l});var o={};n.r(o),n.d(o,{default:()=>i});var r=n(1802),u=n(7153),a=n(6249);async function i(e,t){return"POST"!==e.method?t.status(405).json({success:!1,error:"Method not allowed"}):(t.setHeader("Set-Cookie","token=; HttpOnly; Path=/; Max-Age=0; SameSite=Strict"),t.status(200).json({success:!0,message:"Logged out successfully"}))}let s=(0,a.l)(o,"default"),d=(0,a.l)(o,"config"),l=new r.PagesAPIRouteModule({definition:{kind:u.x.PAGES_API,page:"/api/v1/auth/logout",pathname:"/api/v1/auth/logout",bundlePath:"",filename:""},userland:o})},7153:(e,t)=>{var n;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return n}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(n||(n={}))},1802:(e,t,n)=>{e.exports=n(145)}};var t=require("../../../../webpack-api-runtime.js");t.C(e);var n=t(t.s=8930);module.exports=n})();

View File

@@ -0,0 +1 @@
{"version":1,"files":["../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/bytes/index.js","../../../../../../node_modules/next/dist/compiled/bytes/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/raw-body/index.js","../../../../../../node_modules/next/dist/compiled/raw-body/package.json","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/package.json","../../../../../../package.json","../../../../../package.json","../../../../webpack-api-runtime.js"]}

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=51,e.ids=[51],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6249:(e,t)=>{Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},6023:(e,t,r)=>{r.r(t),r.d(t,{config:()=>c,default:()=>d,routeModule:()=>l});var a={};r.r(a),r.d(a,{default:()=>o});var s=r(1802),n=r(7153),u=r(6249),i=r(8103);async function o(e,t){return"GET"!==e.method?t.status(405).json({success:!1,error:"Method not allowed"}):await (0,i.m)(e,t)?t.status(200).json({success:!0,data:e.user}):void 0}let d=(0,u.l)(a,"default"),c=(0,u.l)(a,"config"),l=new s.PagesAPIRouteModule({definition:{kind:n.x.PAGES_API,page:"/api/v1/auth/me",pathname:"/api/v1/auth/me",bundlePath:"",filename:""},userland:a})},3481:(e,t,r)=>{r.d(t,{K:()=>n});var a=r(1450),s=r(1026);let n={async getUserById(e){let t=await a.Z.user.findUnique({where:{id:e},select:{id:!0,username:!0,avatarUrl:!0,role:!0,status:!0,createdAt:!0,lastLogin:!0}});return t?{...t,role:t.role,createdAt:t.createdAt.toISOString(),lastLogin:t.lastLogin?.toISOString()||new Date().toISOString(),avatarUrl:t.avatarUrl||""}:null},getUserByUsername:async e=>a.Z.user.findUnique({where:{username:e}}),async createUser(e,t,r){let n=await (0,s.c_)(t),u=`https://api.dicebear.com/7.x/avataaars/svg?seed=${e}`;return a.Z.user.create({data:{username:e,password:n,avatarUrl:u,role:"CREATOR",status:"ACTIVE"}})},async authenticateUser(e,t){let r=await this.getUserByUsername(e);return r&&r.password&&await (0,s.Gv)(t,r.password)?(await a.Z.user.update({where:{id:r.id},data:{lastLogin:new Date}}),{id:r.id,username:r.username,avatarUrl:r.avatarUrl||"",role:r.role,status:r.status,createdAt:r.createdAt.toISOString(),lastLogin:new Date().toISOString()}):null},getAllUsers:async()=>a.Z.user.findMany({orderBy:{createdAt:"desc"}}),updateUser:async(e,t)=>a.Z.user.update({where:{id:e},data:{username:t.username,avatarUrl:t.avatarUrl}}),updateUserRole:async(e,t)=>a.Z.user.update({where:{id:e},data:{role:t}}),async toggleUserStatus(e){let t=await a.Z.user.findUnique({where:{id:e}});if(!t)throw Error("User not found");let r="ACTIVE"===t.status?"BANNED":"ACTIVE";return a.Z.user.update({where:{id:e},data:{status:r}})}}},1026:(e,t,r)=>{r.d(t,{Gv:()=>d,RA:()=>c,WX:()=>l,c_:()=>o});var a=r(7096),s=r.n(a),n=r(9344),u=r.n(n);function i(){let e=process.env.JWT_SECRET;if(!e)throw Error("JWT_SECRET is not set");return e}async function o(e){return s().hash(e,10)}async function d(e,t){return s().compare(e,t)}function c(e){return u().sign({userId:e},i(),{expiresIn:"7d"})}function l(e){try{return u().verify(e,i())}catch(e){return null}}},8103:(e,t,r)=>{r.d(t,{R:()=>u,m:()=>n});var a=r(1026),s=r(3481);async function n(e,t){let r=i(e);if(!r)return t.status(401).json({success:!1,error:"Authentication required"}),!1;let n=(0,a.WX)(r);if(!n)return t.status(401).json({success:!1,error:"Invalid or expired token"}),!1;let u=await s.K.getUserById(n.userId);return u?"BANNED"===u.status?(t.status(403).json({success:!1,error:"Account has been banned"}),!1):(e.user=u,!0):(t.status(401).json({success:!1,error:"User not found"}),!1)}async function u(e){let t=i(e);if(!t)return;let r=(0,a.WX)(t);if(!r)return;let n=await s.K.getUserById(r.userId);n&&"BANNED"!==n.status&&(e.user=n)}function i(e){if(e.cookies.token)return e.cookies.token;let t=e.headers.authorization;return t&&t.startsWith("Bearer ")?t.substring(7):null}},1450:(e,t,r)=>{r.d(t,{Z:()=>s});var a=r(3524);let s=globalThis.prisma??new a.PrismaClient},7153:(e,t)=>{var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},1802:(e,t,r)=>{e.exports=r(145)}};var t=require("../../../../webpack-api-runtime.js");t.C(e);var r=t(t.s=6023);module.exports=r})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=519,e.ids=[519],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6249:(e,r)=>{Object.defineProperty(r,"l",{enumerable:!0,get:function(){return function e(r,t){return t in r?r[t]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,t)):"function"==typeof r&&"default"===t?r:void 0}}})},1833:(e,r,t)=>{t.r(r),t.d(r,{config:()=>c,default:()=>l,routeModule:()=>p});var a={};t.r(a),t.d(a,{default:()=>d});var s=t(1802),n=t(7153),u=t(6249),i=t(3481),o=t(1026);async function d(e,r){if("POST"!==e.method)return r.status(405).json({success:!1,error:"Method not allowed"});try{let{username:t,password:a,email:s}=e.body;if(!t||!a)return r.status(400).json({success:!1,error:"Username and password are required"});if(t.length<3)return r.status(400).json({success:!1,error:"Username must be at least 3 characters"});if(a.length<6)return r.status(400).json({success:!1,error:"Password must be at least 6 characters"});if(await i.K.getUserByUsername(t))return r.status(409).json({success:!1,error:"Username already taken"});let n=await i.K.createUser(t,a,s),u=(0,o.RA)(n.id);return r.setHeader("Set-Cookie",`token=${u}; HttpOnly; Path=/; Max-Age=604800; SameSite=Strict`),r.status(201).json({success:!0,data:{user:{id:n.id,username:n.username,avatarUrl:n.avatarUrl,role:n.role,status:n.status},token:u}})}catch(e){return console.error("Registration error:",e),r.status(500).json({success:!1,error:"Registration failed"})}}let l=(0,u.l)(a,"default"),c=(0,u.l)(a,"config"),p=new s.PagesAPIRouteModule({definition:{kind:n.x.PAGES_API,page:"/api/v1/auth/register",pathname:"/api/v1/auth/register",bundlePath:"",filename:""},userland:a})},3481:(e,r,t)=>{t.d(r,{K:()=>n});var a=t(1450),s=t(1026);let n={async getUserById(e){let r=await a.Z.user.findUnique({where:{id:e},select:{id:!0,username:!0,avatarUrl:!0,role:!0,status:!0,createdAt:!0,lastLogin:!0}});return r?{...r,role:r.role,createdAt:r.createdAt.toISOString(),lastLogin:r.lastLogin?.toISOString()||new Date().toISOString(),avatarUrl:r.avatarUrl||""}:null},getUserByUsername:async e=>a.Z.user.findUnique({where:{username:e}}),async createUser(e,r,t){let n=await (0,s.c_)(r),u=`https://api.dicebear.com/7.x/avataaars/svg?seed=${e}`;return a.Z.user.create({data:{username:e,password:n,avatarUrl:u,role:"CREATOR",status:"ACTIVE"}})},async authenticateUser(e,r){let t=await this.getUserByUsername(e);return t&&t.password&&await (0,s.Gv)(r,t.password)?(await a.Z.user.update({where:{id:t.id},data:{lastLogin:new Date}}),{id:t.id,username:t.username,avatarUrl:t.avatarUrl||"",role:t.role,status:t.status,createdAt:t.createdAt.toISOString(),lastLogin:new Date().toISOString()}):null},getAllUsers:async()=>a.Z.user.findMany({orderBy:{createdAt:"desc"}}),updateUser:async(e,r)=>a.Z.user.update({where:{id:e},data:{username:r.username,avatarUrl:r.avatarUrl}}),updateUserRole:async(e,r)=>a.Z.user.update({where:{id:e},data:{role:r}}),async toggleUserStatus(e){let r=await a.Z.user.findUnique({where:{id:e}});if(!r)throw Error("User not found");let t="ACTIVE"===r.status?"BANNED":"ACTIVE";return a.Z.user.update({where:{id:e},data:{status:t}})}}},1026:(e,r,t)=>{t.d(r,{Gv:()=>d,RA:()=>l,WX:()=>c,c_:()=>o});var a=t(7096),s=t.n(a),n=t(9344),u=t.n(n);function i(){let e=process.env.JWT_SECRET;if(!e)throw Error("JWT_SECRET is not set");return e}async function o(e){return s().hash(e,10)}async function d(e,r){return s().compare(e,r)}function l(e){return u().sign({userId:e},i(),{expiresIn:"7d"})}function c(e){try{return u().verify(e,i())}catch(e){return null}}},1450:(e,r,t)=>{t.d(r,{Z:()=>s});var a=t(3524);let s=globalThis.prisma??new a.PrismaClient},7153:(e,r)=>{var t;Object.defineProperty(r,"x",{enumerable:!0,get:function(){return t}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(t||(t={}))},1802:(e,r,t)=>{e.exports=t(145)}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var t=r(r.s=1833);module.exports=t})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=113,e.ids=[113],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},5458:(e,r,t)=>{t.r(r),t.d(r,{config:()=>d,default:()=>c,routeModule:()=>p});var a={};t.r(a),t.d(a,{default:()=>l});var s=t(1802),i=t(7153),o=t(6249),u=t(8103),n=t(432);async function l(e,r){if("GET"===e.method){await (0,u.R)(e);try{let t=e.query.type,a=parseInt(e.query.page||"1",10)||1,s=parseInt(e.query.limit||"20",10)||20,i=e.query.q||"",{items:o,total:u}=await n.U.getAllMaterials(t,a,s,i),l=a*s<u;return r.status(200).json({success:!0,data:{items:o,total:u,page:a,limit:s,hasNext:l}})}catch(e){return console.error("Error fetching materials:",e),r.status(500).json({success:!1,error:"Failed to fetch materials"})}}if("POST"===e.method){if(!await (0,u.m)(e,r))return;try{let t=await n.U.createMaterial(e.user.id,e.body);return r.status(201).json({success:!0,data:t})}catch(e){return console.error("Error creating material:",e),r.status(500).json({success:!1,error:"Failed to create material"})}}return r.status(405).json({success:!1,error:"Method not allowed"})}let c=(0,o.l)(a,"default"),d=(0,o.l)(a,"config"),p=new s.PagesAPIRouteModule({definition:{kind:i.x.PAGES_API,page:"/api/v1/materials",pathname:"/api/v1/materials",bundlePath:"",filename:""},userland:a})}};var r=require("../../../webpack-api-runtime.js");r.C(e);var t=e=>r(r.s=e),a=r.X(0,[876],()=>t(5458));module.exports=a})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=854,e.ids=[854],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6213:(e,r,t)=>{t.r(r),t.d(r,{config:()=>f,default:()=>c,routeModule:()=>m});var s={};t.r(s),t.d(s,{default:()=>d});var a=t(1802),i=t(7153),o=t(6249),u=t(8103),n=t(432),l=t(7556);async function d(e,r){let{id:t}=e.query;if("string"!=typeof t)return r.status(400).json({success:!1,error:"Invalid material ID"});if("GET"===e.method){await (0,u.R)(e);try{let e=await n.U.getMaterialById(t);if(!e)return r.status(404).json({success:!1,error:"Material not found"});return r.status(200).json({success:!0,data:e})}catch(e){return console.error("Error fetching material:",e),r.status(500).json({success:!1,error:"Failed to fetch material"})}}if("DELETE"===e.method){if(!await (0,u.m)(e,r))return;try{let s=await n.U.getMaterialById(t);if(!s)return r.status(404).json({success:!1,error:"Material not found"});if(s.author.id!==e.user.id&&e.user.role!==l.i.ADMIN)return r.status(403).json({success:!1,error:"Not authorized to delete this material"});return await n.U.deleteMaterial(t),r.status(200).json({success:!0,message:"Material deleted successfully"})}catch(e){return console.error("Error deleting material:",e),r.status(500).json({success:!1,error:"Failed to delete material"})}}return r.status(405).json({success:!1,error:"Method not allowed"})}let c=(0,o.l)(s,"default"),f=(0,o.l)(s,"config"),m=new a.PagesAPIRouteModule({definition:{kind:i.x.PAGES_API,page:"/api/v1/materials/[id]",pathname:"/api/v1/materials/[id]",bundlePath:"",filename:""},userland:s})},7556:(e,r,t)=>{var s,a;t.d(r,{i:()=>s}),function(e){e.USER="USER",e.ADMIN="ADMIN",e.CREATOR="CREATOR",e.MANAGER="MANAGER"}(s||(s={})),function(e){e.CODE="CODE",e.ASSET_ZIP="ASSET_ZIP",e.VIDEO="VIDEO"}(a||(a={}))}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[876],()=>t(6213));module.exports=s})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=439,e.ids=[439],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},8855:(e,r,t)=>{t.r(r),t.d(r,{config:()=>m,default:()=>c,routeModule:()=>l});var s={};t.r(s),t.d(s,{default:()=>d});var a=t(1802),o=t(7153),i=t(6249),n=t(8103),u=t(432);async function d(e,r){if("POST"!==e.method)return r.status(405).json({success:!1,error:"Method not allowed"});if(!await (0,n.m)(e,r))return;let{id:t}=e.query,{content:s}=e.body;if("string"!=typeof t)return r.status(400).json({success:!1,error:"Invalid material ID"});if(!s||!s.trim())return r.status(400).json({success:!1,error:"Comment content is required"});try{let a=await u.U.addComment(t,e.user.id,s);return r.status(201).json({success:!0,data:a})}catch(e){return console.error("Error adding comment:",e),r.status(500).json({success:!1,error:"Failed to add comment"})}}let c=(0,i.l)(s,"default"),m=(0,i.l)(s,"config"),l=new a.PagesAPIRouteModule({definition:{kind:o.x.PAGES_API,page:"/api/v1/materials/[id]/comments",pathname:"/api/v1/materials/[id]/comments",bundlePath:"",filename:""},userland:s})}};var r=require("../../../../../webpack-api-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[876],()=>t(8855));module.exports=s})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=37,e.ids=[37],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},7732:(e,r,t)=>{t.r(r),t.d(r,{config:()=>c,default:()=>d,routeModule:()=>p});var s={};t.r(s),t.d(s,{default:()=>l});var a=t(1802),i=t(7153),o=t(6249),u=t(8103),n=t(432);async function l(e,r){if("POST"!==e.method)return r.status(405).json({success:!1,error:"Method not allowed"});if(!await (0,u.m)(e,r))return;let{id:t}=e.query;if("string"!=typeof t)return r.status(400).json({success:!1,error:"Invalid material ID"});try{let s=await n.U.toggleFavorite(t,e.user.id);return r.status(200).json({success:!0,data:{favorites:s}})}catch(e){return console.error("Error toggling favorite:",e),r.status(500).json({success:!1,error:"Failed to toggle favorite"})}}let d=(0,o.l)(s,"default"),c=(0,o.l)(s,"config"),p=new a.PagesAPIRouteModule({definition:{kind:i.x.PAGES_API,page:"/api/v1/materials/[id]/favorite",pathname:"/api/v1/materials/[id]/favorite",bundlePath:"",filename:""},userland:s})}};var r=require("../../../../../webpack-api-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[876],()=>t(7732));module.exports=s})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=766,e.ids=[766],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6705:e=>{e.exports=import("formidable")},7147:e=>{e.exports=require("fs")},1017:e=>{e.exports=require("path")},7610:(e,r,t)=>{t.a(e,async(e,s)=>{try{t.r(r),t.d(r,{config:()=>d,default:()=>u,routeModule:()=>p});var a=t(1802),i=t(7153),o=t(6249),n=t(3250),l=e([n]);n=(l.then?(await l)():l)[0];let u=(0,o.l)(n,"default"),d=(0,o.l)(n,"config"),p=new a.PagesAPIRouteModule({definition:{kind:i.x.PAGES_API,page:"/api/v1/materials/upload-video",pathname:"/api/v1/materials/upload-video",bundlePath:"",filename:""},userland:n});s()}catch(e){s(e)}})},9036:(e,r,t)=>{t.d(r,{A:()=>i,I:()=>a});let s={uploadMaxMB:3},a=()=>s,i=e=>("number"==typeof e.uploadMaxMB&&(s.uploadMaxMB=e.uploadMaxMB),s)},3250:(e,r,t)=>{t.a(e,async(e,s)=>{try{t.r(r),t.d(r,{config:()=>M,default:()=>m});var a=t(8103),i=t(9036),o=t(7556),n=t(432),l=t(6705),u=t(7147),d=t.n(u),p=t(1017),c=t.n(p),f=e([l]);l=(f.then?(await f)():f)[0];let M={api:{bodyParser:!1}};async function m(e,r){if("POST"!==e.method)return r.status(405).json({success:!1,error:"Method not allowed"});if(!await (0,a.m)(e,r))return;if(e.user.role!==o.i.MANAGER&&e.user.role!==o.i.ADMIN)return r.status(403).json({success:!1,error:"Manager role required"});let{uploadMaxMB:t}=(0,i.I)(),s=1048576*t,u=(0,l.default)({maxFileSize:s,multiples:!1,filter:({mimetype:e,originalFilename:r})=>{let t=(r||"").toLowerCase();return e?.startsWith("video/")||t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")}});try{let{fields:a,files:i}=await new Promise((r,t)=>{u.parse(e,(e,s,a)=>{e?t(e):r({fields:s,files:a})})}),o=(e=>{if(!e)return null;let r=Object.values(e||{});if(!r.length)return null;let t=r[0];return Array.isArray(t)?t[0]||null:t||null})(i);if(!o)return r.status(400).json({success:!1,error:"No file provided"});if((o.size||0)>s)return r.status(413).json({success:!1,error:`File too large. Max ${t}MB`});let l=c().join(process.cwd(),"public","uploads");d().existsSync(l)||d().mkdirSync(l,{recursive:!0});let p=`video_${Date.now()}_${c().basename(o.originalFilename||"video.mp4")}`,f=c().join(l,p),m=o.filepath||o.path;if(!m)return r.status(400).json({success:!1,error:"Invalid upload temp path"});await d().promises.copyFile(m,f);let M=`/uploads/${p}`,v=await n.U.createMaterial(e.user.id,{title:a?.title?.toString()||"Video Asset",description:a?.description?.toString()||"Uploaded video asset",type:"VIDEO",contentUrl:M,tags:(a?.tags?.toString()||"").split(",").filter(Boolean)});return r.status(201).json({success:!0,data:v})}catch(e){return console.error("Upload VIDEO error:",e),r.status(500).json({success:!1,error:e.message||"Upload failed"})}}s()}catch(e){s(e)}})},7556:(e,r,t)=>{var s,a;t.d(r,{i:()=>s}),function(e){e.USER="USER",e.ADMIN="ADMIN",e.CREATOR="CREATOR",e.MANAGER="MANAGER"}(s||(s={})),function(e){e.CODE="CODE",e.ASSET_ZIP="ASSET_ZIP",e.VIDEO="VIDEO"}(a||(a={}))}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[876],()=>t(7610));module.exports=s})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=447,e.ids=[447],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6705:e=>{e.exports=import("formidable")},7147:e=>{e.exports=require("fs")},1017:e=>{e.exports=require("path")},9596:(e,t,r)=>{r.a(e,async(e,a)=>{try{r.r(t),r.d(t,{config:()=>p,default:()=>u,routeModule:()=>d});var s=r(1802),i=r(7153),o=r(6249),l=r(120),n=e([l]);l=(n.then?(await n)():n)[0];let u=(0,o.l)(l,"default"),p=(0,o.l)(l,"config"),d=new s.PagesAPIRouteModule({definition:{kind:i.x.PAGES_API,page:"/api/v1/materials/upload-zip",pathname:"/api/v1/materials/upload-zip",bundlePath:"",filename:""},userland:l});a()}catch(e){a(e)}})},9036:(e,t,r)=>{r.d(t,{A:()=>i,I:()=>s});let a={uploadMaxMB:3},s=()=>a,i=e=>("number"==typeof e.uploadMaxMB&&(a.uploadMaxMB=e.uploadMaxMB),a)},120:(e,t,r)=>{r.a(e,async(e,a)=>{try{r.r(t),r.d(t,{config:()=>m,default:()=>f});var s=r(8103),i=r(9036),o=r(432),l=r(6705),n=r(7147),u=r.n(n),p=r(1017),d=r.n(p),c=e([l]);l=(c.then?(await c)():c)[0];let m={api:{bodyParser:!1}};async function f(e,t){if("POST"!==e.method)return t.status(405).json({success:!1,error:"Method not allowed"});if(!await (0,s.m)(e,t))return;let{uploadMaxMB:r}=(0,i.I)(),a=1048576*r,n=(0,l.default)({maxFileSize:a,multiples:!1,filter:({mimetype:e,originalFilename:t})=>"application/zip"===e||(t||"").toLowerCase().endsWith(".zip")});try{let{fields:s,files:i}=await new Promise((t,r)=>{n.parse(e,(e,a,s)=>{e?r(e):t({fields:a,files:s})})}),l=(e=>{if(!e)return null;let t=Object.values(e||{});if(!t.length)return null;let r=t[0];return Array.isArray(r)?r[0]||null:r||null})(i);if(!l)return t.status(400).json({success:!1,error:"No file provided"});if((l.size||0)>a)return t.status(413).json({success:!1,error:`File too large. Max ${r}MB`});let p=d().join(process.cwd(),"public","uploads");u().existsSync(p)||u().mkdirSync(p,{recursive:!0});let c=`zip_${Date.now()}_${d().basename(l.originalFilename||"asset.zip")}`,f=d().join(p,c),m=l.filepath||l.path;if(!m)return t.status(400).json({success:!1,error:"Invalid upload temp path"});await u().promises.copyFile(m,f);let x=`/uploads/${c}`,g=await o.U.createMaterial(e.user.id,{title:s?.title?.toString()||"ZIP Asset",description:s?.description?.toString()||"Uploaded ZIP asset",type:"ASSET_ZIP",contentUrl:x,tags:(s?.tags?.toString()||"").split(",").filter(Boolean)});return t.status(201).json({success:!0,data:g})}catch(e){return console.error("Upload ZIP error:",e),t.status(500).json({success:!1,error:e.message||"Upload failed"})}}a()}catch(e){a(e)}})}};var t=require("../../../../webpack-api-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[876],()=>r(9596));module.exports=a})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=701,e.ids=[701],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},6249:(e,t)=>{Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},7337:(e,t,r)=>{r.r(t),r.d(t,{config:()=>l,default:()=>c,routeModule:()=>f});var a={};r.r(a),r.d(a,{default:()=>d});var s=r(1802),n=r(7153),u=r(6249),i=r(8103),o=r(3481);async function d(e,t){if("PATCH"!==e.method)return t.status(405).json({success:!1,error:"Method not allowed"});if(await (0,i.m)(e,t))try{let{username:r,avatarUrl:a}=e.body,s=await o.K.updateUser(e.user.id,{username:r,avatarUrl:a});return t.status(200).json({success:!0,data:s})}catch(e){return console.error("Error updating user:",e),t.status(500).json({success:!1,error:"Failed to update user"})}}let c=(0,u.l)(a,"default"),l=(0,u.l)(a,"config"),f=new s.PagesAPIRouteModule({definition:{kind:n.x.PAGES_API,page:"/api/v1/users/me",pathname:"/api/v1/users/me",bundlePath:"",filename:""},userland:a})},3481:(e,t,r)=>{r.d(t,{K:()=>n});var a=r(1450),s=r(1026);let n={async getUserById(e){let t=await a.Z.user.findUnique({where:{id:e},select:{id:!0,username:!0,avatarUrl:!0,role:!0,status:!0,createdAt:!0,lastLogin:!0}});return t?{...t,role:t.role,createdAt:t.createdAt.toISOString(),lastLogin:t.lastLogin?.toISOString()||new Date().toISOString(),avatarUrl:t.avatarUrl||""}:null},getUserByUsername:async e=>a.Z.user.findUnique({where:{username:e}}),async createUser(e,t,r){let n=await (0,s.c_)(t),u=`https://api.dicebear.com/7.x/avataaars/svg?seed=${e}`;return a.Z.user.create({data:{username:e,password:n,avatarUrl:u,role:"CREATOR",status:"ACTIVE"}})},async authenticateUser(e,t){let r=await this.getUserByUsername(e);return r&&r.password&&await (0,s.Gv)(t,r.password)?(await a.Z.user.update({where:{id:r.id},data:{lastLogin:new Date}}),{id:r.id,username:r.username,avatarUrl:r.avatarUrl||"",role:r.role,status:r.status,createdAt:r.createdAt.toISOString(),lastLogin:new Date().toISOString()}):null},getAllUsers:async()=>a.Z.user.findMany({orderBy:{createdAt:"desc"}}),updateUser:async(e,t)=>a.Z.user.update({where:{id:e},data:{username:t.username,avatarUrl:t.avatarUrl}}),updateUserRole:async(e,t)=>a.Z.user.update({where:{id:e},data:{role:t}}),async toggleUserStatus(e){let t=await a.Z.user.findUnique({where:{id:e}});if(!t)throw Error("User not found");let r="ACTIVE"===t.status?"BANNED":"ACTIVE";return a.Z.user.update({where:{id:e},data:{status:r}})}}},1026:(e,t,r)=>{r.d(t,{Gv:()=>d,RA:()=>c,WX:()=>l,c_:()=>o});var a=r(7096),s=r.n(a),n=r(9344),u=r.n(n);function i(){let e=process.env.JWT_SECRET;if(!e)throw Error("JWT_SECRET is not set");return e}async function o(e){return s().hash(e,10)}async function d(e,t){return s().compare(e,t)}function c(e){return u().sign({userId:e},i(),{expiresIn:"7d"})}function l(e){try{return u().verify(e,i())}catch(e){return null}}},8103:(e,t,r)=>{r.d(t,{R:()=>u,m:()=>n});var a=r(1026),s=r(3481);async function n(e,t){let r=i(e);if(!r)return t.status(401).json({success:!1,error:"Authentication required"}),!1;let n=(0,a.WX)(r);if(!n)return t.status(401).json({success:!1,error:"Invalid or expired token"}),!1;let u=await s.K.getUserById(n.userId);return u?"BANNED"===u.status?(t.status(403).json({success:!1,error:"Account has been banned"}),!1):(e.user=u,!0):(t.status(401).json({success:!1,error:"User not found"}),!1)}async function u(e){let t=i(e);if(!t)return;let r=(0,a.WX)(t);if(!r)return;let n=await s.K.getUserById(r.userId);n&&"BANNED"!==n.status&&(e.user=n)}function i(e){if(e.cookies.token)return e.cookies.token;let t=e.headers.authorization;return t&&t.startsWith("Bearer ")?t.substring(7):null}},1450:(e,t,r)=>{r.d(t,{Z:()=>s});var a=r(3524);let s=globalThis.prisma??new a.PrismaClient},7153:(e,t)=>{var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},1802:(e,t,r)=>{e.exports=r(145)}};var t=require("../../../../webpack-api-runtime.js");t.C(e);var r=t(t.s=7337);module.exports=r})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=762,e.ids=[762],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},1991:(e,r,t)=>{t.r(r),t.d(r,{config:()=>p,default:()=>l,routeModule:()=>c});var s={};t.r(s),t.d(s,{default:()=>d});var a=t(1802),i=t(7153),o=t(6249),u=t(8103),n=t(432);async function d(e,r){if("GET"!==e.method)return r.status(405).json({success:!1,error:"Method not allowed"});try{if(!await (0,u.m)(e,r))return;let t=parseInt(e.query.page||"1",10)||1,s=parseInt(e.query.limit||"20",10)||20,{items:a,total:i}=await n.U.getFavoritedMaterialsByUser(e.user.id,t,s),o=t*s<i;return r.status(200).json({success:!0,data:{items:a,total:i,page:t,limit:s,hasNext:o},timestamp:new Date().toISOString()})}catch(e){return console.error("Get user favorites error:",e),r.status(500).json({success:!1,error:e.message||"Failed to get favorites"})}}let l=(0,o.l)(s,"default"),p=(0,o.l)(s,"config"),c=new a.PagesAPIRouteModule({definition:{kind:i.x.PAGES_API,page:"/api/v1/users/me/favorites",pathname:"/api/v1/users/me/favorites",bundlePath:"",filename:""},userland:s})}};var r=require("../../../../../webpack-api-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[876],()=>t(1991));module.exports=s})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(()=>{var e={};e.id=263,e.ids=[263],e.modules={3524:e=>{e.exports=require("@prisma/client")},7096:e=>{e.exports=require("bcrypt")},9344:e=>{e.exports=require("jsonwebtoken")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},8134:(e,r,t)=>{t.r(r),t.d(r,{config:()=>p,default:()=>d,routeModule:()=>m});var s={};t.r(s),t.d(s,{default:()=>l});var a=t(1802),i=t(7153),u=t(6249),o=t(8103),n=t(432);async function l(e,r){if("GET"!==e.method)return r.status(405).json({success:!1,error:"Method not allowed"});try{if(!await (0,o.m)(e,r))return;let{user:t}=e,s=parseInt(e.query.page||"1",10)||1,a=parseInt(e.query.limit||"20",10)||20,{items:i,total:u}=await n.U.getMaterialsByAuthor(t.id,s,a),l=s*a<u;return r.status(200).json({success:!0,data:{items:i,total:u,page:s,limit:a,hasNext:l},timestamp:new Date().toISOString()})}catch(e){return console.error("Get user materials error:",e),r.status(500).json({success:!1,error:e.message||"Failed to get materials"})}}let d=(0,u.l)(s,"default"),p=(0,u.l)(s,"config"),m=new a.PagesAPIRouteModule({definition:{kind:i.x.PAGES_API,page:"/api/v1/users/me/materials",pathname:"/api/v1/users/me/materials",bundlePath:"",filename:""},userland:s})}};var r=require("../../../../../webpack-api-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[876],()=>t(8134));module.exports=s})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":1,"files":["../../webpack-runtime.js","../../chunks/859.js","../../chunks/721.js","../../chunks/726.js","../../../../package.json"]}

View File

@@ -0,0 +1 @@
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>NEXUS_MAT.OS</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/93a7e244351c21c3.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/93a7e244351c21c3.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-8fa1640cc84ba8fe.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/framework-03cd576e71e4cd66.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/main-a87b5ffee240b6be.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_app-33f3889526a1f6be.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/605-a9ef1a4d7e037b3d.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/auth/register-7764882a4d5e8b33.js" defer="" crossorigin=""></script><script src="/_next/static/ZILm_S7wuNLBJvcXdOxKg/_buildManifest.js" defer="" crossorigin=""></script><script src="/_next/static/ZILm_S7wuNLBJvcXdOxKg/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div class="min-h-screen flex items-center justify-center relative overflow-hidden bg-[#020202]"><div class="absolute inset-0 bg-[url(&#x27;https://grainy-gradients.vercel.app/noise.svg&#x27;)] opacity-20"></div><div class="absolute bottom-0 right-0 w-[600px] h-[600px] bg-cyber-pink/5 rounded-full blur-[100px] pointer-events-none"></div><div class="w-full max-w-lg p-8 relative z-10"><div class="mb-8 text-center"><h1 class="text-3xl font-mono font-bold text-white mb-2">JOIN_NETWORK</h1><p class="text-xs text-gray-500 font-mono">ESTABLISH NEW NEURAL LINK</p></div><div class="bg-cyber-panel/40 backdrop-blur-md border border-white/10 p-8 rounded-lg shadow-2xl"><form class="space-y-4"><div class="space-y-2"><label class="text-[10px] font-mono text-gray-400">USERNAME</label><div class="relative"><input name="username" type="text" class="w-full bg-black/50 border border-gray-800 focus:border-cyber-pink text-white p-2.5 pl-8 rounded-sm outline-none font-mono text-sm" required=""/><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user absolute left-2.5 top-3 text-gray-600 w-3 h-3"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg></div></div><div class="space-y-2"><label class="text-[10px] font-mono text-gray-400">PASSWORD</label><div class="relative"><input name="password" type="password" class="w-full bg-black/50 border border-gray-800 focus:border-cyber-pink text-white p-2.5 pl-8 rounded-sm outline-none font-mono text-sm" required=""/><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lock absolute left-2.5 top-3 text-gray-600 w-3 h-3"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg></div></div><div class="space-y-2"><label class="text-[10px] font-mono text-gray-400">CONFIRM_PASSWORD</label><div class="relative"><input name="confirmPassword" type="password" class="w-full bg-black/50 border border-gray-800 focus:border-cyber-pink text-white p-2.5 pl-8 rounded-sm outline-none font-mono text-sm" required=""/><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check absolute left-2.5 top-3 text-gray-600 w-3 h-3"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg></div></div><button type="submit" class="w-full bg-cyber-pink text-white font-bold py-3 mt-4 hover:bg-white hover:text-black transition-colors font-mono uppercase tracking-wider shadow-[0_0_15px_rgba(255,0,85,0.3)]">CREATE_ACCOUNT</button></form><div class="mt-6 text-center text-xs font-mono text-gray-500">ALREADY LINKED? <a class="text-cyber-pink hover:underline" href="/auth/login">ACCESS_TERMINAL</a></div></div></div></div><div class="fixed top-4 right-4 z-[9999] space-y-2"></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{}},"page":"/auth/register","query":{},"buildId":"ZILm_S7wuNLBJvcXdOxKg","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>

View File

@@ -0,0 +1 @@
{"version":1,"files":["../../webpack-runtime.js","../../chunks/859.js","../../chunks/721.js","../../chunks/726.js","../../../../package.json"]}

View File

@@ -0,0 +1 @@
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>NEXUS_MAT.OS</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/93a7e244351c21c3.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/93a7e244351c21c3.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-8fa1640cc84ba8fe.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/framework-03cd576e71e4cd66.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/main-a87b5ffee240b6be.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_app-33f3889526a1f6be.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/221-4d0521e8c44484d0.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/console-4f917759f5d20401.js" defer="" crossorigin=""></script><script src="/_next/static/ZILm_S7wuNLBJvcXdOxKg/_buildManifest.js" defer="" crossorigin=""></script><script src="/_next/static/ZILm_S7wuNLBJvcXdOxKg/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div class="min-h-screen bg-black text-red-600 font-mono flex items-center justify-center p-4 relative overflow-hidden"><div class="absolute inset-0 z-0 opacity-20 pointer-events-none" style="background-image:linear-gradient(rgba(255, 0, 0, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 0, 0, 0.1) 1px, transparent 1px);background-size:20px 20px"></div><div class="w-full max-w-md z-10 border border-red-900 bg-black/80 backdrop-blur-sm p-8 shadow-[0_0_50px_rgba(220,38,38,0.2)]"><div class="flex justify-center mb-8"><svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-alert animate-pulse"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="M12 8v4"></path><path d="M12 16h.01"></path></svg></div><h1 class="text-3xl font-bold text-center mb-2 tracking-widest">NEXUS<span class="text-white">_CORE</span></h1><p class="text-center text-xs text-red-800 mb-8">RESTRICTED AREA // AUTHORIZED PERSONNEL ONLY</p><form class="space-y-6"><div class="space-y-2"><label class="text-xs">IDENTIFIER</label><div class="relative"><input type="text" class="w-full bg-red-950/20 border border-red-900 p-3 text-red-500 focus:outline-none focus:border-red-500 transition-colors" placeholder="admin" value=""/><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lock absolute right-3 top-3 text-red-900"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg></div></div><div class="space-y-2"><label class="text-xs">KEY_PHRASE</label><div class="relative"><input type="password" class="w-full bg-red-950/20 border border-red-900 p-3 text-red-500 focus:outline-none focus:border-red-500 transition-colors" placeholder="••••••••" value=""/></div></div><button class="w-full py-4 bg-red-700 hover:bg-red-600 text-black font-bold tracking-widest transition-colors disabled:opacity-50 disabled:cursor-not-allowed">ESTABLISH_CONNECTION</button></form><div class="mt-8 text-[10px] text-center text-red-900">SYSTEM_ID: 0x8842-ALPHA <br/> IP_LOGGED: 127.0.0.1</div></div></div><div class="fixed top-4 right-4 z-[9999] space-y-2"></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{}},"page":"/console","query":{},"buildId":"ZILm_S7wuNLBJvcXdOxKg","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>

View File

@@ -0,0 +1 @@
{"version":1,"files":["../webpack-runtime.js","../chunks/859.js","../chunks/221.js","../chunks/149.js","../../../package.json"]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(()=>{"use strict";var e={},r={};function o(t){var a=r[t];if(void 0!==a)return a.exports;var n=r[t]={exports:{}},u=!0;try{e[t](n,n.exports,o),u=!1}finally{u&&delete r[t]}return n.exports}o.m=e,(()=>{var e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",r="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",t="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",a=e=>{e&&!e.d&&(e.d=1,e.forEach(e=>e.r--),e.forEach(e=>e.r--?e.r++:e()))},n=o=>o.map(o=>{if(null!==o&&"object"==typeof o){if(o[e])return o;if(o.then){var n=[];n.d=0,o.then(e=>{u[r]=e,a(n)},e=>{u[t]=e,a(n)});var u={};return u[e]=e=>e(n),u}}var p={};return p[e]=e=>{},p[r]=o,p});o.a=(o,u,p)=>{p&&((f=[]).d=1);var f,i,l,s,d=new Set,c=o.exports,b=new Promise((e,r)=>{s=r,l=e});b[r]=c,b[e]=e=>(f&&e(f),d.forEach(e),b.catch(e=>{})),o.exports=b,u(o=>{i=n(o);var a,u=()=>i.map(e=>{if(e[t])throw e[t];return e[r]}),p=new Promise(r=>{(a=()=>r(u)).r=0;var o=e=>e!==f&&!d.has(e)&&(d.add(e),e&&!e.d&&(a.r++,e.push(a)));i.map(r=>r[e](o))});return a.r?p:u()},e=>(e?s(b[t]=e):l(c),a(f))),f&&(f.d=0)}})(),o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce((r,t)=>(o.f[t](e,r),r),[])),o.u=e=>""+e+".js",o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.X=(e,r,t)=>{var a=r;t||(r=e,t=()=>o(o.s=a)),r.map(o.e,o);var n=t();return void 0===n?e:n},(()=>{var e={165:1},r=r=>{var t=r.modules,a=r.ids,n=r.runtime;for(var u in t)o.o(t,u)&&(o.m[u]=t[u]);n&&n(o);for(var p=0;p<a.length;p++)e[a[p]]=1};o.f.require=(t,a)=>{e[t]||(165!=t?r(require("./chunks/"+o.u(t))):e[t]=1)},module.exports=o,o.C=r})()})();

View File

@@ -0,0 +1 @@
(()=>{"use strict";var e={},r={};function o(t){var a=r[t];if(void 0!==a)return a.exports;var n=r[t]={exports:{}},u=!0;try{e[t](n,n.exports,o),u=!1}finally{u&&delete r[t]}return n.exports}o.m=e,(()=>{var e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",r="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",t="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",a=e=>{e&&!e.d&&(e.d=1,e.forEach(e=>e.r--),e.forEach(e=>e.r--?e.r++:e()))},n=o=>o.map(o=>{if(null!==o&&"object"==typeof o){if(o[e])return o;if(o.then){var n=[];n.d=0,o.then(e=>{u[r]=e,a(n)},e=>{u[t]=e,a(n)});var u={};return u[e]=e=>e(n),u}}var p={};return p[e]=e=>{},p[r]=o,p});o.a=(o,u,p)=>{p&&((f=[]).d=1);var f,i,l,s,d=new Set,c=o.exports,b=new Promise((e,r)=>{s=r,l=e});b[r]=c,b[e]=e=>(f&&e(f),d.forEach(e),b.catch(e=>{})),o.exports=b,u(o=>{i=n(o);var a,u=()=>i.map(e=>{if(e[t])throw e[t];return e[r]}),p=new Promise(r=>{(a=()=>r(u)).r=0;var o=e=>e!==f&&!d.has(e)&&(d.add(e),e&&!e.d&&(a.r++,e.push(a)));i.map(r=>r[e](o))});return a.r?p:u()},e=>(e?s(b[t]=e):l(c),a(f))),f&&(f.d=0)}})(),o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce((r,t)=>(o.f[t](e,r),r),[])),o.u=e=>""+e+".js",o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.X=(e,r,t)=>{var a=r;t||(r=e,t=()=>o(o.s=a)),r.map(o.e,o);var n=t();return void 0===n?e:n},(()=>{var e={658:1},r=r=>{var t=r.modules,a=r.ids,n=r.runtime;for(var u in t)o.o(t,u)&&(o.m[u]=t[u]);n&&n(o);for(var p=0;p<a.length;p++)e[a[p]]=1};o.f.require=(t,a)=>{e[t]||(658!=t?r(require("./chunks/"+o.u(t))):e[t]=1)},module.exports=o,o.C=r})()})();