diff options
| author | Vlatka Pavisic | 2017-01-18 11:05:51 +0100 | 
|---|---|---|
| committer | Vlatka Pavisic | 2017-01-18 11:05:51 +0100 | 
| commit | 242455e1b6191453f7af98cd29390651ab871e51 (patch) | |
| tree | 0e75e9c3e1c629c819dbab91ae0f6acd4a859c1a /app | |
| parent | 307f808e2c812bccccd1c6246ca6b8583be4ef40 (diff) | |
| download | chouette-core-242455e1b6191453f7af98cd29390651ab871e51.tar.bz2 | |
Refs #2426 : JourneyPattern User permissions
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/journey_patterns_controller.rb | 7 | ||||
| -rw-r--r-- | app/policies/journey_pattern_policy.rb | 22 | ||||
| -rw-r--r-- | app/views/journey_patterns/show.html.slim | 13 | ||||
| -rw-r--r-- | app/views/routes/show.html.slim | 7 | 
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 | 
