guachiman 0.0.8 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/guachiman.gemspec +2 -0
- data/lib/guachiman.rb +4 -1
- data/lib/guachiman/params.rb +9 -1
- data/lib/guachiman/permissions.rb +1 -3
- data/lib/guachiman/rails/permissible.rb +3 -3
- data/lib/guachiman/version.rb +1 -1
- data/test/generators/install_generator_test.rb +3 -1
- metadata +59 -16
- checksums.yaml +0 -7
- data/lib/guachiman/strong_parameters.rb +0 -33
    
        data/guachiman.gemspec
    CHANGED
    
    | @@ -18,6 +18,8 @@ Gem::Specification.new do |spec| | |
| 18 18 | 
             
              spec.require_paths = ['lib']
         | 
| 19 19 |  | 
| 20 20 | 
             
              spec.add_dependency 'railties', '>= 3.2'
         | 
| 21 | 
            +
              spec.add_dependency 'activerecord', '>= 3.2'
         | 
| 22 | 
            +
              spec.add_dependency 'strong_parameters', '>= 0.2.1'
         | 
| 21 23 | 
             
              spec.add_development_dependency 'minitest'
         | 
| 22 24 | 
             
              spec.add_development_dependency 'minitest-focus'
         | 
| 23 25 | 
             
              spec.add_development_dependency 'bundler', '~> 1.3'
         | 
    
        data/lib/guachiman.rb
    CHANGED
    
    | @@ -1,9 +1,12 @@ | |
| 1 1 | 
             
            require 'guachiman/version'
         | 
| 2 2 | 
             
            require 'guachiman/permissions'
         | 
| 3 | 
            -
            require 'guachiman/strong_parameters'
         | 
| 4 3 | 
             
            require 'guachiman/params'
         | 
| 4 | 
            +
            require 'active_record'
         | 
| 5 | 
            +
            require 'strong_parameters'
         | 
| 5 6 |  | 
| 6 7 | 
             
            if defined? Rails
         | 
| 7 8 | 
             
              require 'guachiman/rails/railtie'
         | 
| 8 9 | 
             
              require 'guachiman/rails/permissible'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              ActiveRecord::Base.send :include, ActiveModel::ForbiddenAttributesProtection
         | 
| 9 12 | 
             
            end
         | 
    
        data/lib/guachiman/params.rb
    CHANGED
    
    | @@ -22,17 +22,25 @@ module Guachiman | |
| 22 22 | 
             
                  end
         | 
| 23 23 | 
             
                end
         | 
| 24 24 |  | 
| 25 | 
            +
                def allowed_params
         | 
| 26 | 
            +
                  read_allowed_params & write_allowed_params
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 25 29 | 
             
                def allow_param resources, attributes
         | 
| 26 30 | 
             
                  allow_read_param  resources, attributes
         | 
| 27 31 | 
             
                  allow_write_param resources, attributes
         | 
| 28 32 | 
             
                end
         | 
| 29 33 |  | 
| 34 | 
            +
                def allow_param? resource, attribute
         | 
| 35 | 
            +
                  allow_write_param?(resource, attribute) && allow_read_param?(resource, attribute)
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
             | 
| 30 38 | 
             
                def permit_params! params
         | 
| 31 39 | 
             
                  if @allow_all
         | 
| 32 40 | 
             
                    params.permit!
         | 
| 33 41 | 
             
                  elsif write_allowed_params
         | 
| 34 42 | 
             
                    write_allowed_params.each do |resource, attributes|
         | 
| 35 | 
            -
                      params[resource] = params[resource].permit(*attributes) if params[resource] | 
| 43 | 
            +
                      params[resource] = params[resource].permit(*attributes) if params[resource]
         | 
| 36 44 | 
             
                    end
         | 
| 37 45 | 
             
                  end
         | 
| 38 46 | 
             
                end
         | 
| @@ -7,9 +7,7 @@ module Guachiman | |
| 7 7 | 
             
                  Array(controllers).each do |controller|
         | 
| 8 8 | 
             
                    Array(actions).each do |action|
         | 
| 9 9 | 
             
                      allowed_actions[controller] ||= {}
         | 
| 10 | 
            -
                      allowed_actions[controller].merge!( | 
| 11 | 
            -
                        action => (block || true)
         | 
| 12 | 
            -
                      })
         | 
| 10 | 
            +
                      allowed_actions[controller].merge! action => (block || true)
         | 
| 13 11 | 
             
                    end
         | 
| 14 12 | 
             
                  end
         | 
| 15 13 | 
             
                end
         | 
