diff options
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/agents_controller.rb | 91 | ||||
-rw-r--r-- | app/controllers/application_controller.rb | 6 | ||||
-rw-r--r-- | app/controllers/categories_controller.rb | 23 | ||||
-rw-r--r-- | app/controllers/my/agent_controller.rb | 4 | ||||
-rw-r--r-- | app/controllers/resources_controller.rb | 4 | ||||
-rw-r--r-- | app/controllers/users_controller.rb | 4 | ||||
-rw-r--r-- | app/controllers/welcome_controller.rb | 4 |
7 files changed, 134 insertions, 2 deletions
diff --git a/app/controllers/agents_controller.rb b/app/controllers/agents_controller.rb new file mode 100644 index 0000000..105e443 --- /dev/null +++ b/app/controllers/agents_controller.rb @@ -0,0 +1,91 @@ +# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc> +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +class AgentsController < ApplicationController + before_action :set_agent, only: [:new, :show, :edit, :update, :delete, :destroy] + + # GET /agents + def index + @agents = Agent.order(:name).page params[:page] + end + + # GET /agents/new + def new + end + + # POST /agents + def create + flash.now[:alert] = 'Agents are created from actual groups for now...' + render :new + end + + # GET /agents/:id + def show + end + + # GET /agents/:id/edit + def edit + flash.now[:notice] = 'Please ask a maintainer to edit this resource!' unless current_user_maintainer? + end + + # PATCH /agents/:id + def update + # Check list: + # 1. Compare records for changes + # 2. Validate each change + # 3. Moderate queue or save + + return 403 unless current_user_maintainer? + + respond_to do |format| + if @agent.update(agent_params) + format.html { redirect_to @agent, notice: 'Merci de votre contribution !' } + format.json { render :show, status: :ok, location: @agent } + else + format.html { render :edit } + format.json { render json: @agent.errors, status: :unprocessable_entity } + end + end + end + + # GET /agents/:id/delete + def delete + flash.now[:notice] = 'Please ask a maintainer to delete your Agent!' unless current_user_maintainer? + end + + # DELETE /agents/:id + def destroy + return 403 # Yeah, right? + # Check list + # 1. User belongs to Agent and is :maintainer? + if !(current_user_maintainer? && current_user_leader?) + msg = 'You must be a maintainer and a leader to delete your Agent!' + respond_to do |format| + format.html { redirect_to :show, notice: msg } + format.json { render json: '{}', status: :forbidden, message: msg } + end + else + @agent.destroy + respond_to do |format| + format.html { redirect_to :index, notice: 'OK, resource Agent successfully removed.' } + format.json { head :no_content } + end + end + end + + private + + def agent_params + params + .require(:agent) + .permit(:uuid, + :name, + :summary, + :description) + end + + def set_agent + @agent = Agent.find_by(uuid: params[:id]) || Agent.new + end +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 14f50bf..5299f54 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,6 +1,8 @@ -class ApplicationController < ActionController::Base - protect_from_forgery with: :null_session +# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc> +# +# SPDX-License-Identifier: AGPL-3.0-or-later +class ApplicationController < ActionController::Base require 'sso' before_action :current_user diff --git a/app/controllers/categories_controller.rb b/app/controllers/categories_controller.rb new file mode 100644 index 0000000..40f1ff5 --- /dev/null +++ b/app/controllers/categories_controller.rb @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc> +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +class CategoriesController < ApplicationController + before_action :set_category, only: [:new, :show, :edit, :update, :delete, :destroy] + + def index + end + + def show + @category = Category.find(params[:id]) + end + + def edit + end + + private + + def set_category + @category = Category.find_by(id: params[:id]) || Category.new + end +end diff --git a/app/controllers/my/agent_controller.rb b/app/controllers/my/agent_controller.rb index ac761b7..6da2642 100644 --- a/app/controllers/my/agent_controller.rb +++ b/app/controllers/my/agent_controller.rb @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc> +# +# SPDX-License-Identifier: AGPL-3.0-or-later + class My::AgentController < ApplicationController # PATCH /my/current_agent def switch diff --git a/app/controllers/resources_controller.rb b/app/controllers/resources_controller.rb index 04d4e70..52d89ea 100644 --- a/app/controllers/resources_controller.rb +++ b/app/controllers/resources_controller.rb @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc> +# +# SPDX-License-Identifier: AGPL-3.0-or-later + class ResourcesController < ApplicationController before_action :set_resource, only: [:new, :show, :edit, :update, :delete, :destroy] diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 2cfa2ab..9a3cf74 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc> +# +# SPDX-License-Identifier: AGPL-3.0-or-later + class UsersController < ApplicationController # GET /my/users # If you're a leader, you will see a list of Agent members diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb index ee76eb6..e7743e8 100644 --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc> +# +# SPDX-License-Identifier: AGPL-3.0-or-later + class WelcomeController < ApplicationController # GET / def index |