From 383a840c50ca8f6df19677e93357e9dc6c0e043c Mon Sep 17 00:00:00 2001 From: hellekin Date: Fri, 9 Oct 2020 12:48:13 +0200 Subject: Enable switching Agent Switching current Agent can help with roles and resource access. Go to your dashboard by clicking the avatar. Select agent and hit "Select" --- app/controllers/my/agent_controller.rb | 29 +++++++++++++++++++++++++++++ app/helpers/agents_helper.rb | 9 +++++++++ app/views/application/_user_info.html.erb | 4 ++-- app/views/welcome/dashboard.html.erb | 8 +++++++- config/routes.rb | 3 +-- 5 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 app/controllers/my/agent_controller.rb create mode 100644 app/helpers/agents_helper.rb diff --git a/app/controllers/my/agent_controller.rb b/app/controllers/my/agent_controller.rb new file mode 100644 index 0000000..ac761b7 --- /dev/null +++ b/app/controllers/my/agent_controller.rb @@ -0,0 +1,29 @@ +class My::AgentController < ApplicationController + # PATCH /my/current_agent + def switch + response_status = :unprocessable_entity + new_agent = current_user.agents.find(params[:agent][:id]) + Rails.logger.info "CURRENT_AGENT #{session[:current_agent]} -> #{new_agent.name}" + if new_agent.present? + session[:current_agent] = new_agent.name + @current_agent = new_agent + response_status = :ok + respond_to do |format| + format.html { redirect_to my_dashboard_url, notice: "L'Agent est maintenant #{new_agent.name}." } + format.json { render json: { current_agent: session[:current_agent] }, status: response_status } + end + else + respond_to do |format| + format.html { redirect_to my_dashboard_url, notice: "L'Agent est toujours le meme..." } + format.json { render json: { current_agent: session[:current_agent] }, status: response_status } + end + end + + end + + private + + def agent_params + params.require(:agent).permit(:id) + end +end diff --git a/app/helpers/agents_helper.rb b/app/helpers/agents_helper.rb new file mode 100644 index 0000000..a02fb7a --- /dev/null +++ b/app/helpers/agents_helper.rb @@ -0,0 +1,9 @@ +module AgentsHelper + # Form to select an Agent + def agent_selector_form + form_for current_agent, url: '/my/current_agent', method: :patch do |f| + f.submit('select') + f.select(:id, options_for_select(current_user.agents.map { |a| [a.name, a.id] }), selected: current_agent.id) + end + end +end diff --git a/app/views/application/_user_info.html.erb b/app/views/application/_user_info.html.erb index 3220c89..be3b6c5 100644 --- a/app/views/application/_user_info.html.erb +++ b/app/views/application/_user_info.html.erb @@ -3,11 +3,11 @@ <% if current_user.present? %> <%= image_tag current_user.avatar_url, alt: current_user.username %> <% else %> diff --git a/app/views/welcome/dashboard.html.erb b/app/views/welcome/dashboard.html.erb index 8880434..242fc58 100644 --- a/app/views/welcome/dashboard.html.erb +++ b/app/views/welcome/dashboard.html.erb @@ -1,6 +1,12 @@

Welcome <%= h current_user.name %>!

-

Current Agent: <%= current_agent&.name %>

+

Mes Agents

+ +

<%= form_for current_agent, url: '/my/current_agent', method: :patch do |f| %> + En cours : <%= f.submit('select') %> + <%= f.select(:id, options_for_select(current_user.agents.map { |a| [a.name, a.id] }), selected: current_agent.id) %> +<% end %>

+

Global Count

diff --git a/config/routes.rb b/config/routes.rb index fdecb3d..0de14b5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -19,8 +19,7 @@ Rails.application.routes.draw do # User routes get '/my/account', to: 'users#show', as: 'account' - get '/my/current_agent', to: 'agent_switch#new', as: 'new_agent_switch' - put '/my/current_agent', to: 'agent_switch#update', as: 'update_agent_switch' + patch '/my/current_agent', to: 'my/agent#switch', as: 'agent_switch' get '/my/dashboard', to: 'welcome#dashboard' get 'my/users', to: 'users#index', as: 'users' -- cgit v1.2.3