aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorVlatka Pavisic2017-01-18 11:05:51 +0100
committerVlatka Pavisic2017-01-18 11:05:51 +0100
commit242455e1b6191453f7af98cd29390651ab871e51 (patch)
tree0e75e9c3e1c629c819dbab91ae0f6acd4a859c1a /app
parent307f808e2c812bccccd1c6246ca6b8583be4ef40 (diff)
downloadchouette-core-242455e1b6191453f7af98cd29390651ab871e51.tar.bz2
Refs #2426 : JourneyPattern User permissions
Diffstat (limited to 'app')
-rw-r--r--app/controllers/journey_patterns_controller.rb7
-rw-r--r--app/policies/journey_pattern_policy.rb22
-rw-r--r--app/views/journey_patterns/show.html.slim13
-rw-r--r--app/views/routes/show.html.slim7
4 files changed, 42 insertions, 7 deletions
diff --git a/app/controllers/journey_patterns_controller.rb b/app/controllers/journey_patterns_controller.rb
index b7cdccc72..69f16321e 100644
--- a/app/controllers/journey_patterns_controller.rb
+++ b/app/controllers/journey_patterns_controller.rb
@@ -15,6 +15,8 @@ class JourneyPatternsController < ChouetteController
alias_method :route, :parent
alias_method :journey_pattern, :resource
+ before_action :check_policy, only: [:edit, :update, :destroy]
+
def index
index! do |format|
format.html { redirect_to referential_line_route_path(@referential,@line,@route) }
@@ -51,9 +53,12 @@ class JourneyPatternsController < ChouetteController
@journey_patterns ||= @q.result(:distinct => true).order(:name)
end
-
private
+ def check_policy
+ authorize resource
+ end
+
def journey_pattern_params
params.require(:journey_pattern).permit(:route_id, :objectid, :object_version, :creation_time, :creator_id, :name, :comment, :registration_number, :published_name, :departure_stop_point_id, :arrival_stop_point_id, {:stop_point_ids => []})
end
diff --git a/app/policies/journey_pattern_policy.rb b/app/policies/journey_pattern_policy.rb
new file mode 100644
index 000000000..95ab23318
--- /dev/null
+++ b/app/policies/journey_pattern_policy.rb
@@ -0,0 +1,22 @@
+class JourneyPatternPolicy < ApplicationPolicy
+ class Scope < Scope
+ def resolve
+ scope
+ end
+ end
+
+ def create?
+ user.has_permission?('journey_patterns.create')
+ end
+
+ def edit?
+ user.has_permission?('journey_patterns.edit')
+ end
+
+ def destroy?
+ user.has_permission?('journey_patterns.destroy')
+ end
+
+ def update? ; edit? end
+ def new? ; create? end
+end
diff --git a/app/views/journey_patterns/show.html.slim b/app/views/journey_patterns/show.html.slim
index 0fee1a257..417e4dc16 100644
--- a/app/views/journey_patterns/show.html.slim
+++ b/app/views/journey_patterns/show.html.slim
@@ -30,11 +30,14 @@ h3.journey_pattern_stop_points = t('.stop_points')
- content_for :sidebar do
ul.actions
li
- = link_to t('journey_patterns.actions.new'), new_referential_line_route_journey_pattern_path(@referential, @line, @route), class: 'add'
+ - if policy(@journey_pattern).create?
+ = link_to t('journey_patterns.actions.new'), new_referential_line_route_journey_pattern_path(@referential, @line, @route), class: 'add'
li
- = link_to t('journey_patterns.actions.edit'), edit_referential_line_route_journey_pattern_path(@referential, @line, @route, @journey_pattern), class: 'edit'
+ - if policy(@journey_pattern).edit?
+ = link_to t('journey_patterns.actions.edit'), edit_referential_line_route_journey_pattern_path(@referential, @line, @route, @journey_pattern), class: 'edit'
li
- = link_to t('journey_patterns.actions.destroy'), referential_line_route_journey_pattern_path(@referential, @line, @route, @journey_pattern), :method => :delete, :data => {:confirm => t('journey_patterns.actions.destroy_confirm')}, class: 'remove'
+ - if policy(@journey_pattern).destroy?
+ = link_to t('journey_patterns.actions.destroy'), referential_line_route_journey_pattern_path(@referential, @line, @route, @journey_pattern), :method => :delete, :data => {:confirm => t('journey_patterns.actions.destroy_confirm')}, class: 'remove'
li
= link_to edit_referential_line_route_journey_pattern_route_sections_selector_path(@referential, @line, @route, @journey_pattern), class: "edit#{' control-shape' if @journey_pattern.control?}" do
= t('journey_patterns.actions.edit_route_sections')
@@ -43,5 +46,5 @@ h3.journey_pattern_stop_points = t('.stop_points')
li
= link_to t('journey_patterns.journey_pattern.vehicle_journey_at_stops'), referential_line_route_vehicle_journeys_path(@referential, @line, @route, :q => {:journey_pattern_id_eq => @journey_pattern.id}), class: 'clock'
-
- = creation_tag(@journey_pattern) \ No newline at end of file
+
+ = creation_tag(@journey_pattern)
diff --git a/app/views/routes/show.html.slim b/app/views/routes/show.html.slim
index 6a1d16c66..e18ec295d 100644
--- a/app/views/routes/show.html.slim
+++ b/app/views/routes/show.html.slim
@@ -84,7 +84,12 @@ p.after_map
span.caret
ul.dropdown-menu
li = link_to 'Voir', [@referential, @line, @route, journey_pattern], title: "#{Chouette::JourneyPattern.model_name.human.capitalize} #{journey_name(journey_pattern)}"
- li = link_to 'Supprimer', referential_line_route_journey_pattern_path(@referential, @line, @route, journey_pattern), method: :delete, data: {confirm: t('journey_patterns.actions.destroy_confirm')}
+ li
+ - if policy(journey_pattern).edit?
+ = link_to t('actions.edit'), edit_referential_line_route_journey_pattern_path(@referential, @line, @route, journey_pattern)
+ li
+ - if policy(journey_pattern).destroy?
+ = link_to t('actions.destroy'), referential_line_route_journey_pattern_path(@referential, @line, @route, journey_pattern), method: :delete, data: {confirm: t('journey_patterns.actions.destroy_confirm')}
/ .panel-body
/ .journey_patterns.paginated_content