| @@ -20,7 +20,7 @@ module Guachiman | |
| 20 20 |  | 
| 21 21 | 
             
                def authorize
         | 
| 22 22 | 
             
                  if current_permission.allow? params[:controller], params[:action], current_resource
         | 
| 23 | 
            -
                    current_permission.permit_params! | 
| 23 | 
            +
                    current_permission.permit_params! params
         | 
| 24 24 | 
             
                  else
         | 
| 25 25 | 
             
                    not_authorized
         | 
| 26 26 | 
             
                  end
         | 
| @@ -28,9 +28,9 @@ module Guachiman | |
| 28 28 |  | 
| 29 29 | 
             
                def not_authorized
         | 
| 30 30 | 
             
                  if current_user
         | 
| 31 | 
            -
                    redirect_to  | 
| 31 | 
            +
                    redirect_to root_path, alert: t(:not_authorized)
         | 
| 32 32 | 
             
                  else
         | 
| 33 | 
            -
                    redirect_to  | 
| 33 | 
            +
                    redirect_to login_path, alert: t(:please_login)
         | 
| 34 34 | 
             
                  end
         | 
| 35 35 | 
             
                end
         | 
| 36 36 | 
             
              end
         | 
    
        data/lib/guachiman/version.rb
    CHANGED
    
    
| @@ -4,13 +4,15 @@ require 'generators/guachiman/install/install_generator' | |
| 4 4 |  | 
| 5 5 | 
             
            class InstallGeneratorTest < Rails::Generators::TestCase
         | 
| 6 6 | 
             
              DESTINATION = File.expand_path File.join(File.dirname(__FILE__), '..', '..', 'tmp')
         | 
| 7 | 
            +
              FileUtils.mkdir_p DESTINATION unless Dir.exists? DESTINATION
         | 
| 8 | 
            +
             | 
| 7 9 | 
             
              destination DESTINATION
         | 
| 8 10 |  | 
| 9 11 | 
             
              tests Guachiman::Generators::InstallGenerator
         | 
| 10 12 | 
             
              setup :prepare_destination
         | 
| 11 13 |  | 
| 12 14 | 
             
              def prepare_destination
         | 
| 13 | 
            -
                FileUtils.rm_r "#{DESTINATION}/app"
         | 
| 15 | 
            +
                FileUtils.rm_r    "#{DESTINATION}/app" if Dir.exists? "#{DESTINATION}/app"
         | 
| 14 16 | 
             
                FileUtils.mkdir_p "#{DESTINATION}/app"
         | 
| 15 17 | 
             
                FileUtils.mkdir_p "#{DESTINATION}/app/models"
         | 
| 16 18 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,8 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: guachiman
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0 | 
| 4 | 
            +
              version: 0.1.0
         | 
| 5 | 
            +
              prerelease: 
         | 
| 5 6 | 
             
            platform: ruby
         | 
| 6 7 | 
             
            authors:
         | 
| 7 8 | 
             
            - Francesco Rodriguez
         | 
| @@ -9,53 +10,92 @@ authors: | |
| 9 10 | 
             
            autorequire: 
         | 
| 10 11 | 
             
            bindir: bin
         | 
| 11 12 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2013-04 | 
| 13 | 
            +
            date: 2013-06-04 00:00:00.000000000 Z
         | 
| 13 14 | 
             
            dependencies:
         | 
| 14 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 16 | 
             
              name: railties
         | 
| 16 17 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 18 | 
            +
                none: false
         | 
| 17 19 | 
             
                requirements:
         | 
| 18 | 
            -
                - - '>='
         | 
| 20 | 
            +
                - - ! '>='
         | 
| 19 21 | 
             
                  - !ruby/object:Gem::Version
         | 
| 20 22 | 
             
                    version: '3.2'
         | 
| 21 23 | 
             
              type: :runtime
         | 
| 22 24 | 
             
              prerelease: false
         | 
| 23 25 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 26 | 
            +
                none: false
         | 
| 24 27 | 
             
                requirements:
         | 
| 25 | 
            -
                - - '>='
         | 
| 28 | 
            +
                - - ! '>='
         | 
| 26 29 | 
             
                  - !ruby/object:Gem::Version
         | 
| 27 30 | 
             
                    version: '3.2'
         | 
| 31 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 32 | 
            +
              name: activerecord
         | 
| 33 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 34 | 
            +
                none: false
         | 
| 35 | 
            +
                requirements:
         | 
| 36 | 
            +
                - - ! '>='
         | 
| 37 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 38 | 
            +
                    version: '3.2'
         | 
| 39 | 
            +
              type: :runtime
         | 
| 40 | 
            +
              prerelease: false
         | 
