diff --git a/.env.development b/.env.development deleted file mode 100644 index 3a2f2c6..0000000 --- a/.env.development +++ /dev/null @@ -1,4 +0,0 @@ -# 开发环境使用的变量 - -NEXT_PUBLIC_HOST = 'http://39.103.180.196:9012/' - diff --git a/next.config.mjs b/next.config.mjs index 7642c41..619e0e0 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -3,7 +3,7 @@ const nextConfig = { async rewrites() { return [ { - source: '/api/:path*', + source: '/queyueapi/:path*', destination: `${process.env.NEXT_PUBLIC_HOST}/:path*`, }, ]; diff --git a/package-lock.json b/package-lock.json index 13eb25f..d011472 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "lodash": "^4.17.21", "next": "14.1.3", + "next-auth": "^4.24.7", "react": "^18", "react-dom": "^18", "swr": "^2.2.5" @@ -718,7 +719,6 @@ "version": "7.24.0", "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.0.tgz", "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", - "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2500,6 +2500,14 @@ "node": ">= 8" } }, + "node_modules/@panva/hkdf": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@panva/hkdf/-/hkdf-1.1.1.tgz", + "integrity": "sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -4010,6 +4018,14 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz", @@ -5940,6 +5956,14 @@ "jiti": "bin/jiti.js" } }, + "node_modules/jose": { + "version": "4.15.5", + "resolved": "https://registry.npmmirror.com/jose/-/jose-4.15.5.tgz", + "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6633,6 +6657,33 @@ } } }, + "node_modules/next-auth": { + "version": "4.24.7", + "resolved": "https://registry.npmmirror.com/next-auth/-/next-auth-4.24.7.tgz", + "integrity": "sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@panva/hkdf": "^1.0.2", + "cookie": "^0.5.0", + "jose": "^4.15.5", + "oauth": "^0.9.15", + "openid-client": "^5.4.0", + "preact": "^10.6.3", + "preact-render-to-string": "^5.1.19", + "uuid": "^8.3.2" + }, + "peerDependencies": { + "next": "^12.2.5 || ^13 || ^14", + "nodemailer": "^6.6.5", + "react": "^17.0.2 || ^18", + "react-dom": "^17.0.2 || ^18" + }, + "peerDependenciesMeta": { + "nodemailer": { + "optional": true + } + } + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz", @@ -6697,6 +6748,11 @@ "node": ">=12" } }, + "node_modules/oauth": { + "version": "0.9.15", + "resolved": "https://registry.npmmirror.com/oauth/-/oauth-0.9.15.tgz", + "integrity": "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==" + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", @@ -6706,6 +6762,14 @@ "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz", @@ -6812,6 +6876,14 @@ "ufo": "^1.3.0" } }, + "node_modules/oidc-token-hash": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz", + "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==", + "engines": { + "node": "^10.13.0 || >=12.0.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", @@ -6833,6 +6905,31 @@ "node": ">=12" } }, + "node_modules/openid-client": { + "version": "5.6.5", + "resolved": "https://registry.npmmirror.com/openid-client/-/openid-client-5.6.5.tgz", + "integrity": "sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==", + "dependencies": { + "jose": "^4.15.5", + "lru-cache": "^6.0.0", + "object-hash": "^2.2.0", + "oidc-token-hash": "^5.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/openid-client/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz", @@ -7506,6 +7603,26 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, + "node_modules/preact": { + "version": "10.20.1", + "resolved": "https://registry.npmmirror.com/preact/-/preact-10.20.1.tgz", + "integrity": "sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/preact-render-to-string": { + "version": "5.2.6", + "resolved": "https://registry.npmmirror.com/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz", + "integrity": "sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==", + "dependencies": { + "pretty-format": "^3.8.0" + }, + "peerDependencies": { + "preact": ">=10" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -7539,6 +7656,11 @@ "node": ">=6.0.0" } }, + "node_modules/pretty-format": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/pretty-format/-/pretty-format-3.8.0.tgz", + "integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz", @@ -7627,8 +7749,7 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", @@ -8591,6 +8712,14 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vite": { "version": "5.1.6", "resolved": "https://registry.npmmirror.com/vite/-/vite-5.1.6.tgz", @@ -8823,8 +8952,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "17.7.2", diff --git a/package.json b/package.json index bbaa667..dcd465d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dependencies": { "lodash": "^4.17.21", "next": "14.1.3", + "next-auth": "^4.24.7", "react": "^18", "react-dom": "^18", "swr": "^2.2.5" diff --git a/src/app/api/auth/[...nextauth]/options.ts b/src/app/api/auth/[...nextauth]/options.ts new file mode 100644 index 0000000..b193489 --- /dev/null +++ b/src/app/api/auth/[...nextauth]/options.ts @@ -0,0 +1,69 @@ +import { NextAuthOptions } from 'next-auth'; +import CredentialsProvider from 'next-auth/providers/credentials'; + +import { apiUserLogin } from '@/services'; + +const options: NextAuthOptions = { + providers: [ + CredentialsProvider({ + name: 'Credentials', + credentials: { + mobile: { + label: 'mobile:', + type: 'text', + placeholder: 'your-cool-mobile', + }, + mobileCheckCode: { + label: 'mobileCheckCode:', + type: 'password', + placeholder: 'mobileCheckCode', + }, + }, + async authorize(credentials) { + const params = { + mobile: credentials?.mobile ?? '', + mobileCheckCode: credentials?.mobileCheckCode ?? '', + deviceId: 'aaaaaaaaaaaaa', + }; + try { + const result = await apiUserLogin(params); + if (result.code === 200) { + return result.data; + } else { + console.log(`error ${result.code}/${result.messgae}`); + throw new Error(`error ${result.code}/${result.messgae}`); + } + } catch (error) { + throw error; + } + }, + }), + ], + session: { + strategy: 'jwt', + maxAge: 7 * 24 * 60 * 60, + }, + pages: { + signIn: '/', // 重定向到 /login + }, + // callbacks: { + // async jwt({ token, user }) { + // if (user) { + // console.log(user); + // // token.id = user.id; + // // token.phone = user.phone; + // } + // return token; + // }, + // async session({ session, token }) { + // return session; + // // (session as Session & { accessToken: string | undefined }).accessToken = token.accessToken as string; + // // if (session.user) { + // // session.user.name = token.name as string; + // // } + // // return session; + // }, + // }, +}; + +export default options; diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts new file mode 100644 index 0000000..9a8c172 --- /dev/null +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -0,0 +1,7 @@ +import NextAuth from 'next-auth'; + +import options from './options'; + +const handler = NextAuth(options); + +export { handler as GET, handler as POST }; diff --git a/src/components/Header.tsx b/src/components/Header.tsx index b5d8889..cc92fe2 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -49,7 +49,7 @@ export default function Header() { diff --git a/src/middleware.ts b/src/middleware.ts new file mode 100644 index 0000000..3bc7c19 --- /dev/null +++ b/src/middleware.ts @@ -0,0 +1,7 @@ +// Without a defined matcher, this one line applies next-auth +// to the entire project +export { default } from 'next-auth/middleware'; + +// Applies next-auth only to matching routes - can be regex +// Ref: https://nextjs.org/docs/app/building-your-application/routing/middleware#matcher +export const config = { matcher: ['/extra', '/dashboard'] }; diff --git a/src/services/client/user.ts b/src/services/client/user.ts index b3a82e3..abf928a 100644 --- a/src/services/client/user.ts +++ b/src/services/client/user.ts @@ -20,26 +20,6 @@ export const apiSendSMS = async (params: { return res; }; -/** - * @description 登录/注册 - * @id 手机号 - * @deviceId 设备id - * @countryCode 国家码,默认为‘+86’ - * @imageCheckCode 图形验证码 - */ -export const apiUserLogin = async (params: { - mobile: string; - mobileCheckCode: string; - deviceId: string; - deviceBrand?: string; -}) => { - const res = await request('/user/user/appLogin', { - method: 'POST', - body: params, - }); - return res; -}; - /** * @description 退出登录 */ diff --git a/src/services/server/user.ts b/src/services/server/user.ts index ea8a6e5..8f472ba 100644 --- a/src/services/server/user.ts +++ b/src/services/server/user.ts @@ -1,4 +1,24 @@ -import { request, verifyResponse } from '@/utils'; +import { request, verifyResponse, getServerApiUrl } from '@/utils'; + +/** + * @description 登录/注册 + * @id 手机号 + * @deviceId 设备id + * @countryCode 国家码,默认为‘+86’ + * @imageCheckCode 图形验证码 + */ +export const apiUserLogin = async (params: { + mobile: string; + mobileCheckCode: string; + deviceId: string; + deviceBrand?: string; +}) => { + const res = await request(getServerApiUrl('/luoo-user/user/appLogin'), { + method: 'POST', + body: params, + }); + return res; +}; /** * @description 获取支持的手机号国家码 diff --git a/src/utils/helpers.ts b/src/utils/helpers.ts index 204325a..c5346da 100644 --- a/src/utils/helpers.ts +++ b/src/utils/helpers.ts @@ -1,8 +1,13 @@ /** * @description 获取API URL,根据环境进行判断 */ -export const getApiUrl = (originUrl: string): string => { - return `api/${originUrl}`; + +export const getServerApiUrl = (originUrl: string): string => { + return `${process.env.NEXT_PUBLIC_HOST}${originUrl}`; +}; + +export const getClientApiUrl = (originUrl: string): string => { + return `queyueapi/${originUrl}`; }; /** diff --git a/src/utils/index.ts b/src/utils/index.ts index 6d448ce..63f4e52 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,3 +1,4 @@ export { default as request } from './request'; export { default as verifyResponse } from './verifyResponse'; +export * from './helpers'; export * from './wrapper'; diff --git a/src/utils/nextRequest.ts b/src/utils/nextRequest.ts index c527c8c..b942179 100644 --- a/src/utils/nextRequest.ts +++ b/src/utils/nextRequest.ts @@ -6,7 +6,7 @@ export const nextFetchGet = async (api: string) => { const token = nextCookies.get('token') || ''; const role = nextCookies.get('role'); const roleId = nextCookies.get('roleId'); - const url = `${process.env.BASE_FETCH_URL}/api/be${api}`; + const url = `${process.env.BASE_FETCH_URL}/queyueapi/be${api}`; const res = await fetch(url, { headers: token ? { Authorization: 'Bearer ' + token } : {}, }); diff --git a/src/utils/request.ts b/src/utils/request.ts index a149445..117a41e 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -11,10 +11,11 @@ interface RequestOptions extends RequestInit { // 发送数据请求 const request = async (url: string, config?: RequestOptions) => { const method = config?.method || 'GET'; - const finalUrl = method === 'POST' ? `api/${url}` : `${process.env.NEXT_PUBLIC_HOST}/${url}`; + // const finalUrl = method === 'POST' ? `/queyueapi${url}` : `${process.env.NEXT_PUBLIC_HOST}/${url}`; + const finalUrl = method === 'POST' ? `${url}` : `${process.env.NEXT_PUBLIC_HOST}/${url}`; const inital: RequestOptions = { - method: 'GET', + method: method, body: null, headers: { 'Content-Type': 'application/x-www-form-urlencoded', diff --git a/uno.config.ts b/uno.config.ts index a4060dc..6c2fbfa 100644 --- a/uno.config.ts +++ b/uno.config.ts @@ -27,5 +27,7 @@ export default defineConfig({ 'switch-span-base': 'bg-white dark:bg-gray-300 switch-animation', 'text-theme': 'text-[#B44343]', 'text-overflow': 'overflow-hidden whitespace-nowrap overflow-ellipsis truncate', + 'border-theme': 'border-[#B44343]', + 'bg-theme': 'bg-[#B44343]', }, }); diff --git a/yarn.lock b/yarn.lock index 91447aa..f77ac5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -275,7 +275,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.24.1" "@babel/plugin-transform-typescript" "^7.24.1" -"@babel/runtime@^7.23.2": +"@babel/runtime@^7.20.13", "@babel/runtime@^7.23.2": version "7.24.0" resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.0.tgz" integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw== @@ -921,6 +921,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@panva/hkdf@^1.0.2": + version "1.1.1" + resolved "https://registry.npmmirror.com/@panva/hkdf/-/hkdf-1.1.1.tgz" + integrity sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA== + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" @@ -1821,6 +1826,11 @@ convert-source-map@^2.0.0: resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +cookie@^0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + cosmiconfig-typescript-loader@^5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz" @@ -3096,6 +3106,11 @@ jiti@^1.19.1, jiti@^1.20.0: resolved "https://registry.npmmirror.com/jiti/-/jiti-1.21.0.tgz" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== +jose@^4.15.5: + version "4.15.5" + resolved "https://registry.npmmirror.com/jose/-/jose-4.15.5.tgz" + integrity sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz" @@ -3463,7 +3478,22 @@ natural-compare@^1.4.0: resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next@14.1.3: +next-auth@^4.24.7: + version "4.24.7" + resolved "https://registry.npmmirror.com/next-auth/-/next-auth-4.24.7.tgz" + integrity sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ== + dependencies: + "@babel/runtime" "^7.20.13" + "@panva/hkdf" "^1.0.2" + cookie "^0.5.0" + jose "^4.15.5" + oauth "^0.9.15" + openid-client "^5.4.0" + preact "^10.6.3" + preact-render-to-string "^5.1.19" + uuid "^8.3.2" + +"next@^12.2.5 || ^13 || ^14", next@14.1.3: version "14.1.3" resolved "https://registry.npmmirror.com/next/-/next-14.1.3.tgz" integrity sha512-oexgMV2MapI0UIWiXKkixF8J8ORxpy64OuJ/J9oVUmIthXOUCcuVEZX+dtpgq7wIfIqtBwQsKEDXejcjTsan9g== @@ -3520,11 +3550,21 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" +oauth@^0.9.15: + version "0.9.15" + resolved "https://registry.npmmirror.com/oauth/-/oauth-0.9.15.tgz" + integrity sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA== + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-hash@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/object-hash/-/object-hash-2.2.0.tgz" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + object-inspect@^1.13.1: version "1.13.1" resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz" @@ -3600,6 +3640,11 @@ ofetch@^1.3.3: node-fetch-native "^1.4.0" ufo "^1.3.0" +oidc-token-hash@^5.0.3: + version "5.0.3" + resolved "https://registry.npmmirror.com/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz" + integrity sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw== + once@^1.3.0: version "1.4.0" resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz" @@ -3628,6 +3673,16 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" +openid-client@^5.4.0: + version "5.6.5" + resolved "https://registry.npmmirror.com/openid-client/-/openid-client-5.6.5.tgz" + integrity sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w== + dependencies: + jose "^4.15.5" + lru-cache "^6.0.0" + object-hash "^2.2.0" + oidc-token-hash "^5.0.3" + optionator@^0.9.3: version "0.9.3" resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz" @@ -4059,6 +4114,18 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" +preact-render-to-string@^5.1.19: + version "5.2.6" + resolved "https://registry.npmmirror.com/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz" + integrity sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw== + dependencies: + pretty-format "^3.8.0" + +preact@^10.6.3, preact@>=10: + version "10.20.1" + resolved "https://registry.npmmirror.com/preact/-/preact-10.20.1.tgz" + integrity sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -4076,6 +4143,11 @@ prettier@^3.2.5, prettier@>=3.0.0: resolved "https://registry.npmmirror.com/prettier/-/prettier-3.2.5.tgz" integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== +pretty-format@^3.8.0: + version "3.8.0" + resolved "https://registry.npmmirror.com/pretty-format/-/pretty-format-3.8.0.tgz" + integrity sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew== + prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz" @@ -4095,7 +4167,7 @@ queue-microtask@^1.2.2: resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -react-dom@^18, react-dom@^18.2.0: +"react-dom@^17.0.2 || ^18", react-dom@^18, react-dom@^18.2.0: version "18.2.0" resolved "https://registry.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== @@ -4108,7 +4180,7 @@ react-is@^16.13.1: resolved "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", react@^18, react@^18.2.0, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0": +"react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18", react@^18, react@^18.2.0, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0": version "18.2.0" resolved "https://registry.npmmirror.com/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -4780,6 +4852,11 @@ util-deprecate@^1.0.2: resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + "vite@^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0": version "5.1.6" resolved "https://registry.npmmirror.com/vite/-/vite-5.1.6.tgz"