diff options
| author | Robert | 2017-07-11 05:55:56 +0200 | 
|---|---|---|
| committer | Robert | 2017-07-24 17:54:03 +0200 | 
| commit | 6eb404b967e5cfa328fb4c4c435c18771f6ea417 (patch) | |
| tree | 24694bae452a227c5bbf95e1478e966afc6a303b /lib | |
| parent | 45226369543a8d7cb1f2152c07613c2f23d70813 (diff) | |
| download | chouette-core-6eb404b967e5cfa328fb4c4c435c18771f6ea417.tar.bz2 | |
Refs: #4019@1h; Adds spec for Permission Translation and implements it in lib/stif/permission_translator
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/stif/permission_translator.rb | 40 | 
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 | 
