Rails: Spree: аутентификация с помощью собственной таблицы пользователей

#ruby-on-rails #ruby #ruby-on-rails-4 #spree

#ruby-on-rails #ruby #ruby-on-rails-4 #веселье

Вопрос:

У меня есть собственная таблица пользователей в моей модели данных, и я хочу выполнить аутентификацию для пользователей.

Я прочитал информацию об аутентификации на странице Spree и выполнил следующие действия.

Однако у меня возникают проблемы с этим, потому что кажется, что приложение работает с пользователями spree, а не с моими пользователями.

Здесь devise_scope на routes.rb;

     devise_scope :usuario do
        get '/login', :to => "devise/sessions#new"
        get '/signup', :to => "devise/registrations#new"
        delete '/logout', :to => "devise/sessions#destroy"
    end
 

Если я прокомментирую один из этих путей, вход в систему все еще работает…

Authentication_helpers.rb:

     module Spree
       module AuthenticationHelpers
         def self.included(receiver)
           receiver.send :helper_method, :spree_login_path
           receiver.send :helper_method, :spree_signup_path
           receiver.send :helper_method, :spree_logout_path
           receiver.send :helper_method, :spree_current_user
         end

       def spree_current_user
          current_usuario
       end

       def spree_login_path
          main_app.login_path
       end

       def spree_signup_path
         main_app.signup_path
       end

       def spree_logout_path
          main_app.logout_path
      end
   end
end
 

ApplicationController.send:include, Spree::AuthenticationHelpers

И spree.rb от инициализаторов:

    # Configure Spree Preferences
   #
   # Note: Initializing preferences available within the Admin will overwrite any changes that were made through the user interface when you restart.
   #       If you would like users to be able to update a setting with the Admin it should NOT be set here.
   #
   # In order to initialize a setting do:
   # config.setting_name = 'new value'
   Spree.config do |config|
  # Example:
  # Uncomment to override the default site name.
       config.site_name = "Smarket"
       config.logo = "store/smarket.png"
   end

    Spree.user_class = "Usuario"

              Rails.application.config.to_prepare do
                require_dependency 'spree/authentication_helpers'
              end
 

Что я должен сделать, чтобы работать со своей собственной таблицей, а также изменить формы входа и регистрации?

Ответ №1:

Я только что сделал то же самое для своей пользовательской модели в соответствии с руководством по пользовательской аутентификации spree без каких-либо проблем. Вы уверены, что выполнили все шаги?

Что касается изменения форм, вход в систему spree просто использует процесс входа в систему devise по умолчанию, поэтому вам нужно будет скопировать формы devise в ваше приложение и отредактировать их там. Смотрите описание на devise wiki.