fix: reset password and env vars
This commit is contained in:
parent
db20a093ef
commit
e264e88b39
@ -1,7 +1,10 @@
|
|||||||
DATABASE_URI=postgres://postgres:<password>@127.0.0.1:5432/your-database-name
|
DATABASE_URI=postgres://postgres:<password>@127.0.0.1:5432/your-database-name
|
||||||
PAYLOAD_SECRET=YOUR_SECRET_HERE
|
PAYLOAD_SECRET=YOUR_SECRET_HERE
|
||||||
|
|
||||||
DOMIAN_NAME=
|
PORT=9889
|
||||||
|
|
||||||
|
DOMAIN_NAME=localhost:3000
|
||||||
|
SERVER_URL=http://localhost:3000
|
||||||
|
|
||||||
SMTP_HOST=
|
SMTP_HOST=
|
||||||
SMTP_USER=
|
SMTP_USER=
|
||||||
|
13
package-lock.json
generated
13
package-lock.json
generated
@ -12,6 +12,7 @@
|
|||||||
"@headlessui/react": "^2.2.1",
|
"@headlessui/react": "^2.2.1",
|
||||||
"@heroicons/react": "^2.2.0",
|
"@heroicons/react": "^2.2.0",
|
||||||
"@hookform/resolvers": "^5.0.1",
|
"@hookform/resolvers": "^5.0.1",
|
||||||
|
"@next/env": "^15.3.1",
|
||||||
"@payloadcms/db-postgres": "3.31.0",
|
"@payloadcms/db-postgres": "3.31.0",
|
||||||
"@payloadcms/next": "3.31.0",
|
"@payloadcms/next": "3.31.0",
|
||||||
"@payloadcms/payload-cloud": "3.31.0",
|
"@payloadcms/payload-cloud": "3.31.0",
|
||||||
@ -3337,9 +3338,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/env": {
|
"node_modules/@next/env": {
|
||||||
"version": "15.2.3",
|
"version": "15.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.1.tgz",
|
||||||
"integrity": "sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==",
|
"integrity": "sha512-cwK27QdzrMblHSn9DZRV+DQscHXRuJv6MydlJRpFSqJWZrTYMLzKDeyueJNN9MGd8NNiUKzDQADAf+dMLXX7YQ==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@next/eslint-plugin-next": {
|
"node_modules/@next/eslint-plugin-next": {
|
||||||
@ -12069,6 +12070,12 @@
|
|||||||
"react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc"
|
"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": {
|
"node_modules/next/node_modules/postcss": {
|
||||||
"version": "8.4.31",
|
"version": "8.4.31",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
"@headlessui/react": "^2.2.1",
|
"@headlessui/react": "^2.2.1",
|
||||||
"@heroicons/react": "^2.2.0",
|
"@heroicons/react": "^2.2.0",
|
||||||
"@hookform/resolvers": "^5.0.1",
|
"@hookform/resolvers": "^5.0.1",
|
||||||
|
"@next/env": "^15.3.1",
|
||||||
"@payloadcms/db-postgres": "3.31.0",
|
"@payloadcms/db-postgres": "3.31.0",
|
||||||
"@payloadcms/next": "3.31.0",
|
"@payloadcms/next": "3.31.0",
|
||||||
"@payloadcms/payload-cloud": "3.31.0",
|
"@payloadcms/payload-cloud": "3.31.0",
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
import { admin } from '@/access/admin'
|
import { admin } from '@/access/admin'
|
||||||
import type { CollectionConfig } from 'payload'
|
import type { CollectionConfig } from 'payload'
|
||||||
|
|
||||||
const expirationInMinutes = parseInt(process.env.PASSWORD_RESET_EXPIRATION_IN_MINUTES || '30')
|
import '../envConfig'
|
||||||
const domain = process.env.DOMAIN_NAME || 'localhost:3000'
|
|
||||||
|
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 = {
|
export const Users: CollectionConfig = {
|
||||||
slug: 'users',
|
slug: 'users',
|
||||||
@ -13,31 +16,13 @@ export const Users: CollectionConfig = {
|
|||||||
admin: admin
|
admin: admin
|
||||||
},
|
},
|
||||||
auth: {
|
auth: {
|
||||||
// verify: {
|
|
||||||
// generateEmailSubject: () => {
|
|
||||||
// return `Verify Account for ${domain}`
|
|
||||||
// },
|
|
||||||
// generateEmailHTML: ({ req, token, user }) => {
|
|
||||||
// const url = `https://${domain}/verify?token=${token}`
|
|
||||||
// return `
|
|
||||||
// <!doctype html>
|
|
||||||
// <html>
|
|
||||||
// <body>
|
|
||||||
// <h1>Verify Account for ${domain}</h1>
|
|
||||||
// <p>Hey ${user.email}, verify your email by clicking here: ${url}</p>
|
|
||||||
// <p>If you have not recently been signed up for ${domain} then please ignore this email.</p>
|
|
||||||
// </body>
|
|
||||||
// </html>
|
|
||||||
// `
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
forgotPassword: {
|
forgotPassword: {
|
||||||
expiration: (60000 * expirationInMinutes),
|
|
||||||
generateEmailSubject: () => {
|
generateEmailSubject: () => {
|
||||||
|
console.log({ domain, serverUrl, expirationInMinutes })
|
||||||
return `Reset password request for ${domain}`
|
return `Reset password request for ${domain}`
|
||||||
},
|
},
|
||||||
generateEmailHTML: (props) => {
|
generateEmailHTML: (props) => {
|
||||||
const resetPasswordURL = `https://${domain}/forgotPassword?token=${props?.token}`
|
const resetPasswordURL = `${serverUrl}/forgotPassword?token=${props?.token}`
|
||||||
|
|
||||||
return `
|
return `
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
@ -58,7 +43,6 @@ export const Users: CollectionConfig = {
|
|||||||
},
|
},
|
||||||
fields: [
|
fields: [
|
||||||
// Email added by default
|
// Email added by default
|
||||||
// Add more fields as needed
|
|
||||||
{
|
{
|
||||||
name: 'role',
|
name: 'role',
|
||||||
type: 'select',
|
type: 'select',
|
||||||
|
4
src/envConfig.ts
Normal file
4
src/envConfig.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import { loadEnvConfig } from '@next/env'
|
||||||
|
|
||||||
|
const projectDir = process.cwd()
|
||||||
|
loadEnvConfig(projectDir)
|
@ -19,6 +19,8 @@ import { Pages } from './collections/Pages/Pages'
|
|||||||
import HoldRequests from './collections/Checkouts/HoldRequests'
|
import HoldRequests from './collections/Checkouts/HoldRequests'
|
||||||
import Checkouts from './collections/Checkouts/Checkouts'
|
import Checkouts from './collections/Checkouts/Checkouts'
|
||||||
|
|
||||||
|
import './envConfig.ts'
|
||||||
|
|
||||||
const filename = fileURLToPath(import.meta.url)
|
const filename = fileURLToPath(import.meta.url)
|
||||||
const dirname = path.dirname(filename)
|
const dirname = path.dirname(filename)
|
||||||
|
|
||||||
@ -30,8 +32,8 @@ export default buildConfig({
|
|||||||
},
|
},
|
||||||
dateFormat: 'MM/dd/yyyy',
|
dateFormat: 'MM/dd/yyyy',
|
||||||
},
|
},
|
||||||
//cors: [process.env.DOMAIN_NAME || ''],
|
cors: [process.env.SERVER_URL || ''],
|
||||||
//csrf: [process.env.DOMAIN_NAME || ''],
|
csrf: [process.env.SERVER_URL || ''],
|
||||||
upload: {
|
upload: {
|
||||||
limits: {
|
limits: {
|
||||||
fileSize: 5000000, // in bytes
|
fileSize: 5000000, // in bytes
|
||||||
|
@ -17,19 +17,16 @@ export const resetPassword = async (props: Props): Promise<boolean> => {
|
|||||||
const payload = await getPayload({ config: payloadConfig })
|
const payload = await getPayload({ config: payloadConfig })
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const result = await payload.resetPassword({
|
await payload.resetPassword({
|
||||||
collection: 'users',
|
collection: 'users',
|
||||||
overrideAccess: false,
|
overrideAccess: true,
|
||||||
data: {
|
data: {
|
||||||
password: password,
|
password: password,
|
||||||
token: token,
|
token: token,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
console.log('result')
|
|
||||||
console.log(result)
|
|
||||||
return true
|
return true
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err)
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user