Как создать путь для пользователей и администратора после входа в rails 5 - PullRequest
0 голосов
/ 30 октября 2018

У меня есть созданное приложение rails 5, использующее гем devise, в котором есть и пользователь, и администратор. Они являются отдельными модалами и были найдены в моих уроках и создали логику для администратора, который будет направлен на панель мониторинга после входа в систему. однако, каков наилучший способ направить пользователя на домашнюю страницу после входа в систему? Ниже приведены мои настройки для администратора, и это работает для администратора, однако, когда я вхожу в систему как пользователь, они также направляются на панель мониторинга. Результат, который мне нужно увидеть, заключается в том, что после входа в систему пользователь переходит на домашнюю страницу, а администратор - на панель управления.

routes:
    root 'pages#home'




    devise_for :users,
                          path: '',
                          path_names: {sign_in: 'user_login', sign_out: 
'user_logout', edit: 'user_profile', sign_up: 'user_registration'},
                          controllers: { omniauth_callbacks: 
'users/omniauth_callbacks', registrations: 'registrations' }


    devise_for :admins,
                         path:'',
                         path_names: {sign_in: 'login', sign_out: 
'logout', edit: 'profile', sign_up: 'registration'},
                         controllers: { omniauth_callbacks: 
'admins/omniauth_callbacks', registrations: 'registrations' }

    resources :admins, only: [:show]
    resources :photos

    resources :locations
    resources :deals

    get 'dashboard' => 'admin_home#dashboard'



class ApplicationController < ActionController::Base
    protect_from_forgery with: :exception

   before_action :configure_permitted_parameters, if: 
:devise_controller?

    protected

    def after_sign_in_path_for(_resource_or_scope)
      dashboard_path
    end

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете использовать методы разработки для этой цели, где вы можете определить пути на основе некоторых пользовательских проверок, то есть роли пользователя.

class ApplicationController < ActionController::Base
  protect_from_forgery

  protected  
  def after_sign_in_path_for(resource)
    sign_in_url = new_user_session_url
    if request.referer == sign_in_url
      super
    else
      stored_location_for(resource) || request.referer || root_path
    end
  end
end

Ссылка: https://github.com/plataformatec/devise/wiki/How-To:-redirect-to-a-specific-page-on-successful-sign-in

...