diff --git a/.env.example b/.env.example index 5286837..2e4b31e 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,10 @@ DATABASE_URI=postgres://postgres:@127.0.0.1:5432/your-database-name PAYLOAD_SECRET=YOUR_SECRET_HERE -DOMIAN_NAME= +PORT=9889 + +DOMAIN_NAME=localhost:3000 +SERVER_URL=http://localhost:3000 SMTP_HOST= SMTP_USER= diff --git a/package-lock.json b/package-lock.json index 14a46a6..8fb9e00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@headlessui/react": "^2.2.1", "@heroicons/react": "^2.2.0", "@hookform/resolvers": "^5.0.1", + "@next/env": "^15.3.1", "@payloadcms/db-postgres": "3.31.0", "@payloadcms/next": "3.31.0", "@payloadcms/payload-cloud": "3.31.0", @@ -3337,9 +3338,9 @@ } }, "node_modules/@next/env": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.3.tgz", - "integrity": "sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==", + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.1.tgz", + "integrity": "sha512-cwK27QdzrMblHSn9DZRV+DQscHXRuJv6MydlJRpFSqJWZrTYMLzKDeyueJNN9MGd8NNiUKzDQADAf+dMLXX7YQ==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -12069,6 +12070,12 @@ "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, + "node_modules/next/node_modules/@next/env": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.3.tgz", + "integrity": "sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==", + "license": "MIT" + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", diff --git a/package.json b/package.json index eaef63c..c42ce5d 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@headlessui/react": "^2.2.1", "@heroicons/react": "^2.2.0", "@hookform/resolvers": "^5.0.1", + "@next/env": "^15.3.1", "@payloadcms/db-postgres": "3.31.0", "@payloadcms/next": "3.31.0", "@payloadcms/payload-cloud": "3.31.0", diff --git a/src/collections/Users.ts b/src/collections/Users.ts index 7fb3e4e..8e54c92 100644 --- a/src/collections/Users.ts +++ b/src/collections/Users.ts @@ -1,8 +1,11 @@ import { admin } from '@/access/admin' import type { CollectionConfig } from 'payload' -const expirationInMinutes = parseInt(process.env.PASSWORD_RESET_EXPIRATION_IN_MINUTES || '30') -const domain = process.env.DOMAIN_NAME || 'localhost:3000' +import '../envConfig' + +const expirationInMinutes = parseInt(process.env.PASSWORD_RESET_EXPIRATION_IN_MINUTES || '30', 10) +const domain = process.env.DOMAIN_NAME || '' +const serverUrl = process.env.SERVER_URL || '' export const Users: CollectionConfig = { slug: 'users', @@ -13,31 +16,13 @@ export const Users: CollectionConfig = { admin: admin }, auth: { - // verify: { - // generateEmailSubject: () => { - // return `Verify Account for ${domain}` - // }, - // generateEmailHTML: ({ req, token, user }) => { - // const url = `https://${domain}/verify?token=${token}` - // return ` - // - // - // - //

Verify Account for ${domain}

- //

Hey ${user.email}, verify your email by clicking here: ${url}

- //

If you have not recently been signed up for ${domain} then please ignore this email.

- // - // - // ` - // }, - // }, forgotPassword: { - expiration: (60000 * expirationInMinutes), generateEmailSubject: () => { + console.log({ domain, serverUrl, expirationInMinutes }) return `Reset password request for ${domain}` }, generateEmailHTML: (props) => { - const resetPasswordURL = `https://${domain}/forgotPassword?token=${props?.token}` + const resetPasswordURL = `${serverUrl}/forgotPassword?token=${props?.token}` return ` @@ -58,7 +43,6 @@ export const Users: CollectionConfig = { }, fields: [ // Email added by default - // Add more fields as needed { name: 'role', type: 'select', diff --git a/src/envConfig.ts b/src/envConfig.ts new file mode 100644 index 0000000..aec6502 --- /dev/null +++ b/src/envConfig.ts @@ -0,0 +1,4 @@ +import { loadEnvConfig } from '@next/env' + +const projectDir = process.cwd() +loadEnvConfig(projectDir) diff --git a/src/payload.config.ts b/src/payload.config.ts index d32b72e..c119a72 100644 --- a/src/payload.config.ts +++ b/src/payload.config.ts @@ -19,6 +19,8 @@ import { Pages } from './collections/Pages/Pages' import HoldRequests from './collections/Checkouts/HoldRequests' import Checkouts from './collections/Checkouts/Checkouts' +import './envConfig.ts' + const filename = fileURLToPath(import.meta.url) const dirname = path.dirname(filename) @@ -30,8 +32,8 @@ export default buildConfig({ }, dateFormat: 'MM/dd/yyyy', }, - //cors: [process.env.DOMAIN_NAME || ''], - //csrf: [process.env.DOMAIN_NAME || ''], + cors: [process.env.SERVER_URL || ''], + csrf: [process.env.SERVER_URL || ''], upload: { limits: { fileSize: 5000000, // in bytes diff --git a/src/serverActions/ResetPassword.ts b/src/serverActions/ResetPassword.ts index 7fd0d60..4462233 100644 --- a/src/serverActions/ResetPassword.ts +++ b/src/serverActions/ResetPassword.ts @@ -17,19 +17,16 @@ export const resetPassword = async (props: Props): Promise => { const payload = await getPayload({ config: payloadConfig }) try { - const result = await payload.resetPassword({ + await payload.resetPassword({ collection: 'users', - overrideAccess: false, + overrideAccess: true, data: { password: password, token: token, } }) - console.log('result') - console.log(result) return true } catch (err) { - console.log(err) return false } }