aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/access_links_controller.rb3
-rw-r--r--app/controllers/access_points_controller.rb17
-rw-r--r--app/controllers/calendars_controller.rb6
-rw-r--r--app/controllers/chouette_controller.rb4
-rw-r--r--app/controllers/companies_controller.rb6
-rw-r--r--app/controllers/concerns/policy_checker.rb12
-rw-r--r--app/controllers/connection_links_controller.rb12
-rw-r--r--app/controllers/group_of_lines_controller.rb6
-rw-r--r--app/controllers/journey_patterns_controller.rb6
-rw-r--r--app/controllers/line_footnotes_controller.rb4
-rw-r--r--app/controllers/lines_controller.rb6
-rw-r--r--app/controllers/networks_controller.rb6
-rw-r--r--app/controllers/referential_lines_controller.rb6
-rw-r--r--app/controllers/referentials_controller.rb7
-rw-r--r--app/controllers/routes_controller.rb6
-rw-r--r--app/controllers/routing_constraint_zones_controller.rb7
-rw-r--r--app/controllers/time_tables_controller.rb6
-rw-r--r--app/controllers/vehicle_journeys_controller.rb8
-rw-r--r--app/helpers/breadcrumb_helper.rb26
-rw-r--r--app/models/chouette/access_point.rb1
-rw-r--r--app/policies/acces_point_policy.rb22
-rw-r--r--app/policies/access_link_policy.rb22
-rw-r--r--app/policies/application_policy.rb4
-rw-r--r--app/policies/calendar_policy.rb4
-rw-r--r--app/policies/connection_link_policy.rb22
-rw-r--r--app/policies/journey_pattern_policy.rb7
-rw-r--r--app/policies/referential_policy.rb15
-rw-r--r--app/policies/route_policy.rb6
-rw-r--r--app/policies/routing_constraint_zone_policy.rb6
-rw-r--r--app/policies/time_table_policy.rb6
-rw-r--r--app/policies/vehicle_journey_policy.rb6
-rw-r--r--app/views/access_link_pairs/_access_link_pair.html.slim6
-rw-r--r--app/views/access_links/show.html.slim14
-rw-r--r--app/views/connection_links/_connection_link.slim16
-rw-r--r--app/views/connection_links/index.html.slim3
-rw-r--r--app/views/connection_links/show.html.slim30
-rw-r--r--app/views/journey_patterns/show.html.slim2
-rw-r--r--app/views/lines/index.html.slim2
-rw-r--r--app/views/lines/show.html.slim2
-rw-r--r--app/views/referential_lines/index.html.slim2
-rw-r--r--app/views/referential_lines/show.html.slim4
-rw-r--r--app/views/referential_stop_areas/access_links.html.slim4
-rw-r--r--app/views/routes/new.html.slim1
-rw-r--r--app/views/routing_constraint_zones/index.html.slim2
-rw-r--r--app/views/time_tables/index.html.slim2
-rw-r--r--app/views/time_tables/show.html.slim6
-rw-r--r--app/views/vehicle_journeys/_show_sidebar.html.slim2
-rw-r--r--app/views/vehicle_journeys/_sidebar.html.slim2
-rw-r--r--spec/features/routes_spec.rb14
-rw-r--r--spec/support/devise.rb4
-rw-r--r--spec/views/connection_links/index.html.erb_spec.rb12
-rw-r--r--spec/views/connection_links/show.html.erb_spec.rb6
-rw-r--r--spec/views/lines/show.html.erb_spec.rb5
-rw-r--r--spec/views/time_tables/index.html.erb_spec.rb12
-rw-r--r--spec/views/time_tables/show.html.erb_spec.rb8
55 files changed, 262 insertions, 174 deletions
diff --git a/app/controllers/access_links_controller.rb b/app/controllers/access_links_controller.rb
index d590aba00..fbf6d2c5c 100644
--- a/app/controllers/access_links_controller.rb
+++ b/app/controllers/access_links_controller.rb
@@ -9,6 +9,8 @@ class AccessLinksController < ChouetteController
respond_to :html, :xml, :json
respond_to :kml, :only => :show
+ include PolicyChecker
+
def index
request.format.kml? ? @per_page = nil : @per_page = 12
index!
@@ -86,7 +88,6 @@ class AccessLinksController < ChouetteController
end
end
-
private
def access_link_params
diff --git a/app/controllers/access_points_controller.rb b/app/controllers/access_points_controller.rb
index 534b0c835..2cef90a28 100644
--- a/app/controllers/access_points_controller.rb
+++ b/app/controllers/access_points_controller.rb
@@ -7,7 +7,9 @@ class AccessPointsController < ChouetteController
respond_to :html, :kml, :xml, :json
- def index
+ include PolicyChecker
+
+ def index
request.format.kml? ? @per_page = nil : @per_page = 12
index! do |format|
@@ -16,7 +18,7 @@ class AccessPointsController < ChouetteController
redirect_to params.merge(:page => 1)
end
}
- end
+ end
end
def show
@@ -26,14 +28,14 @@ class AccessPointsController < ChouetteController
show! do |format|
unless access_point.position or params[:default]
format.kml {
- render :nothing => true, :status => :not_found
+ render :nothing => true, :status => :not_found
}
-
+
end
format.html {build_breadcrumb :show}
end
end
-
+
def edit
access_point.position ||= access_point.default_position
@@ -45,7 +47,7 @@ class AccessPointsController < ChouetteController
protected
-
+
alias_method :access_point, :resource
def map
@@ -54,7 +56,7 @@ class AccessPointsController < ChouetteController
def collection
@q = parent.access_points.search(params[:q])
- @access_points ||=
+ @access_points ||=
begin
access_points = @q.result(:distinct => true).order(:name)
access_points = access_points.paginate(:page => params[:page]) if @per_page.present?
@@ -62,7 +64,6 @@ class AccessPointsController < ChouetteController
end
end
-
private
def access_point_params
diff --git a/app/controllers/calendars_controller.rb b/app/controllers/calendars_controller.rb
index 9784820f9..3e7a05231 100644
--- a/app/controllers/calendars_controller.rb
+++ b/app/controllers/calendars_controller.rb
@@ -1,6 +1,6 @@
class CalendarsController < BreadcrumbController
+ include PolicyChecker
defaults resource_class: Calendar
- before_action :check_policy, only: [:edit, :update, :destroy]
respond_to :html
respond_to :js, only: :index
@@ -39,9 +39,5 @@ class CalendarsController < BreadcrumbController
calendars = calendars.order(sort_column + ' ' + sort_direction) if sort_column && sort_direction
@calendars = calendars.paginate(page: params[:page])
end
-
- def check_policy
- authorize resource
- end
end
diff --git a/app/controllers/chouette_controller.rb b/app/controllers/chouette_controller.rb
index 074fc0515..dd1002fd8 100644
--- a/app/controllers/chouette_controller.rb
+++ b/app/controllers/chouette_controller.rb
@@ -10,9 +10,9 @@ class ChouetteController < BreadcrumbController
end
def referential
- @referential ||= current_organisation.referentials.find params[:referential_id]
+ @referential ||= Referential.find params[:referential_id]
end
-
+
alias_method :current_referential, :referential
helper_method :current_referential
diff --git a/app/controllers/companies_controller.rb b/app/controllers/companies_controller.rb
index bf298786a..a8701d227 100644
--- a/app/controllers/companies_controller.rb
+++ b/app/controllers/companies_controller.rb
@@ -1,6 +1,6 @@
class CompaniesController < BreadcrumbController
include ApplicationHelper
- before_action :check_policy, :only => [:edit, :update, :destroy]
+ include PolicyChecker
defaults :resource_class => Chouette::Company
respond_to :html
respond_to :xml
@@ -53,10 +53,6 @@ class CompaniesController < BreadcrumbController
alias_method :line_referential, :parent
- def check_policy
- authorize resource
- end
-
alias_method :current_referential, :line_referential
helper_method :current_referential
diff --git a/app/controllers/concerns/policy_checker.rb b/app/controllers/concerns/policy_checker.rb
new file mode 100644
index 000000000..72c18c64f
--- /dev/null
+++ b/app/controllers/concerns/policy_checker.rb
@@ -0,0 +1,12 @@
+module PolicyChecker
+ extend ActiveSupport::Concern
+
+ included do
+ before_action :check_policy, only: [:edit, :update, :destroy]
+ end
+
+ protected
+ def check_policy
+ authorize resource
+ end
+end
diff --git a/app/controllers/connection_links_controller.rb b/app/controllers/connection_links_controller.rb
index ca36a999f..abeb9dd6a 100644
--- a/app/controllers/connection_links_controller.rb
+++ b/app/controllers/connection_links_controller.rb
@@ -10,7 +10,9 @@ class ConnectionLinksController < ChouetteController
respond_to :kml, :only => :show
respond_to :js, :only => :index
- def index
+ include PolicyChecker
+
+ def index
index! do |format|
format.html {
if collection.out_of_bounds?
@@ -18,7 +20,7 @@ class ConnectionLinksController < ChouetteController
end
build_breadcrumb :index
}
- end
+ end
end
def show
@@ -36,10 +38,10 @@ class ConnectionLinksController < ChouetteController
end
protected
-
+
alias_method :connection_link, :resource
- def collection
+ def collection
@q = referential.connection_links.search(params[:q])
@connection_links ||= @q.result(:distinct => true).order(:name).paginate(:page => params[:page])
end
@@ -53,7 +55,7 @@ class ConnectionLinksController < ChouetteController
end
private
-
+
def connection_link_params
params.require(:connection_link).permit( :connection_link_type,:departure_id, :arrival_id, :objectid, :object_version, :creation_time, :creator_id, :name, :comment, :link_distance, :link_type, :default_duration, :frequent_traveller_duration, :occasional_traveller_duration, :mobility_restricted_traveller_duration, :mobility_restricted_suitability, :stairs_availability, :lift_availability, :int_user_needs )
end
diff --git a/app/controllers/group_of_lines_controller.rb b/app/controllers/group_of_lines_controller.rb
index 112ff2dd0..a1cf0d6e4 100644
--- a/app/controllers/group_of_lines_controller.rb
+++ b/app/controllers/group_of_lines_controller.rb
@@ -1,6 +1,6 @@
class GroupOfLinesController < BreadcrumbController
include ApplicationHelper
- before_action :check_policy, :only => [:edit, :update, :destroy]
+ include PolicyChecker
defaults :resource_class => Chouette::GroupOfLine
respond_to :html
respond_to :xml
@@ -75,10 +75,6 @@ class GroupOfLinesController < BreadcrumbController
private
- def check_policy
- authorize resource
- end
-
def group_of_line_params
params.require(:group_of_line).permit( :objectid, :object_version, :creation_time, :creator_id, :name, :comment, :lines, :registration_number, :line_tokens)
end
diff --git a/app/controllers/journey_patterns_controller.rb b/app/controllers/journey_patterns_controller.rb
index 69f16321e..4b6872a05 100644
--- a/app/controllers/journey_patterns_controller.rb
+++ b/app/controllers/journey_patterns_controller.rb
@@ -15,7 +15,7 @@ class JourneyPatternsController < ChouetteController
alias_method :route, :parent
alias_method :journey_pattern, :resource
- before_action :check_policy, only: [:edit, :update, :destroy]
+ include PolicyChecker
def index
index! do |format|
@@ -55,10 +55,6 @@ class JourneyPatternsController < ChouetteController
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/controllers/line_footnotes_controller.rb b/app/controllers/line_footnotes_controller.rb
index 3b44d087c..192f902c8 100644
--- a/app/controllers/line_footnotes_controller.rb
+++ b/app/controllers/line_footnotes_controller.rb
@@ -1,6 +1,6 @@
class LineFootnotesController < ChouetteController
defaults :resource_class => Chouette::Line, :instance_name => 'line'
- before_action :check_policy, only: [:edit, :update, :destroy]
+ include PolicyChecker
belongs_to :referential
def show
@@ -24,6 +24,8 @@ class LineFootnotesController < ChouetteController
end
protected
+
+ # overrides default
def check_policy
authorize resource, "#{action_name}_footnote?".to_sym
end
diff --git a/app/controllers/lines_controller.rb b/app/controllers/lines_controller.rb
index 9a0a007aa..bc8852411 100644
--- a/app/controllers/lines_controller.rb
+++ b/app/controllers/lines_controller.rb
@@ -1,6 +1,6 @@
class LinesController < BreadcrumbController
include ApplicationHelper
- before_action :check_policy, :only => [:edit, :update, :destroy]
+ include PolicyChecker
defaults :resource_class => Chouette::Line
respond_to :html
respond_to :xml
@@ -98,10 +98,6 @@ class LinesController < BreadcrumbController
%w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc'
end
- def check_policy
- authorize resource
- end
-
alias_method :current_referential, :line_referential
helper_method :current_referential
diff --git a/app/controllers/networks_controller.rb b/app/controllers/networks_controller.rb
index d9070e7e8..7249349fc 100644
--- a/app/controllers/networks_controller.rb
+++ b/app/controllers/networks_controller.rb
@@ -1,6 +1,6 @@
class NetworksController < BreadcrumbController
include ApplicationHelper
- before_action :check_policy, :only => [:edit, :update, :destroy]
+ include PolicyChecker
defaults :resource_class => Chouette::Network
respond_to :html
respond_to :xml
@@ -58,10 +58,6 @@ class NetworksController < BreadcrumbController
alias_method :line_referential, :parent
- def check_policy
- authorize resource
- end
-
alias_method :current_referential, :line_referential
helper_method :current_referential
diff --git a/app/controllers/referential_lines_controller.rb b/app/controllers/referential_lines_controller.rb
index 4ffee27cb..c0d71d891 100644
--- a/app/controllers/referential_lines_controller.rb
+++ b/app/controllers/referential_lines_controller.rb
@@ -1,5 +1,5 @@
class ReferentialLinesController < ChouetteController
- before_action :check_policy, :only => [:edit, :update, :destroy]
+ include PolicyChecker
defaults :resource_class => Chouette::Line, :collection_name => 'lines', :instance_name => 'line'
respond_to :html
@@ -95,10 +95,6 @@ class ReferentialLinesController < ChouetteController
%w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc'
end
- def check_policy
- authorize resource
- end
-
def line_params
params.require(:line).permit(
:transport_mode,
diff --git a/app/controllers/referentials_controller.rb b/app/controllers/referentials_controller.rb
index 6957479df..78d55f94b 100644
--- a/app/controllers/referentials_controller.rb
+++ b/app/controllers/referentials_controller.rb
@@ -1,6 +1,7 @@
class ReferentialsController < BreadcrumbController
defaults :resource_class => Referential
- before_action :check_policy, :only => [:edit, :update]
+ include PolicyChecker
+ before_action :check_policy, :only => [:edit, :update] # overrides default
respond_to :html
respond_to :json, :only => :show
@@ -117,10 +118,6 @@ class ReferentialsController < BreadcrumbController
%w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc'
end
- def check_policy
- authorize resource
- end
-
def referential_params
params.require(:referential).permit(
:id,
diff --git a/app/controllers/routes_controller.rb b/app/controllers/routes_controller.rb
index be6329006..59bd22f56 100644
--- a/app/controllers/routes_controller.rb
+++ b/app/controllers/routes_controller.rb
@@ -1,4 +1,5 @@
class RoutesController < ChouetteController
+ include PolicyChecker
defaults :resource_class => Chouette::Route
respond_to :html, :xml, :json
@@ -10,7 +11,6 @@ class RoutesController < ChouetteController
end
before_action :define_candidate_opposite_routes, only: [:new, :edit, :create, :update]
- before_action :check_policy, only: [:edit, :update, :destroy]
def index
index! do |format|
@@ -86,10 +86,6 @@ class RoutesController < ChouetteController
end
end
- def check_policy
- authorize resource
- end
-
private
def route_params
diff --git a/app/controllers/routing_constraint_zones_controller.rb b/app/controllers/routing_constraint_zones_controller.rb
index cd8cd5aa7..17c7066b9 100644
--- a/app/controllers/routing_constraint_zones_controller.rb
+++ b/app/controllers/routing_constraint_zones_controller.rb
@@ -7,12 +7,7 @@ class RoutingConstraintZonesController < ChouetteController
belongs_to :line, parent_class: Chouette::Line
end
- before_action :check_policy, only: [:edit, :update, :destroy]
-
- protected
- def check_policy
- authorize resource
- end
+ include PolicyChecker
private
def routing_constraint_zone_params
diff --git a/app/controllers/time_tables_controller.rb b/app/controllers/time_tables_controller.rb
index ec62dfb98..7f9a95789 100644
--- a/app/controllers/time_tables_controller.rb
+++ b/app/controllers/time_tables_controller.rb
@@ -8,7 +8,7 @@ class TimeTablesController < ChouetteController
belongs_to :referential
- before_action :check_policy, only: [:edit, :update, :destroy]
+ include PolicyChecker
def show
@year = params[:year] ? params[:year].to_i : Date.today.cwyear
@@ -114,10 +114,6 @@ class TimeTablesController < ChouetteController
referential_time_tables_path(referential)
end
- def check_policy
- authorize resource
- end
-
private
def time_table_params
diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb
index 9b4c39d2a..3ae278ec1 100644
--- a/app/controllers/vehicle_journeys_controller.rb
+++ b/app/controllers/vehicle_journeys_controller.rb
@@ -9,7 +9,7 @@ class VehicleJourneysController < ChouetteController
end
end
- before_action :check_policy, only: [:edit, :update, :destroy]
+ include PolicyChecker
def select_journey_pattern
if params[:journey_pattern_id]
@@ -79,12 +79,6 @@ class VehicleJourneysController < ChouetteController
@matrix = resource_class.matrix(@vehicle_journeys)
end
- protected
-
- def check_policy
- authorize resource
- end
-
private
def vehicle_journey_params
diff --git a/app/helpers/breadcrumb_helper.rb b/app/helpers/breadcrumb_helper.rb
index c973c754c..a382f1926 100644
--- a/app/helpers/breadcrumb_helper.rb
+++ b/app/helpers/breadcrumb_helper.rb
@@ -86,11 +86,11 @@ module BreadcrumbHelper
def network_breadcrumb(action)
if @line_referential
line_referential_breadcrumb
- add_breadcrumb Chouette::Network.model_name.human(:count => 2), line_referential_networks_path(@line_referential) unless action == :index
+ add_breadcrumb Chouette::Network.model_name.human(:count => 2).capitalize, line_referential_networks_path(@line_referential) unless action == :index
add_breadcrumb breadcrumb_label(@network), line_referential_network_path(@line_referential, @network),:title => breadcrumb_tooltip(@network) if action == :edit
else
referential_breadcrumb
- add_breadcrumb Chouette::Network.model_name.human(:count => 2), referential_networks_path(@referential) unless action == :index
+ add_breadcrumb Chouette::Network.model_name.human(:count => 2).capitalize, referential_networks_path(@referential) unless action == :index
add_breadcrumb breadcrumb_label(@network), referential_network_path(@referential, @network),:title => breadcrumb_tooltip(@network) if action == :edit
end
end
@@ -98,18 +98,18 @@ module BreadcrumbHelper
def group_of_line_breadcrumb(action)
if @line_referential
line_referential_breadcrumb
- add_breadcrumb Chouette::GroupOfLine.model_name.human(:count => 2), line_referential_group_of_lines_path(@line_referential) unless action == :index
+ add_breadcrumb Chouette::GroupOfLine.model_name.human(:count => 2).capitalize, line_referential_group_of_lines_path(@line_referential) unless action == :index
add_breadcrumb breadcrumb_label(@group_of_line), line_referential_group_of_line_path(@line_referential, @group_of_line),:title => breadcrumb_tooltip(@group_of_line) if action == :edit
else
referential_breadcrumb
- add_breadcrumb Chouette::GroupOfLine.model_name.human(:count => 2), referential_group_of_lines_path(@referential) unless action == :index
+ add_breadcrumb Chouette::GroupOfLine.model_name.human(:count => 2).capitalize, referential_group_of_lines_path(@referential) unless action == :index
add_breadcrumb breadcrumb_label(@group_of_line), referential_group_of_line_path(@referential, @group_of_line),:title => breadcrumb_tooltip(@group_of_line) if action == :edit
end
end
def stop_area_breadcrumb(action)
referential_breadcrumb
- add_breadcrumb Chouette::StopArea.model_name.human(:count => 2), stop_area_referential_stop_areas_path(@stop_area.stop_area_referential) unless action == :index
+ add_breadcrumb Chouette::StopArea.model_name.human(:count => 2).capitalize, stop_area_referential_stop_areas_path(@stop_area.stop_area_referential) unless action == :index
add_breadcrumb breadcrumb_label(@stop_area), stop_area_referential_stop_area_path(@stop_area.stop_area_referential, @stop_area),:title => breadcrumb_tooltip(@stop_area) if action == :edit
end
@@ -124,19 +124,19 @@ module BreadcrumbHelper
def access_link_breadcrumb(action)
access_point_breadcrumb :edit
- add_breadcrumb Chouette::AccessLink.model_name.human(:count => 2), access_links_referential_stop_area_path(@referential, @stop_area)
+ add_breadcrumb Chouette::AccessLink.model_name.human(:count => 2).capitalize.capitalize, access_links_referential_stop_area_path(@referential, @stop_area)
add_breadcrumb breadcrumb_label(@access_link), referential_access_point_access_link_path(@referential, @access_point,@access_link),:title => breadcrumb_tooltip(@access_link) if action == :edit
end
def connection_link_breadcrumb(action)
referential_breadcrumb
- add_breadcrumb Chouette::ConnectionLink.model_name.human(:count => 2), referential_connection_links_path(@referential) unless action == :index
+ add_breadcrumb Chouette::ConnectionLink.model_name.human.pluralize.capitalize, referential_connection_links_path(@referential) unless action == :index
add_breadcrumb breadcrumb_label(@connection_link), referential_connection_link_path(@referential, @connection_link),:title => breadcrumb_tooltip(@connection_link) if action == :edit
end
def time_table_breadcrumb(action)
referential_breadcrumb
- add_breadcrumb Chouette::TimeTable.model_name.human(:count => 2), referential_time_tables_path(@referential) unless action == :index
+ add_breadcrumb Chouette::TimeTable.model_name.human(:count => 2).capitalize, referential_time_tables_path(@referential) unless action == :index
add_breadcrumb breadcrumb_label(@time_table), referential_time_table_path(@referential, @time_table),:title => breadcrumb_tooltip(@time_table) if action == :edit
end
@@ -148,18 +148,18 @@ module BreadcrumbHelper
def timeband_breadcrumb(action)
referential_breadcrumb
- add_breadcrumb Chouette::Timeband.model_name.human(:count => 2), referential_timebands_path(@referential) unless action == :index
+ add_breadcrumb Chouette::Timeband.model_name.human(:count => 2).capitalize, referential_timebands_path(@referential) unless action == :index
add_breadcrumb breadcrumb_label(@timeband), referential_timeband_path(@referential, @timeband),:title => breadcrumb_tooltip(@timeband) if action == :edit
end
def line_breadcrumb(action)
if @line_referential
line_referential_breadcrumb
- add_breadcrumb Chouette::Line.model_name.human(:count => 2), line_referential_lines_path(@line_referential) unless action == :index
+ add_breadcrumb Chouette::Line.model_name.human(:count => 2).capitalize, line_referential_lines_path(@line_referential) unless action == :index
add_breadcrumb breadcrumb_label(@line), line_referential_line_path(@line_referential, @line),:title => breadcrumb_tooltip(@line) if action == :edit
else
referential_breadcrumb
- add_breadcrumb Chouette::Line.model_name.human(:count => 2), referential_lines_path(@referential) unless action == :index
+ add_breadcrumb Chouette::Line.model_name.human(:count => 2).capitalize, referential_lines_path(@referential) unless action == :index
add_breadcrumb breadcrumb_label(@line), referential_line_path(@referential, @line),:title => breadcrumb_tooltip(@line) if action == :edit
end
end
@@ -206,11 +206,11 @@ module BreadcrumbHelper
def company_breadcrumb (action)
if @line_referential
line_referential_breadcrumb
- add_breadcrumb Chouette::Company.model_name.human(:count => 2), line_referential_companies_path(@line_referential) unless action == :index
+ add_breadcrumb Chouette::Company.model_name.human(:count => 2).capitalize, line_referential_companies_path(@line_referential) unless action == :index
add_breadcrumb breadcrumb_label(@company), line_referential_company_path(@line_referential, @company),:title => breadcrumb_tooltip(@company) if action == :edit
else
referential_breadcrumb
- add_breadcrumb Chouette::Company.model_name.human(:count => 2), referential_companies_path(@referential) unless action == :index
+ add_breadcrumb Chouette::Company.model_name.human(:count => 2).capitalize, referential_companies_path(@referential) unless action == :index
add_breadcrumb breadcrumb_label(@company), referential_company_path(@referential, @company),:title => breadcrumb_tooltip(@company) if action == :edit
end
end
diff --git a/app/models/chouette/access_point.rb b/app/models/chouette/access_point.rb
index da1f9524a..3cae07b8e 100644
--- a/app/models/chouette/access_point.rb
+++ b/app/models/chouette/access_point.rb
@@ -1,3 +1,4 @@
+
require 'geokit'
require 'geo_ruby'
diff --git a/app/policies/acces_point_policy.rb b/app/policies/acces_point_policy.rb
new file mode 100644
index 000000000..4f604693c
--- /dev/null
+++ b/app/policies/acces_point_policy.rb
@@ -0,0 +1,22 @@
+class AccessPointPolicy < ApplicationPolicy
+ class Scope < Scope
+ def resolve
+ scope
+ end
+ end
+
+ def create?
+ user.has_permission?('access_points.create') # organisation match via referential is checked in the view
+ end
+
+ def edit?
+ organisation_match?(via_referential: true) && user.has_permission?('access_points.edit')
+ end
+
+ def destroy?
+ organisation_match?(via_referential: true) && user.has_permission?('access_points.destroy')
+ end
+
+ def update? ; edit? end
+ def new? ; create? end
+end
diff --git a/app/policies/access_link_policy.rb b/app/policies/access_link_policy.rb
new file mode 100644
index 000000000..8e7a86490
--- /dev/null
+++ b/app/policies/access_link_policy.rb
@@ -0,0 +1,22 @@
+class AccessLinkPolicy < ApplicationPolicy
+ class Scope < Scope
+ def resolve
+ scope
+ end
+ end
+
+ def create?
+ user.has_permission?('access_links.create') # organisation match via referential is checked in the view
+ end
+
+ def edit?
+ organisation_match?(via_referential: true) && user.has_permission?('access_links.edit')
+ end
+
+ def destroy?
+ organisation_match?(via_referential: true) && user.has_permission?('access_links.destroy')
+ end
+
+ def update? ; edit? end
+ def new? ; create? end
+end
diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb
index 2a0bbc521..07138b38e 100644
--- a/app/policies/application_policy.rb
+++ b/app/policies/application_policy.rb
@@ -38,6 +38,10 @@ class ApplicationPolicy
Pundit.policy_scope!(user, record.class)
end
+ def organisation_match?(via_referential: false)
+ eval("user.organisation == record#{'.referential' if via_referential}.organisation")
+ end
+
class Scope
attr_reader :user, :scope
diff --git a/app/policies/calendar_policy.rb b/app/policies/calendar_policy.rb
index 3b17679f1..4248bccc7 100644
--- a/app/policies/calendar_policy.rb
+++ b/app/policies/calendar_policy.rb
@@ -24,8 +24,4 @@ class CalendarPolicy < ApplicationPolicy
def modify?
organisation_match?
end
-
- def organisation_match?
- user.organisation == record.organisation
- end
end
diff --git a/app/policies/connection_link_policy.rb b/app/policies/connection_link_policy.rb
new file mode 100644
index 000000000..cc49f575f
--- /dev/null
+++ b/app/policies/connection_link_policy.rb
@@ -0,0 +1,22 @@
+class ConnectionLinkPolicy < ApplicationPolicy
+ class Scope < Scope
+ def resolve
+ scope
+ end
+ end
+
+ def create?
+ user.has_permission?('connection_links.create') # organisation match via referential is checked in the view
+ end
+
+ def edit?
+ organisation_match?(via_referential: true) && user.has_permission?('connection_links.edit')
+ end
+
+ def destroy?
+ organisation_match?(via_referential: true) && user.has_permission?('connection_links.destroy')
+ end
+
+ def update? ; edit? end
+ def new? ; create? end
+end
diff --git a/app/policies/journey_pattern_policy.rb b/app/policies/journey_pattern_policy.rb
index 95ab23318..a11fd6bcc 100644
--- a/app/policies/journey_pattern_policy.rb
+++ b/app/policies/journey_pattern_policy.rb
@@ -6,17 +6,18 @@ class JourneyPatternPolicy < ApplicationPolicy
end
def create?
- user.has_permission?('journey_patterns.create')
+ user.has_permission?('journey_patterns.create') # organisation match via referential is checked in the view
end
def edit?
- user.has_permission?('journey_patterns.edit')
+ organisation_match?(via_referential: true) && user.has_permission?('journey_patterns.edit')
end
def destroy?
- user.has_permission?('journey_patterns.destroy')
+ organisation_match?(via_referential: true) && user.has_permission?('journey_patterns.destroy')
end
def update? ; edit? end
def new? ; create? end
end
+
diff --git a/app/policies/referential_policy.rb b/app/policies/referential_policy.rb
index ddf5188a0..074aaec8b 100644
--- a/app/policies/referential_policy.rb
+++ b/app/policies/referential_policy.rb
@@ -5,9 +5,20 @@ class ReferentialPolicy < ApplicationPolicy
end
end
+ def create?
+ true
+ end
+
+ def edit?
+ organisation_match?
+ end
+
def update?
- !record.archived?
+ edit? && !record.archived?
end
- def edit? ; update? end
+ def new? ; create? end
+ def destroy? ; edit? end
end
+
+
diff --git a/app/policies/route_policy.rb b/app/policies/route_policy.rb
index 232706d8f..0f42b7f08 100644
--- a/app/policies/route_policy.rb
+++ b/app/policies/route_policy.rb
@@ -6,15 +6,15 @@ class RoutePolicy < ApplicationPolicy
end
def create?
- user.has_permission?('routes.create')
+ user.has_permission?('routes.create') # organisation match via referential is checked in the view
end
def edit?
- user.has_permission?('routes.edit')
+ organisation_match?(via_referential: true) && user.has_permission?('routes.edit')
end
def destroy?
- user.has_permission?('routes.destroy')
+ organisation_match?(via_referential: true) && user.has_permission?('routes.destroy')
end
def update? ; edit? end
diff --git a/app/policies/routing_constraint_zone_policy.rb b/app/policies/routing_constraint_zone_policy.rb
index 3de5080f6..fbf322066 100644
--- a/app/policies/routing_constraint_zone_policy.rb
+++ b/app/policies/routing_constraint_zone_policy.rb
@@ -6,15 +6,15 @@ class RoutingConstraintZonePolicy < ApplicationPolicy
end
def create?
- user.has_permission?('routing_constraint_zones.create')
+ user.has_permission?('routing_constraint_zones.create') # organisation match via referential is checked in the view
end
def edit?
- user.has_permission?('routing_constraint_zones.edit')
+ organisation_match?(via_referential: true) && user.has_permission?('routing_constraint_zones.edit')
end
def destroy?
- user.has_permission?('routing_constraint_zones.destroy')
+ organisation_match?(via_referential: true) && user.has_permission?('routing_constraint_zones.destroy')
end
def update? ; edit? end
diff --git a/app/policies/time_table_policy.rb b/app/policies/time_table_policy.rb
index 7328748c2..1d14c646a 100644
--- a/app/policies/time_table_policy.rb
+++ b/app/policies/time_table_policy.rb
@@ -6,15 +6,15 @@ class TimeTablePolicy < ApplicationPolicy
end
def create?
- user.has_permission?('time_tables.create')
+ user.has_permission?('time_tables.create') # organisation match via referential is checked in the view
end
def edit?
- user.has_permission?('time_tables.edit')
+ organisation_match?(via_referential: true) && user.has_permission?('time_tables.edit')
end
def destroy?
- user.has_permission?('time_tables.destroy')
+ organisation_match?(via_referential: true) && user.has_permission?('time_tables.destroy')
end
def update? ; edit? end
diff --git a/app/policies/vehicle_journey_policy.rb b/app/policies/vehicle_journey_policy.rb
index 7aa19f1a2..785c2bb1f 100644
--- a/app/policies/vehicle_journey_policy.rb
+++ b/app/policies/vehicle_journey_policy.rb
@@ -6,15 +6,15 @@ class VehicleJourneyPolicy < ApplicationPolicy
end
def create?
- user.has_permission?('vehicle_journeys.create')
+ user.has_permission?('vehicle_journeys.create') # organisation match via referential is checked in the view
end
def edit?
- user.has_permission?('vehicle_journeys.edit')
+ organisation_match?(via_referential: true) && user.has_permission?('vehicle_journeys.edit')
end
def destroy?
- user.has_permission?('vehicle_journeys.destroy')
+ organisation_match?(via_referential: true) && user.has_permission?('vehicle_journeys.destroy')
end
def update? ; edit? end
diff --git a/app/views/access_link_pairs/_access_link_pair.html.slim b/app/views/access_link_pairs/_access_link_pair.html.slim
index 05fdd3446..c313f9044 100644
--- a/app/views/access_link_pairs/_access_link_pair.html.slim
+++ b/app/views/access_link_pairs/_access_link_pair.html.slim
@@ -12,7 +12,7 @@ tr
- if access_link_pair.out_exists?
= link_to(referential_access_point_access_link_path(@referential, access_link_pair.access_point, :access_link => {:stop_area_id => access_link_pair.stop_area.id, :link_orientation_type => 'stop_area_to_access_point'})) do
= image_tag "icons/green_left_arrow.png"
- - else
+ - elsif policy(Chouette::AccessLink).create && @referential.organisation == current_organisation
= link_to(new_referential_access_point_access_link_path(@referential, access_link_pair.access_point, :access_link => {:stop_area_id => access_link_pair.stop_area.id, :link_orientation_type => 'stop_area_to_access_point'})) do
= image_tag "icons/gray_left_arrow.png"
@@ -24,7 +24,7 @@ tr
- if access_link_pair.in_exists?
= link_to(referential_access_point_access_link_path(@referential, access_link_pair.access_point, access_link_pair.from_access_point)) do
= image_tag "icons/green_right_arrow.png"
- - else
+ - elsif policy(Chouette::AccessLink).create && @referential.organisation == current_organisation
= link_to(new_referential_access_point_access_link_path(@referential, access_link_pair.access_point, :access_link => {:stop_area_id => access_link_pair.stop_area.id, :link_orientation_type => 'access_point_to_stop_area'})) do
= image_tag "icons/gray_right_arrow.png"
@@ -37,4 +37,4 @@ tr
= image_tag "map/#{access_link_pair.stop_area.stop_area_type}.png"
span = access_link_pair.stop_area.name
.info
- = t("area_types.label.#{access_link_pair.stop_area.stop_area_type}") \ No newline at end of file
+ = t("area_types.label.#{access_link_pair.stop_area.stop_area_type}")
diff --git a/app/views/access_links/show.html.slim b/app/views/access_links/show.html.slim
index a7e296dde..59f72a55f 100644
--- a/app/views/access_links/show.html.slim
+++ b/app/views/access_links/show.html.slim
@@ -2,7 +2,7 @@
.access_link_show
= @map.to_html
-
+
.summary
p
label = "#{@access_link.human_attribute_name('access_link_type')} : "
@@ -44,12 +44,12 @@
p
label = "#{@access_link.human_attribute_name('mobility_restricted_suitability')}: "
- - if !@access_link.mobility_restricted_suitability.nil?)
+ - if !@access_link.mobility_restricted_suitability.nil?
= t((@access_link.mobility_restricted_suitability == true).to_s)
- else
= t('unknown')
- p
+ p
label = "#{@access_link.human_attribute_name('stairs_availability')} : "
- if !@access_link.stairs_availability.nil?
= t((@access_link.stairs_availability == true).to_s)
@@ -66,9 +66,11 @@
- content_for :sidebar do
ul.actions
li
- = link_to t('access_links.actions.edit'), edit_referential_access_point_access_link_path(@referential, @access_link.access_point, @access_link), class: 'edit'
+ - if policy(@access_link).edit?
+ = link_to t('access_links.actions.edit'), edit_referential_access_point_access_link_path(@referential, @access_link.access_point, @access_link), class: 'edit'
li
- = link_to t('access_links.actions.destroy'), referential_access_point_access_link_path(@referential, @access_link.access_point, @access_link), method: :delete, data: {:confirm => t('access_links.actions.destroy_confirm')}, class: 'remove'
+ - if policy(@access_link).destroy?
+ = link_to t('access_links.actions.destroy'), referential_access_point_access_link_path(@referential, @access_link.access_point, @access_link), method: :delete, data: {:confirm => t('access_links.actions.destroy_confirm')}, class: 'remove'
br
- = creation_tag(@access_link) \ No newline at end of file
+ = creation_tag(@access_link)
diff --git a/app/views/connection_links/_connection_link.slim b/app/views/connection_links/_connection_link.slim
index cfe84cc53..2ece8ed44 100644
--- a/app/views/connection_links/_connection_link.slim
+++ b/app/views/connection_links/_connection_link.slim
@@ -2,11 +2,13 @@
.panel-heading
.panel-title.clearfix
span.pull-right
- = link_to edit_referential_connection_link_path(@referential, connection_link), class: 'btn btn-default btn-sm' do
+ - if policy(connection_link).edit?
+ = link_to edit_referential_connection_link_path(@referential, connection_link), class: 'btn btn-default btn-sm' do
span.fa.fa-pencil
-
- = link_to referential_connection_link_path(@referential, connection_link), :method => :delete, :data => {:confirm => t('connection_links.actions.destroy_confirm')}, class: 'btn btn-danger btn-sm' do
- span.fa.fa-trash-o
+
+ - if policy(connection_link).destroy?
+ = link_to referential_connection_link_path(@referential, connection_link), :method => :delete, :data => {:confirm => t('connection_links.actions.destroy_confirm')}, class: 'btn btn-danger btn-sm' do
+ span.fa.fa-trash-o
h5
= link_to([@referential, connection_link], class: 'preview', title: "#{Chouette::ConnectionLink.model_name.human.capitalize} #{connection_link.name}") do
@@ -21,9 +23,9 @@
= link_to_if connection_link.departure, truncate(connection_link.departure.name, :length => 15) , referential_stop_area_path(@referential, connection_link.departure), :title => "#{connection_link.human_attribute_name('departure')} #{connection_link.departure.name}"
- else
= connection_link.human_attribute_name('undefined')
-
+
= t('.to')
-
+
- if connection_link.arrival.present?
= link_to_if( connection_link.arrival, truncate(connection_link.arrival.name, :length => 15), referential_stop_area_path(@referential, connection_link.arrival), :title => "#{connection_link.human_attribute_name('arrival')} #{connection_link.arrival.name}" )
- else
@@ -31,4 +33,4 @@
p
= connection_link.human_attribute_name('default_duration').capitalize
= " : "
- = connection_link.default_duration ? connection_link.default_duration.strftime('%Mm %Ss') : connection_link.human_attribute_name("undefined") \ No newline at end of file
+ = connection_link.default_duration ? connection_link.default_duration.strftime('%Mm %Ss') : connection_link.human_attribute_name("undefined")
diff --git a/app/views/connection_links/index.html.slim b/app/views/connection_links/index.html.slim
index d36c6a125..7651ae340 100644
--- a/app/views/connection_links/index.html.slim
+++ b/app/views/connection_links/index.html.slim
@@ -20,4 +20,5 @@
- content_for :sidebar do
ul.actions
li
- = link_to t('connection_links.actions.new'), new_referential_connection_link_path(@referential), class: 'add'
+ - if policy(Chouette::ConnectionLink).create? && @referential.organisation == current_organisation
+ = link_to t('connection_links.actions.new'), new_referential_connection_link_path(@referential), class: 'add'
diff --git a/app/views/connection_links/show.html.slim b/app/views/connection_links/show.html.slim
index 263c4c154..5d8864bb5 100644
--- a/app/views/connection_links/show.html.slim
+++ b/app/views/connection_links/show.html.slim
@@ -2,7 +2,7 @@
.connection_link_show
= @map.to_html
-
+
.summary
p
label = "#{@connection_link.human_attribute_name(:departure)} : "
@@ -24,7 +24,7 @@
= t("unknown")
- else
= t("connection_link_types.label.#{@connection_link.connection_link_type}")
-
+
p
label = "#{@connection_link.human_attribute_name('comment')} : "
= @connection_link.comment
@@ -40,12 +40,12 @@
label.duration = "#{@connection_link.human_attribute_name('default_duration')} : "
- if @connection_link.default_duration.present?
= @connection_link.default_duration.strftime('%Hh %Mm %Ss')
-
+
p
label.duration = "#{@connection_link.human_attribute_name('frequent_traveller_duration')} : "
- if @connection_link.frequent_traveller_duration.present?
= @connection_link.frequent_traveller_duration.strftime('%Hh %Mm %Ss')
-
+
p
label.duration = "#{@connection_link.human_attribute_name('occasional_traveller_duration')} : "
- if @connection_link.occasional_traveller_duration.present?
@@ -79,14 +79,18 @@
- content_for :sidebar do
ul.actions
- li
- = link_to t('connection_links.actions.new'), new_referential_connection_link_path(@referential), class: 'add'
- li
- = link_to t('connection_links.actions.edit'), edit_referential_connection_link_path(@referential, @connection_link), class: 'edit'
- li
- = link_to t('connection_links.actions.destroy'), referential_connection_link_path(@referential, @connection_link), :method => :delete, :data => {:confirm => t('connection_links.actions.destroy_confirm')}, class: 'remove'
- li
- = link_to t('connection_links.actions.select_areas'), select_areas_referential_connection_link_path(@referential, @connection_link), class: 'select'
+ - if policy(Chouette::ConnectionLink).create? && @referential.organisation == current_organisation
+ li
+ = link_to t('connection_links.actions.new'), new_referential_connection_link_path(@referential), class: 'add'
+ - if policy(@connection_link).edit?
+ li
+ = link_to t('connection_links.actions.edit'), edit_referential_connection_link_path(@referential, @connection_link), class: 'edit'
+ - if policy(@connection_link).destroy?
+ li
+ = link_to t('connection_links.actions.destroy'), referential_connection_link_path(@referential, @connection_link), :method => :delete, :data => {:confirm => t('connection_links.actions.destroy_confirm')}, class: 'remove'
+ - if policy(@connection_link).edit?
+ li
+ = link_to t('connection_links.actions.select_areas'), select_areas_referential_connection_link_path(@referential, @connection_link), class: 'select'
br
- = creation_tag(@connection_link) \ No newline at end of file
+ = creation_tag(@connection_link)
diff --git a/app/views/journey_patterns/show.html.slim b/app/views/journey_patterns/show.html.slim
index 417e4dc16..85ba4e7a5 100644
--- a/app/views/journey_patterns/show.html.slim
+++ b/app/views/journey_patterns/show.html.slim
@@ -30,7 +30,7 @@ h3.journey_pattern_stop_points = t('.stop_points')
- content_for :sidebar do
ul.actions
li
- - if policy(@journey_pattern).create?
+ - if policy(@journey_pattern).create? && @journey_pattern.referential.organisation == current_organisation
= link_to t('journey_patterns.actions.new'), new_referential_line_route_journey_pattern_path(@referential, @line, @route), class: 'add'
li
- if policy(@journey_pattern).edit?
diff --git a/app/views/lines/index.html.slim b/app/views/lines/index.html.slim
index 494958ddb..a51dffb5f 100644
--- a/app/views/lines/index.html.slim
+++ b/app/views/lines/index.html.slim
@@ -7,7 +7,7 @@
- content_for :sidebar do
ul.actions
- - if policy(Chouette::Line).create?
+ - if policy(Chouette::Line).create? && @line_referential.organisations.include?(current_organisation)
li
= link_to t('lines.actions.new'), new_line_referential_line_path(@line_referential), class: 'add'
diff --git a/app/views/lines/show.html.slim b/app/views/lines/show.html.slim
index a6e29b88b..2b652754a 100644
--- a/app/views/lines/show.html.slim
+++ b/app/views/lines/show.html.slim
@@ -121,7 +121,7 @@
- content_for :sidebar do
ul.actions
- - if policy(Chouette::Line).create?
+ - if policy(Chouette::Line).create? && @line_referential.organisations.include?(current_organisation)
li
= link_to t('lines.actions.new'), new_line_referential_line_path(@line_referential), class: 'add'
/ FIXME #2018
diff --git a/app/views/referential_lines/index.html.slim b/app/views/referential_lines/index.html.slim
index 1da5b7e3a..6b4fd5f38 100644
--- a/app/views/referential_lines/index.html.slim
+++ b/app/views/referential_lines/index.html.slim
@@ -7,7 +7,7 @@
- content_for :sidebar do
ul.actions
- - if policy(Chouette::Line).create?
+ - if policy(Chouette::Line).create? && @referential.organisation == current_organisation
li
= link_to t('lines.actions.new'), new_referential_line_path(@referential), class: 'add'
diff --git a/app/views/referential_lines/show.html.slim b/app/views/referential_lines/show.html.slim
index 5c8e1b32d..dcd1e587c 100644
--- a/app/views/referential_lines/show.html.slim
+++ b/app/views/referential_lines/show.html.slim
@@ -126,7 +126,7 @@ p.after_map
- content_for :sidebar do
ul.actions
- - if policy(Chouette::Line).create?
+ - if policy(Chouette::Line).create? && @referential.organisation == current_organisation
li
= link_to t('lines.actions.new'), new_referential_line_path(@referential), class: 'add'
- if policy(@line).update?
@@ -139,7 +139,7 @@ p.after_map
- if !@line.hub_restricted? || (@line.hub_restricted? && @line.routes.size < 2)
/ FIXME #825
li
- - if policy(Chouette::Route).create?
+ - if policy(Chouette::Route).create? && @referential.organisation == current_organisation
= link_to t('routes.actions.new'), new_referential_line_route_path(@referential, @line), class: 'add'
= creation_tag(@line)
diff --git a/app/views/referential_stop_areas/access_links.html.slim b/app/views/referential_stop_areas/access_links.html.slim
index 128d1b4b9..6c37dd077 100644
--- a/app/views/referential_stop_areas/access_links.html.slim
+++ b/app/views/referential_stop_areas/access_links.html.slim
@@ -15,7 +15,7 @@
= render partial: 'access_link_pairs/access_link_pair', collection: access_links_pairs(@generic_access_links)
#detail.panel-group
- .panel.panel-default
+ .panel.panel-default
.panel-heading
h4.panel-title
a data-toggle="collapse" data-parent="#detail" href="#detail_access_links
@@ -25,4 +25,4 @@
.panel-body
.access_link_pairs
table
- = render partial: 'access_link_pairs/access_link_pair', collection: access_links_pairs(@detail_access_links) \ No newline at end of file
+ = render partial: 'access_link_pairs/access_link_pair', collection: access_links_pairs(@detail_access_links)
diff --git a/app/views/routes/new.html.slim b/app/views/routes/new.html.slim
index 51410a2e5..9907f9b9d 100644
--- a/app/views/routes/new.html.slim
+++ b/app/views/routes/new.html.slim
@@ -3,3 +3,4 @@
.row
.col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-8.col-sm-offset-2
== render 'form'
+
diff --git a/app/views/routing_constraint_zones/index.html.slim b/app/views/routing_constraint_zones/index.html.slim
index cc1305e95..df52ed987 100644
--- a/app/views/routing_constraint_zones/index.html.slim
+++ b/app/views/routing_constraint_zones/index.html.slim
@@ -1,6 +1,6 @@
= title_tag Chouette::RoutingConstraintZone.model_name.human.pluralize(:fr)
-- if policy(Chouette::RoutingConstraintZone).create?
+- if policy(Chouette::RoutingConstraintZone).create? && @referential.organisation == current_organisation
= link_to t('routing_constraint_zones.actions.new'), new_referential_line_routing_constraint_zone_path
- if @routing_constraint_zones.any?
diff --git a/app/views/time_tables/index.html.slim b/app/views/time_tables/index.html.slim
index e53e1e3e2..64d2372a5 100644
--- a/app/views/time_tables/index.html.slim
+++ b/app/views/time_tables/index.html.slim
@@ -32,6 +32,6 @@
- content_for :sidebar do
ul.actions
li
- - if policy(Chouette::TimeTable).create?
+ - if policy(Chouette::TimeTable).create? && @referential.organisation == current_organisation
= link_to t('time_tables.actions.new'), new_referential_time_table_path(@referential), class: "add"
br
diff --git a/app/views/time_tables/show.html.slim b/app/views/time_tables/show.html.slim
index 8154ea8e0..436886faa 100644
--- a/app/views/time_tables/show.html.slim
+++ b/app/views/time_tables/show.html.slim
@@ -9,7 +9,7 @@
- content_for :sidebar do
ul.actions
li
- - if policy(@time_table).create?
+ - if policy(@time_table).create? && @referential.organisation == current_organisation
= link_to t('time_tables.actions.new'), new_referential_time_table_path(@referential), class: 'add'
li
- if policy(@time_table).edit?
@@ -18,10 +18,10 @@
- if policy(@time_table).destroy?
= link_to t('time_tables.actions.destroy'), referential_time_table_path(@referential, @time_table), :method => :delete, :data => {:confirm => t('time_tables.actions.destroy_confirm')}, class: "remove"
li
- - if policy(@time_table).create?
+ - if policy(@time_table).create? && @referential.organisation == current_organisation
= link_to t('time_tables.actions.duplicate'), duplicate_referential_time_table_path(@referential, @time_table), class: "clone"
li
- /- if policy(@time_table).create?
+ /- if policy(@time_table).create? && @referential.organisation == current_organisation
= link_to t('time_tables.actions.combine'), new_referential_time_table_time_table_combination_path(@referential, @time_table), {:remote => true, 'data-toggle' => "modal", 'data-target' => '#modal_combine', class: "merge"}
= creation_tag(@time_table)
diff --git a/app/views/vehicle_journeys/_show_sidebar.html.slim b/app/views/vehicle_journeys/_show_sidebar.html.slim
index 44d5f8233..ca7e140bc 100644
--- a/app/views/vehicle_journeys/_show_sidebar.html.slim
+++ b/app/views/vehicle_journeys/_show_sidebar.html.slim
@@ -1,7 +1,7 @@
- content_for :sidebar do
ul.actions
li
- - if policy(@vehicle_journey).create?
+ - if policy(@vehicle_journey).create? && @vehicle_journey.referential.organisation == current_organisation
= link_to t('vehicle_journeys.actions.new'), new_referential_line_route_vehicle_journey_path(@referential, @line, @route), class: "add"
li = link_to t('vehicle_journeys.actions.new_frequency'), new_referential_line_route_vehicle_journey_frequency_path(@referential, @line, @route), class: "add"
li
diff --git a/app/views/vehicle_journeys/_sidebar.html.slim b/app/views/vehicle_journeys/_sidebar.html.slim
index 187de1b08..e0a07d6e4 100644
--- a/app/views/vehicle_journeys/_sidebar.html.slim
+++ b/app/views/vehicle_journeys/_sidebar.html.slim
@@ -1,6 +1,6 @@
ul.actions
li
- - if policy(Chouette::VehicleJourney).create?
+ - if policy(Chouette::VehicleJourney).create? && @referential.organisation == current_organisation
= link_to t('vehicle_journeys.actions.new'), new_referential_line_route_vehicle_journey_path(@referential, @line, @route), class: "add"
li
= link_to t('vehicle_journeys.actions.new_frequency'), new_referential_line_route_vehicle_journey_frequency_path(@referential, @line, @route), class: "add"
diff --git a/spec/features/routes_spec.rb b/spec/features/routes_spec.rb
index e82987811..7f1917862 100644
--- a/spec/features/routes_spec.rb
+++ b/spec/features/routes_spec.rb
@@ -4,13 +4,15 @@ require 'spec_helper'
describe "Routes", :type => :feature do
login_user
- let!(:line) { create(:line) }
+ let(:line) { create :line }
let!(:route) { create(:route, :line => line) }
let!(:route2) { create(:route, :line => line) }
#let!(:stop_areas) { Array.new(4) { create(:stop_area) } }
let!(:stop_points) { Array.new(4) { create(:stop_point, :route => route) } }
let!(:journey_pattern) { create(:journey_pattern, route: route) }
+ before { @user.update(organisation: referential.organisation) }
+
describe "from lines page to a line page" do
it "display line's routes" do
visit referential_lines_path(referential)
@@ -22,7 +24,7 @@ describe "Routes", :type => :feature do
describe "from line's page to route's page" do
it "display route properties" do
- visit referential_line_path(referential,line)
+ visit referential_line_path(referential, line)
click_link "#{route.name}"
expect(page).to have_content(route.name)
expect(page).to have_content(route.number)
@@ -31,7 +33,7 @@ describe "Routes", :type => :feature do
describe "from line's page, create a new route" do
it "return to line's page that display new route" do
- visit referential_line_path(referential,line)
+ visit referential_line_path(referential, line)
click_link "Ajouter un itinéraire"
fill_in "route_name", :with => "A to B"
# select 'Aller', :from => "route_direction"
@@ -110,6 +112,12 @@ describe "Routes", :type => :feature do
end
end
+ context 'user belongs to another organisation' do
+ xit 'does not show link to a create route page' do
+ expect(page).not_to have_content(I18n.t('routes.actions.new'))
+ end
+ end
+
context 'user does not have permission to create routes' do
it 'does not show link to a create route page' do
@user.update_attribute(:permissions, [])
diff --git a/spec/support/devise.rb b/spec/support/devise.rb
index 0eba265ac..f692edab8 100644
--- a/spec/support/devise.rb
+++ b/spec/support/devise.rb
@@ -6,7 +6,9 @@ module DeviseRequestHelper
@user ||= create(:user, :organisation => organisation,
:permissions => ['routes.create', 'routes.edit', 'routes.destroy', 'journey_patterns.create', 'journey_patterns.edit', 'journey_patterns.destroy',
'vehicle_journeys.create', 'vehicle_journeys.edit', 'vehicle_journeys.destroy', 'time_tables.create', 'time_tables.edit', 'time_tables.destroy',
- 'footnotes.edit', 'footnotes.create', 'footnotes.destroy', 'routing_constraint_zones.create', 'routing_constraint_zones.edit', 'routing_constraint_zones.destroy'])
+ 'footnotes.edit', 'footnotes.create', 'footnotes.destroy', 'routing_constraint_zones.create', 'routing_constraint_zones.edit', 'routing_constraint_zones.destroy',
+ 'access_points.create', 'access_points.edit', 'access_points.destroy', 'access_links.create', 'access_links.edit', 'access_links.destroy',
+ 'connection_links.create', 'connection_links.edit', 'connection_links.destroy', 'route_sections.create', 'route_sections.edit', 'route_sections.destroy'])
login_as @user, :scope => :user
# post_via_redirect user_session_path, 'user[email]' => @user.email, 'user[password]' => @user.password
end
diff --git a/spec/views/connection_links/index.html.erb_spec.rb b/spec/views/connection_links/index.html.erb_spec.rb
index 51029a2f8..a01380094 100644
--- a/spec/views/connection_links/index.html.erb_spec.rb
+++ b/spec/views/connection_links/index.html.erb_spec.rb
@@ -3,12 +3,16 @@ require 'spec_helper'
describe "/connection_links/index", :type => :view do
assign_referential
- let!(:connection_links) { assign :connection_links, Array.new(2) { create(:connection_link) }.paginate }
+ let!(:connection_links) { assign :connection_links, Array.new(2) { create(:connection_link) }.paginate }
let!(:search) { assign :q, Ransack::Search.new(Chouette::ConnectionLink) }
- it "should render a show link for each group" do
- render
- connection_links.each do |connection_link|
+ before do
+ allow(view).to receive_messages(current_organisation: referential.organisation)
+ end
+
+ it "should render a show link for each group" do
+ render
+ connection_links.each do |connection_link|
expect(rendered).to have_selector(".connection_link a[href='#{view.referential_connection_link_path(referential, connection_link)}']", :text => connection_link.name)
end
end
diff --git a/spec/views/connection_links/show.html.erb_spec.rb b/spec/views/connection_links/show.html.erb_spec.rb
index 7be74ad7c..1a7ad3d16 100644
--- a/spec/views/connection_links/show.html.erb_spec.rb
+++ b/spec/views/connection_links/show.html.erb_spec.rb
@@ -1,11 +1,15 @@
require 'spec_helper'
describe "/connection_links/show", :type => :view do
-
+
assign_referential
let!(:connection_link) { assign(:connection_link, create(:connection_link)) }
let!(:map) { assign(:map, double(:to_html => '<div id="map"/>'.html_safe)) }
+ before do
+ allow(view).to receive_messages(current_organisation: referential.organisation)
+ end
+
it "should render h2 with the connection_link name" do
render
expect(rendered).to have_selector("h2", :text => Regexp.new(connection_link.name))
diff --git a/spec/views/lines/show.html.erb_spec.rb b/spec/views/lines/show.html.erb_spec.rb
index 9f929f432..65475e296 100644
--- a/spec/views/lines/show.html.erb_spec.rb
+++ b/spec/views/lines/show.html.erb_spec.rb
@@ -2,11 +2,16 @@ require 'spec_helper'
describe "/lines/show", :type => :view do
+ assign_referential
let!(:line) { assign :line, create(:line) }
let!(:line_referential) { assign :line_referential, line.line_referential }
let!(:routes) { assign :routes, Array.new(2) { create(:route, :line => line) }.paginate }
let!(:map) { assign(:map, double(:to_html => '<div id="map"/>'.html_safe)) }
+ before do
+ allow(view).to receive_messages(current_organisation: referential.organisation)
+ end
+
it "should render h2 with the line name" do
render
expect(rendered).to have_selector("h2", :text => Regexp.new(line.name))
diff --git a/spec/views/time_tables/index.html.erb_spec.rb b/spec/views/time_tables/index.html.erb_spec.rb
index 84cea756e..2679964c1 100644
--- a/spec/views/time_tables/index.html.erb_spec.rb
+++ b/spec/views/time_tables/index.html.erb_spec.rb
@@ -3,12 +3,16 @@ require 'spec_helper'
describe "/time_tables/index", :type => :view do
assign_referential
- let!(:time_tables) { assign :time_tables, Array.new(2){ create(:time_table) }.paginate }
+ let!(:time_tables) { assign :time_tables, Array.new(2){ create(:time_table) }.paginate }
let!(:search) { assign :q, Ransack::Search.new(Chouette::TimeTable) }
- it "should render a show link for each group" do
- render
- time_tables.each do |time_table|
+ before do
+ allow(view).to receive_messages(current_organisation: referential.organisation)
+ end
+
+ it "should render a show link for each group" do
+ render
+ time_tables.each do |time_table|
expect(rendered).to have_selector(".time_table a[href='#{view.referential_time_table_path(referential, time_table)}']", :text => time_table.comment)
end
end
diff --git a/spec/views/time_tables/show.html.erb_spec.rb b/spec/views/time_tables/show.html.erb_spec.rb
index 352d67f4f..3b5d7f1f1 100644
--- a/spec/views/time_tables/show.html.erb_spec.rb
+++ b/spec/views/time_tables/show.html.erb_spec.rb
@@ -1,13 +1,17 @@
require 'spec_helper'
describe "/time_tables/show", :type => :view do
-
+
assign_referential
let!(:time_table) { assign(:time_table, create(:time_table)) }
let!(:year) { assign(:year, Date.today.cwyear) }
let!(:time_table_combination) {assign(:time_table_combination, TimeTableCombination.new)}
- it "should render h2 with the time_table comment" do
+ before do
+ allow(view).to receive_messages(current_organisation: referential.organisation)
+ end
+
+ it "should render h2 with the time_table comment" do
render
expect(rendered).to have_selector("h2", :text => Regexp.new(time_table.comment))
end