Развернуто в Heroku, логин интерфейса администратора внезапно перестает работать - PullRequest
0 голосов
/ 11 ноября 2019

Я недавно инициализировал приложение Keystone, используя руководство здесь . Единственное, что я коснулся в коде, - это добавление в приложение Next.js внешнего интерфейса и изменение строки подключения mongodb, чтобы она указала на мой кластер MongoDB Atlas. Я развернул это приложение на Heroku, оно подключается к БД, и все прекрасно работает, но при попытке войти в систему после нажатия кнопки «Войти» кнопка отображает индикатор загрузки в течение секунды, а затем просто снова отображает страницу входа.

Я прочитал документы и попытался вставить

config: {
    identityField: 'email',
    secretField: 'password'
  }

в мое определение authStrategy, но безрезультатно. Действительно не уверен, куда еще идти отсюда.

Вот мое Keystone определение:

const keystone = new Keystone({
  name: PROJECT_NAME,
  adapter: new Adapter({
    mongoUri: 'mongodb+srv://stratus:WjbsENMyBV80AJ6H@cluster0-qe4bs.azure.mongodb.net/stratus?retryWrites=true&w=majority',
    useNewUrlParser: true
  }),
});

// Access control functions
const userIsAdmin = ({ authentication: { item: user } }) => Boolean(user && user.isAdmin);
const userOwnsItem = ({ authentication: { item: user } }) => {
  if (!user) {
    return false;
  }
  return { id: user.id };
};
const userIsAdminOrOwner = auth => {
  const isAdmin = access.userIsAdmin(auth);
  const isOwner = access.userOwnsItem(auth);
  return isAdmin ? isAdmin : isOwner;
};
const access = { userIsAdmin, userOwnsItem, userIsAdminOrOwner };

keystone.createList('User', {
  fields: {
    name: { type: Text },
    email: {
      type: Text,
      isUnique: true,
    },
    isAdmin: { type: Checkbox },
    password: {
      type: Password,
    },
  },
  // To create an initial user you can temporarily remove access controls
  access: {
    read: access.userIsAdminOrOwner,
    update: access.userIsAdminOrOwner,
    create: access.userIsAdmin,
    delete: access.userIsAdmin,
    auth: true,
  },
});

const authStrategy = keystone.createAuthStrategy({
  type: PasswordAuthStrategy,
  list: 'User',
  config: {
    identityField: 'email',
    secretField: 'password'
  }
});

module.exports = {
  keystone,
  apps: [
    new GraphQLApp(),
    // To create an initial user you can temporarily remove the authStrategy below
    new AdminUIApp({ enableDefaultRoute: true, authStrategy }),
    new NextApp({ dir: 'client'})
  ],
};

Я не вижу ошибок в своих журналах Heroku. Любая помощь очень ценится!

...