Newer
Older
dmpopidor / config / routes.rb
Rails.application.routes.draw do

  namespace :admin do
    resources :users, only: [:new, :create, :edit, :update, :index, :show]
    resources :orgs, only: [:new, :create, :edit, :update, :index, :show]
    resources :perms, only: [:new, :create, :edit, :update, :index, :show]
    resources :languages
    resources :templates
    resources :token_permission_types
    resources :phases
    resources :sections
    resources :questions
    resources :question_formats
    resources :question_options
    resources :suggested_answers
    resources :answers
    resources :guidances
    resources :guidance_groups
    resources :themes
    resources :notes
    resources :plans
    resources :plan_guidance_groups
    resources :identifier_schemes
    resources :exported_plans
    resources :regions
    resources :roles
    resources :splash_logs
    resources :user_identifiers

    root to: "users#index"
  end

  devise_for :users, controllers: {
        registrations: "registrations", 
        passwords: 'passwords', 
        sessions: 'sessions', 
        omniauth_callbacks: 'users/omniauth_callbacks'} do
        
    get "/users/sign_out", :to => "devise/sessions#destroy"
  end
  
  # WAYFless access point - use query param idp
  #get 'auth/shibboleth' => 'users/omniauth_shibboleth_request#redirect', :as => 'user_omniauth_shibboleth'
  #get 'auth/shibboleth/assoc' => 'users/omniauth_shibboleth_request#associate', :as => 'user_shibboleth_assoc'

  #post '/auth/:provider/callback' => 'sessions#oauth_create'
  
  # fix for activeadmin signout bug
  devise_scope :user do
    get '/users/sign_out' => 'devise/sessions#destroy'
  end

  delete '/users/identifiers/:id', to: 'user_identifiers#destroy', as: 'destroy_user_identifier'
  
  #ActiveAdmin.routes(self)

  #organisation admin area
  resources :users, :path => 'org/admin/users', only: [] do
    collection do
      get 'admin_index'
    end
    member do
      get 'admin_grant_permissions'
      put 'admin_update_permissions'
    end
  end

  # You can have the root of your site routed with "root"
  # just remember to delete public/index.html.

  patch 'locale/:locale' => 'application#set_locale_session', as: 'locale'

  root :to => 'home#index'
    get "about_us" => 'static_pages#about_us'
    get "help" => 'static_pages#help'
    get "roadmap" => 'static_pages#roadmap'
    get "terms" => 'static_pages#termsuse'
    get "public_plans" => 'static_pages#public_plans'
    get "public_export/:id" => 'static_pages#public_export', as: 'public_export'
    get "existing_users" => 'existing_users#index'
  
    #post 'contact_form' => 'contacts', as: 'localized_contact_creation'
    #get 'contact_form' => 'contacts#new', as: 'localized_contact_form'
    
    resources :orgs, :path => 'org/admin', only: [] do
      member do
        get 'children'
        get 'templates'
        get 'admin_show'
        get 'admin_edit'
        put 'admin_update'
      end
    end

    resources :guidances, :path => 'org/admin/guidance', only: [] do
      member do
        get 'admin_show'
        get 'admin_index'
        get 'admin_edit'
        get 'admin_new'
        delete 'admin_destroy'
        post 'admin_create'
        put 'admin_update'

        get 'update_phases'
        get 'update_versions'
        get 'update_sections'
        get 'update_questions'
      end
    end

    resources :guidance_groups, :path => 'org/admin/guidancegroup', only: [] do
      member do
        get 'admin_show'
        get 'admin_new'
        get 'admin_edit'
        delete 'admin_destroy'
        post 'admin_create'
        put 'admin_update'
      end
    end

    resources :templates, :path => 'org/admin/templates', only: [] do
      member do
        get 'admin_index'
        get 'admin_template'
        get 'admin_new'
        get 'admin_template_history'
        delete 'admin_destroy'
        post 'admin_create'
        put 'admin_update'
        put 'admin_customize'
        put 'admin_publish'
        put 'admin_unpublish'
      end
    end

    resources :phases, path: 'org/admin/templates/phases', only: [] do
      member do
        get 'admin_show'
        get 'admin_preview'
        get 'admin_add'
        put 'admin_update'
        post 'admin_create'
        delete 'admin_destroy'
      end
    end

    resources :sections, path: 'org/admin/templates/sections', only: [] do
      member do
        post 'admin_create'
        put 'admin_update'
        delete 'admin_destroy'
      end
    end

    resources :questions, path: 'org/admin/templates/questions', only: [] do
      member do
        post 'admin_create'
        put 'admin_update'
        delete 'admin_destroy'
      end
    end

    resources :suggested_answers, path: 'org/admin/templates/suggested_answers', only: [] do
      member do
        post 'admin_create'
        put 'admin_update'
        delete 'admin_destroy'
      end
    end

    resources :answers, only: :update

    resources :notes, only: [:create, :update, :archive] do
      member do
        patch 'archive'
      end
    end

    resources :plans do
      resources :phases do
        member do
          get 'edit'
          get 'status'
          post 'update'
        end
      end


      member do
        get 'status'
        get 'locked'
        get 'answer'
        put 'update_guidance_choices'
        post 'delete_recent_locks'
        post 'lock_section', constraints: {format: [:html, :json]}
        post 'unlock_section', constraints: {format: [:html, :json]}
        post 'unlock_all_sections'
        get 'warning'
        get 'section_answers'
        get 'share'
        get 'show_export'
        get 'export'
        post 'invite'
      end

      collection do
        get 'possible_templates'
        get 'possible_guidance'
      end
    end

