如何在 Payload CMS 管理仪表板中显示注册页面?

问题描述 投票:0回答:1

我正在使用 Payload CMS 与 Next.js 和 Mongodb 创建一个电子商务网站,使用 Payload CMS 来管理内容和连接数据库。但我遇到了 Payload CMS 提供的管理仪表板的问题,我将管理仪表板设置为 /sell 端点,然后导航到该端点,我只找到了一个登录页面,没有欢迎注册选项,这阻止了我从数据库中查找我的收藏

这是我的 payload.config.ts 文件

import { webpackBundler } from '@payloadcms/bundler-webpack';
import { mongooseAdapter } from '@payloadcms/db-mongodb';
import { slateEditor } from '@payloadcms/richtext-slate';
import dotenv from 'dotenv';
import path from 'path';
import { buildConfig } from 'payload/config';
import { Users } from './collections/Users';

dotenv.config({
    path: path.resolve(__dirname, '../.env')
});

export default buildConfig({
    serverURL: process.env.NEXT_PUBLICK_SERVER_URL || '',
    collections: [Users],
    routes: {
        admin: '/sell'
    },
    admin: {
        user: 'users',
        bundler: webpackBundler(),
        meta: {
            titleSuffix: '- Shopvista',
            favicon: '/favicon.ico',
            ogImage: '/thumbnail.jpg'
        }
    },
    rateLimit: {
        max: 2000,
    },
    db: mongooseAdapter({
        url: process.env.MONGODB_URL!,
    }),
    editor: slateEditor({}),
    typescript: {
        outputFile: path.resolve(__dirname, 'payload-types.ts')
    }, 
})

这是我的用户收藏

import { Access, CollectionConfig } from 'payload/types'

const adminsAndUser: Access = ({ req: { user } }) => {
  if (user.role === 'admin') return true

  return {
    id: {
      equals: user.id,
    },
  }
}

export const Users: CollectionConfig = {
  slug: 'users',
  auth: true,
  access: {
    read: adminsAndUser,
    create: () => true,
    update: ({ req }) => req.user.role === 'admin',
    delete: ({ req }) => req.user.role === 'admin',
    
  },
  admin: {
    hidden: ({ user }) => user.role !== 'admin',
    defaultColumns: ['id'],
  },
  fields: [
    {
      name: 'role',
      defaultValue: 'user',
      required: true,

      type: 'select',
      options: [
        { label: 'Admin', value: 'admin' },
        { label: 'User', value: 'user' },
      ],
    },
  ],
}

我做错了什么?

next.js content-management-system payload-cms
1个回答
0
投票

如果您看到的是管理员登录页面,而不是创建第一个用户页面,则一定是您的

users
集合中已经有一个用户。您可以手动从集合中删除该用户,然后再次浏览到
/sell
。它应该将您重定向到用于创建第一个用户的表单页面。

我想知道你的第一个用户来自哪里。因为我在

onInit
中没有看到这一点,所以也许你的“脚本”package.json 中有些东西在启动服务器之前正在运行种子,除非你使用现有用户连接到现有数据库。

© www.soinside.com 2019 - 2024. All rights reserved.