diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb new file mode 100644 index 0000000..d089edd --- /dev/null +++ b/app/controllers/users_controller.rb @@ -0,0 +1,16 @@ +class UsersController < ApplicationController + + # GET users/1 + def show; end + + # PATCH users/1/generate_token + def generate_token + if current_user.create_token + flash[:success] = 'Token created' + else + flash[:error] = 'Token not created' + end + + redirect_to user_path(current_user) + end +end diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb new file mode 100644 index 0000000..d62dc44 --- /dev/null +++ b/app/views/users/show.html.erb @@ -0,0 +1,64 @@ +
+
+
+

User details

+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <% if current_user.institutional? %> + + + + + <% end %> + + + + +
Username<%= current_user.username %>
Email<%= current_user.email %>
User Type<%= current_user.user_type %>
Created At<%= I18n.l(current_user.created_at, format: :short) rescue '-' %>
Login At<%= I18n.l(current_user.login_at, format: :short) rescue '-' %>
Clients<%= inline_list current_user.baculized_hosts %>
Pending Hosts<%= inline_list current_user.non_baculized_hosts %>
Unverified Hosts<%= inline_list current_user.unverified_hosts %>
Authentication Token<%= current_user.token %>
+
+
+ + <%= link_to generate_token_user_path(current_user), method: :patch, class: 'btn btn-primary' do %> + + Generate Token + <% end %> + + <% if current_user.admin? %> + <%= link_to edit_admin_user_path(current_user), class: 'btn btn-primary' do %> + + Edit User + <% end %> + <% end %> +
diff --git a/config/routes.rb b/config/routes.rb index cd589ee..d196b98 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,118 +1,124 @@ Rails.application.routes.draw do root 'application#index' get 'faq' => 'application#faq' post 'grnet' => 'application#grnet' get 'institutional' => 'application#institutional' match 'vima', to: 'application#vima', :via => [:get, :post] get 'logout' => 'application#logout' resources :clients, only: [:index, :show] do member do get :jobs get :logs get :stats post :stats get :users get :restore post :run_restore post :restore_selected delete :remove_user end collection do post :index end end resources :clients, only: [], param: :client_id do member do get :tree end end resources :invitations, only: [:create] get '/invitations/:host_id/:verification_code/accept' => 'invitations#accept', as: :accept_invitation resources :hosts, only: [:new, :create, :show, :edit, :update, :destroy] do member do post :submit_config post :disable delete :revoke end collection do get :fetch_vima_hosts, to: 'hosts#fetch_vima_hosts', as: :fetch_vima end resources :jobs, only: [:new, :create, :show, :edit, :update, :destroy] do member do patch :toggle_enable post :backup_now end end resources :filesets, only: [:show, :new, :create, :edit, :update, :destroy] resources :schedules, only: [:show, :new, :edit, :create, :update, :destroy] end + resources :users, only: :show do + member do + patch :generate_token + end + end + namespace :admin do match '/', to: 'base#index', via: [:get, :post] get '/login' => 'base#login', as: :login resources :settings, only: [:index, :new, :create, :edit, :update] do member do delete :reset end end resources :clients, only: [:index, :show] do member do get :jobs get :logs get :stats post :stats get :configuration post :disable post :block post :unblock delete :revoke end end resources :hosts, only: [] do collection do get :unverified end member do post :verify put :set_quota end end resources :users, only: [:index, :new, :create, :show, :edit, :update] do member do patch :ban patch :unban end end resources :pools, only: [:index, :new, :create] resources :faqs end namespace :api, defaults: { format: :json } do scope module: :v1, constraints: ApiVersion.new(version: 1, default: true) do resources :clients, only: [:index, :show] do member do post :backup post :restore end end end end end diff --git a/spec/routing/users_controller_spec.rb b/spec/routing/users_controller_spec.rb new file mode 100644 index 0000000..8858a42 --- /dev/null +++ b/spec/routing/users_controller_spec.rb @@ -0,0 +1,22 @@ +require 'spec_helper' + +describe UsersController do + it 'routes GET /users/:id' do + expect(get('/users/1')).to route_to(controller: 'users', action: 'show', id: '1') + end + + it 'routes PATCH /users/:id/generate_token' do + expect(patch('/users/1/generate_token')). + to route_to(controller: 'users', action: 'generate_token', id: '1') + end + + it 'generates path for GET /users/:id' do + expect(get(user_path(1))).to route_to(controller: 'users', action: 'show', id: '1') + end + + it 'generates path for PATCH /users/:id/generate_token' do + expect(patch(generate_token_user_path(1))). + to route_to(controller: 'users', action: 'generate_token', id: '1') + end +end +