| 41 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 42 | 
            +
                none: false
         | 
| 43 | 
            +
                requirements:
         | 
| 44 | 
            +
                - - ! '>='
         | 
| 45 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 46 | 
            +
                    version: '3.2'
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: strong_parameters
         | 
| 49 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 50 | 
            +
                none: false
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ! '>='
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: 0.2.1
         | 
| 55 | 
            +
              type: :runtime
         | 
| 56 | 
            +
              prerelease: false
         | 
| 57 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                none: false
         | 
| 59 | 
            +
                requirements:
         | 
| 60 | 
            +
                - - ! '>='
         | 
| 61 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 62 | 
            +
                    version: 0.2.1
         | 
| 28 63 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 29 64 | 
             
              name: minitest
         | 
| 30 65 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 66 | 
            +
                none: false
         | 
| 31 67 | 
             
                requirements:
         | 
| 32 | 
            -
                - - '>='
         | 
| 68 | 
            +
                - - ! '>='
         | 
| 33 69 | 
             
                  - !ruby/object:Gem::Version
         | 
| 34 70 | 
             
                    version: '0'
         | 
| 35 71 | 
             
              type: :development
         | 
| 36 72 | 
             
              prerelease: false
         | 
| 37 73 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 74 | 
            +
                none: false
         | 
| 38 75 | 
             
                requirements:
         | 
| 39 | 
            -
                - - '>='
         | 
| 76 | 
            +
                - - ! '>='
         | 
| 40 77 | 
             
                  - !ruby/object:Gem::Version
         | 
| 41 78 | 
             
                    version: '0'
         | 
| 42 79 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 43 80 | 
             
              name: minitest-focus
         | 
| 44 81 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 82 | 
            +
                none: false
         | 
| 45 83 | 
             
                requirements:
         | 
| 46 | 
            -
                - - '>='
         | 
| 84 | 
            +
                - - ! '>='
         | 
| 47 85 | 
             
                  - !ruby/object:Gem::Version
         | 
| 48 86 | 
             
                    version: '0'
         | 
| 49 87 | 
             
              type: :development
         | 
| 50 88 | 
             
              prerelease: false
         | 
| 51 89 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 90 | 
            +
                none: false
         | 
| 52 91 | 
             
                requirements:
         | 
| 53 | 
            -
                - - '>='
         | 
| 92 | 
            +
                - - ! '>='
         | 
| 54 93 | 
             
                  - !ruby/object:Gem::Version
         | 
| 55 94 | 
             
                    version: '0'
         | 
| 56 95 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 57 96 | 
             
              name: bundler
         | 
| 58 97 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 98 | 
            +
                none: false
         | 
| 59 99 | 
             
                requirements:
         | 
| 60 100 | 
             
                - - ~>
         | 
| 61 101 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -63,6 +103,7 @@ dependencies: | |
| 63 103 | 
             
              type: :development
         | 
| 64 104 | 
             
              prerelease: false
         | 
| 65 105 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 106 | 
            +
                none: false
         | 
| 66 107 | 
             
                requirements:
         | 
| 67 108 | 
             
                - - ~>
         | 
| 68 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -70,15 +111,17 @@ dependencies: | |
| 70 111 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 71 112 | 
             
              name: rake
         | 
| 72 113 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 | 
            +
                none: false
         | 
| 73 115 | 
             
                requirements:
         | 
| 74 | 
            -
                - - '>='
         | 
| 116 | 
            +
                - - ! '>='
         | 
| 75 117 | 
             
                  - !ruby/object:Gem::Version
         | 
| 76 118 | 
             
                    version: '0'
         | 
| 77 119 | 
             
              type: :development
         | 
| 78 120 | 
             
              prerelease: false
         | 
| 79 121 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 122 | 
            +
                none: false
         | 
| 80 123 | 
             
                requirements:
         | 
| 81 | 
            -
                - - '>='
         | 
| 124 | 
            +
                - - ! '>='
         | 
| 82 125 | 
             
                  - !ruby/object:Gem::Version
         | 
| 83 126 | 
             
                    version: '0'
         | 
| 84 127 | 
             
            description: Basic authorization library inspired in Ryan Bates code
         | 
| @@ -102,33 +145,33 @@ files: | |
| 102 145 | 
             
            - lib/guachiman/permissions.rb
         | 
| 103 146 | 
             
            - lib/guachiman/rails/permissible.rb
         | 
| 104 147 | 
             
            - lib/guachiman/rails/railtie.rb
         | 
| 105 | 
            -
            - lib/guachiman/strong_parameters.rb
         | 
| 106 148 | 
             
            - lib/guachiman/version.rb
         | 
