В текущем проекте, над которым я работал, мой клиент попросил меня добавить настраиваемую функцию, которая не включена в ядро ​​Spree. Функция добавляет одобрение пользователя на страницу администратора. Только администратор может утверждать зарегистрированных пользователей, и пользователям не разрешается входить в систему до утверждения администратором.

Spree использует отличный драгоценный камень для аутентификации под названием devise. Я нашел в Интернете Как сделать, в котором эта функция добавляется к разработке. В этой статье я опишу шаги, которые я выполняю, чтобы применить это решение к моему проекту Spree.

Первое, что мы собираемся сделать, это изменить модель пользователя. Давайте создадим миграцию с помощью следующей команды.

bin/rails g migration add_approved_to_user approved:boolean

Вы знаете, это создаст файл миграции в вашем каталоге db / migrate. Добавьте следующий блок кода в ваш вновь созданный файл миграции.

После создания этого файла миграции нам нужно запустить команду bin / rake db: migrate, чтобы применить эту миграцию к нашей системе.

Во-вторых, нам нужно изменить класс Spree :: User, чтобы предотвратить вход в систему неутвержденных пользователей. Самое замечательное в Spree Commerce заключается в том, что он дает нам возможность легко добавлять новые функции в существующую систему. Создайте файл app / models / spree / user_decorator.rb и вставьте в него следующий блок кода. Помните, что вы должны использовать точное имя файла user_decorator.rb, иначе это не сработает.

В-третьих, нам нужно добавить параметр в панель администратора для утверждения пользователем, что означает, что нам нужно изменить представление. Разработчики Spree предлагают нам использовать Deface для модификации вида. Давайте создадим файл по следующему пути: app / overrides / add_approve_user.rb. Затем пропустите в нем следующий блок кода.

Кроме того, нам нужно добавить запись в файл i18n, расположенный по адресу config / locales / en.yml.

После всех этих шагов ваша страница редактирования пользователя будет выглядеть следующим образом. Эта страница позволит вам одобрять или отклонять зарегистрированных пользователей. Пожалуйста, попробуйте. Вы сами что отлично работает (!)

Что ж, наверное, не сработает, потому что мы забыли пункт Strong Parameters. Добавьте следующую строку в инициализатор spree, расположенный по адресу config / initializers / spree.rb.

Spree::PermittedAttributes.user_attributes << :approved

Теперь вы можете одобрять и отклонять любых зарегистрированных пользователей как администраторов.

Я объяснил шаги по добавлению утверждения пользователя в ваше приложение Spree Commerce. Я старался сделать это как можно проще. Надеюсь, это поможет вашему бизнесу.