aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stif/permission_translator.rb
diff options
context:
space:
mode:
authorRobert2017-07-11 05:55:56 +0200
committerRobert2017-07-24 17:54:03 +0200
commit6eb404b967e5cfa328fb4c4c435c18771f6ea417 (patch)
tree24694bae452a227c5bbf95e1478e966afc6a303b /lib/stif/permission_translator.rb
parent45226369543a8d7cb1f2152c07613c2f23d70813 (diff)
downloadchouette-core-6eb404b967e5cfa328fb4c4c435c18771f6ea417.tar.bz2
Refs: #4019@1h; Adds spec for Permission Translation and implements it in lib/stif/permission_translator
Diffstat (limited to 'lib/stif/permission_translator.rb')
-rw-r--r--lib/stif/permission_translator.rb40
1 files changed, 39 insertions, 1 deletions
diff --git a/lib/stif/permission_translator.rb b/lib/stif/permission_translator.rb
index 7032f910a..afe69756e 100644
--- a/lib/stif/permission_translator.rb
+++ b/lib/stif/permission_translator.rb
@@ -1,7 +1,45 @@
module Stif
module PermissionTranslator extend self
+
def translate(sso_extra_permissions)
- %w{sessions:create}
+ sso_extra_permissions
+ .sort
+ .flat_map(&method(:extra_permission_translation))
+ .uniq
+ end
+
+ private
+
+ def all_destructive_permissions
+ destructive_permissions_for( all_resources )
+ end
+
+ def all_resources
+ %w[
+ access_points
+ connection_links calendars
+ footnotes
+ journey_patterns
+ referentials routes routing_constraint_zones
+ time_tables
+ vehicle_journeys
+ ]
+ end
+
+ def destructive_permissions_for(models)
+ @__destructive_permissions_for__ ||=
+ models.product( %w{create destroy update} ).map{ |model_action| model_action.join('.') }
+ end
+
+ def extra_permission_translation extra_permission
+ translation_table.fetch(extra_permission, [])
+ end
+
+ def translation_table
+ {
+ "boiv:read-offer" => %w{sessions:create},
+ "boiv:edit-offer" => all_destructive_permissions + %w{sessions:create},
+ }
end
end
end