feat: Docker部署与CI/CD集成, 搜索栏修复, 上传目录改为data
This commit is contained in:
1
.next/server/pages/api/v1/auth/login.js
Normal file
1
.next/server/pages/api/v1/auth/login.js
Normal 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})();
|
||||
1
.next/server/pages/api/v1/auth/login.js.nft.json
Normal file
1
.next/server/pages/api/v1/auth/login.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
1
.next/server/pages/api/v1/auth/logout.js
Normal file
1
.next/server/pages/api/v1/auth/logout.js
Normal 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})();
|
||||
1
.next/server/pages/api/v1/auth/logout.js.nft.json
Normal file
1
.next/server/pages/api/v1/auth/logout.js.nft.json
Normal 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"]}
|
||||
1
.next/server/pages/api/v1/auth/me.js
Normal file
1
.next/server/pages/api/v1/auth/me.js
Normal 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})();
|
||||
1
.next/server/pages/api/v1/auth/me.js.nft.json
Normal file
1
.next/server/pages/api/v1/auth/me.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
1
.next/server/pages/api/v1/auth/register.js
Normal file
1
.next/server/pages/api/v1/auth/register.js
Normal 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})();
|
||||
1
.next/server/pages/api/v1/auth/register.js.nft.json
Normal file
1
.next/server/pages/api/v1/auth/register.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user