#    resources :projects do
#      resources :plans , only: [:edit, :update] do
#        member do
#          get 'status'
#          get 'locked'
#          get 'answer'
#          #get 'edit'
#          post 'delete_recent_locks'
#          post 'lock_section', constraints: {format: [:html, :json]}
#          post 'unlock_section', constraints: {format: [:html, :json]}
#          post 'unlock_all_sections'
#          get 'export'
#          get 'warning'
#          get 'section_answers'
#        end
#      end
#
#      member do
#        get 'share'
#        get 'export'
#        post 'invite'
#      end
#      collection do
#        get 'possible_templates'
#        get 'possible_guidance'
#      end
#    end

    resources :roles, only: [:create, :update, :destroy]

    namespace :settings do
      resources :plans, only: [:update]
    end

    resources :token_permission_types, only: [:index]

    namespace :api, defaults: {format: :json} do
      namespace :v0 do
        resources :guidance_groups, only: [:index, :show]
        resources :guidances, only: [:index, :show]
        resources :plans, only: :create
        resources :templates, only: :index
        resource  :statistics, only: [], controller: "statistics", path: "statistics" do
          member do
            get :users_joined
            get :using_template
            get :plans_by_template
            get :plans
          end
        end
      end
    end

    # The priority is based upon order of creation:
    # first created -> highest priority.

    # Sample of regular route:
    #   match 'products/:id' => 'catalog#view'
    # Keep in mind you can assign values other than :controller and :action

    # Sample of named route:
    #   match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
    # This route can be invoked with purchase_url(:id => product.id)

    # Sample resource route (maps HTTP verbs to controller actions automatically):
    #   resources :products

    # Sample resource route with options:
    #   resources :products do
    #     member do
    #       get 'short'
    #       post 'toggle'
    #     end
    #
    #     collection do
    #       get 'sold'
    #     end
    #   end

    # Sample resource route with sub-resources:
    #   resources :products do
    #     resources :comments, :sales
    #     resource :seller
    #   end

    # Sample resource route with more complex sub-resources
    #   resources :products do
    #     resources :comments
    #     resources :sales do
    #       get 'recent', :on => :collection
    #     end
    #   end

    # Sample resource route within a namespace:
    #   namespace :admin do
    #     # Directs /admin/products/* to Admin::ProductsController
    #     # (app/controllers/admin/products_controller.rb)
    #     resources :products
    #   end


    # See how all your routes lay out with "rake routes"

    # This is a legacy wild controller route that's not recommended for RESTful applications.
    # Note: This route will make all actions in every controller accessible via GET requests.
    # match ':controller(/:action(/:id))(.:format)'
end