| 107 149 | 
             
            - test/generators/install_generator_test.rb
         | 
| 108 150 | 
             
            - test/test_helper.rb
         | 
| 109 151 | 
             
            homepage: https://github.com/epiclabs/guachiman
         | 
| 110 152 | 
             
            licenses:
         | 
| 111 153 | 
             
            - MIT
         | 
| 112 | 
            -
            metadata: {}
         | 
| 113 154 | 
             
            post_install_message: 
         | 
| 114 155 | 
             
            rdoc_options: []
         | 
| 115 156 | 
             
            require_paths:
         | 
| 116 157 | 
             
            - lib
         | 
| 117 158 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 159 | 
            +
              none: false
         | 
| 118 160 | 
             
              requirements:
         | 
| 119 | 
            -
              - - '>='
         | 
| 161 | 
            +
              - - ! '>='
         | 
| 120 162 | 
             
                - !ruby/object:Gem::Version
         | 
| 121 163 | 
             
                  version: '0'
         | 
| 122 164 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 165 | 
            +
              none: false
         | 
| 123 166 | 
             
              requirements:
         | 
| 124 | 
            -
              - - '>='
         | 
| 167 | 
            +
              - - ! '>='
         | 
| 125 168 | 
             
                - !ruby/object:Gem::Version
         | 
| 126 169 | 
             
                  version: '0'
         | 
| 127 170 | 
             
            requirements: []
         | 
| 128 171 | 
             
            rubyforge_project: 
         | 
| 129 | 
            -
            rubygems_version:  | 
| 172 | 
            +
            rubygems_version: 1.8.23
         | 
| 130 173 | 
             
            signing_key: 
         | 
| 131 | 
            -
            specification_version:  | 
| 174 | 
            +
            specification_version: 3
         | 
| 132 175 | 
             
            summary: Basic authorization library inspired in Ryan Bates code
         | 
| 133 176 | 
             
            test_files:
         | 
| 134 177 | 
             
            - test/generators/install_generator_test.rb
         | 
    
        checksums.yaml
    DELETED
    
    | @@ -1,7 +0,0 @@ | |
| 1 | 
            -
            ---
         | 
| 2 | 
            -
            SHA1:
         | 
| 3 | 
            -
              metadata.gz: c8008cb477a135e7d4e7e9f1b242bd670a0a6383
         | 
| 4 | 
            -
              data.tar.gz: 8fa602dc839dcd31b5a3b5ad72f9f046fe40a3a4
         | 
| 5 | 
            -
            SHA512:
         | 
| 6 | 
            -
              metadata.gz: e0cc34bed4b5dc76ed0e1a130ef593e08bd9939caa41118f00796ffbaf0b727e37474b238f89a7005f816d7dfc966f3e6a2349c0b37b3d4a81dea2e840e7d9fb
         | 
| 7 | 
            -
              data.tar.gz: 0410d8d1e00ee44d308df078dd5059dffab944f9473d1490f97053ba10df26d88d4acdd4c4a98b6aad76fb1b7baa447613e55b2a0e0a53c0f3b46999efc60261
         | 
| @@ -1,33 +0,0 @@ | |
| 1 | 
            -
            module Guachiman
         | 
| 2 | 
            -
              module StrongParameters
         | 
| 3 | 
            -
                attr_reader :allowed_params
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                def allow_param resources, attributes
         | 
| 6 | 
            -
                  @allowed_params ||= {}
         | 
| 7 | 
            -
                  Array(resources).each do |resource|
         | 
| 8 | 
            -
                    allowed_params[resource] ||= []
         | 
| 9 | 
            -
                    allowed_params[resource] += Array(attributes)
         | 
| 10 | 
            -
                  end
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                def allow_param?(resource, attribute)
         | 
| 14 | 
            -
                  if @allow_all
         | 
| 15 | 
            -
                    true
         | 
| 16 | 
            -
                  elsif @allowed_params && @allowed_params[resource]
         | 
| 17 | 
            -
                    @allowed_params[resource].include? attribute
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                def permit_params! params
         | 
| 22 | 
            -
                  if @allow_all
         | 
| 23 | 
            -
                    params.permit!
         | 
| 24 | 
            -
                  elsif allowed_params
         | 
| 25 | 
            -
                    allowed_params.each do |resource, attributes|
         | 
| 26 | 
            -
                      if params[resource].respond_to? :permit
         | 
| 27 | 
            -
                        params[resource] = params[resource].permit(*attributes)
         | 
| 28 | 
            -
                      end
         | 
| 29 | 
            -
                    end
         | 
| 30 | 
            -
                  end
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
            end
         |