i_am_i_can 4.3.0 → 4.3.1
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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/i_am_i_can/permission/assignment.rb +4 -4
- data/lib/i_am_i_can/permission/definition.rb +4 -2
- data/lib/i_am_i_can/role/assignment.rb +2 -2
- data/lib/i_am_i_can/role/definition.rb +1 -1
- data/lib/i_am_i_can/role_group/definition.rb +1 -1
- data/lib/i_am_i_can/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 52f2148f7b7693972fbf12b9f573967491caf3ee
         | 
| 4 | 
            +
              data.tar.gz: d1282f21e4d23e9ab713e58fea2b91a23790074a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 32175d334cfa85c56d7ef787ee2f4d5a3d8995df40e26f6311581e9995d0d1844c02cd8c54c884101647ed79f7ff3b7d03ee87763e2ed573f97c631f4f01f9e5
         | 
| 7 | 
            +
              data.tar.gz: eb09a250c1bb986a5ef19034d94e9cd53773a4bb5adc216436dd46f44c975b97a74facbce1fd22c70d59fe5e48bc4d8b7e04c709ed09dd20f3dae796c211ea64
         | 
    
        data/README.md
    CHANGED
    
    | @@ -292,7 +292,7 @@ becomes_a *roles, which_can: [ ], obj: nil, | |
| 292 292 | 
             
            he.becomes_a :admin # => 'Role Assignment Done' or error message
         | 
| 293 293 | 
             
            he.stored_roles     # => [<#UserRole id: 1>]
         | 
| 294 294 | 
             
            # 2. example of giving role instances to `roles` params
         | 
| 295 | 
            -
            he.becomes_a  | 
| 295 | 
            +
            he.becomes_a UserRole.all # => 'Role Assignment Done' or error message
         | 
| 296 296 | 
             
            he.stored_roles     # => [<#UserRole id: 1>, <#UserRole id: 2>]
         | 
| 297 297 | 
             
            # 3. `expires` (subject assocates roles with a `expire_at` scope)
         | 
| 298 298 | 
             
            he.is_a :visitor, expires_in: 1.hour # or `expires_at: 1.hour.after`
         | 
| @@ -410,7 +410,7 @@ can *actions, resource: nil, obj: resource, # you can use `resource` or `obj` | |
| 410 410 | 
             
            role.can :fly # => 'Permission Assignment Done' or error message
         | 
| 411 411 | 
             
            role.permissions # => [<#UserPermission id: ..>]
         | 
| 412 412 | 
             
            # you can also passing permission instances to `actions` params, like:
         | 
| 413 | 
            -
            role.can  | 
| 413 | 
            +
            role.can UserPermission.all
         | 
| 414 414 |  | 
| 415 415 | 
             
            # === Cancel Assignment ===
         | 
| 416 416 | 
             
            # method signature
         | 
| @@ -26,13 +26,13 @@ module IAmICan | |
| 26 26 | 
             
                  end
         | 
| 27 27 |  | 
| 28 28 | 
             
                  def _permissions_assignment(exec = :assign, actions, obj)
         | 
| 29 | 
            -
                    if actions.first.is_a?(i_am_i_can.permission_model)
         | 
| 29 | 
            +
                    if actions.flatten!.first.is_a?(i_am_i_can.permission_model)
         | 
| 30 30 | 
             
                      exec_arg, names = actions, actions.map(&:name)
         | 
| 31 31 | 
             
                    else
         | 
| 32 32 | 
             
                      objs = obj ? Array(obj) : [nil]
         | 
| 33 | 
            -
                      permissions = actions.product(objs).map { |(p, o)| { action: p, **deconstruct_obj(o) } }
         | 
| 34 | 
            -
                      exec_arg = permissions. | 
| 35 | 
            -
                      names = permissions.map { |pms| pms. | 
| 33 | 
            +
                      permissions = actions.product(objs).map { |(p, o)| { action: p, **deconstruct_obj(o) }.values }
         | 
| 34 | 
            +
                      exec_arg = { action: permissions.map(&:first), obj_type: permissions.map { |v| v[1] }, obj_id: permissions.map(&:last) }
         | 
| 35 | 
            +
                      names = permissions.map { |pms| pms.compact.join('_').to_sym }
         | 
| 36 36 | 
             
                    end
         | 
| 37 37 |  | 
| 38 38 | 
             
                    assignment = _stored_permissions_exec(exec, exec_arg)
         | 
| @@ -2,9 +2,11 @@ module IAmICan | |
| 2 2 | 
             
              module Permission
         | 
| 3 3 | 
             
                module Definition
         | 
| 4 4 | 
             
                  def have_permission *actions, obj: nil, remarks: nil
         | 
| 5 | 
            -
                     | 
| 5 | 
            +
                    return unless actions.flatten!.first.class.in?([ Symbol, String ])
         | 
| 6 | 
            +
                    objs = obj ? Array(obj) : [nil]
         | 
| 7 | 
            +
                    permissions = actions.product(objs).map { |(p, o)| { action: p, **deconstruct_obj(o), remarks: remarks } }
         | 
| 6 8 | 
             
                    definition = _create_permissions(permissions)
         | 
| 7 | 
            -
                    ResultOf. | 
| 9 | 
            +
                    ResultOf.permissions definition, i_am_i_can, given: permissions.map { |pms| pms.values.compact.join('_').to_sym }
         | 
| 8 10 | 
             
                  end
         | 
| 9 11 |  | 
| 10 12 | 
             
                  %i[ have_permissions has_permission has_permissions ].each { |aname| alias_method aname, :have_permission }
         | 
| @@ -37,11 +37,11 @@ module IAmICan | |
| 37 37 | 
             
                  def _roles_assignment(action = :assign, roles, save, exp: nil)
         | 
| 38 38 | 
             
                    instances, names = Role.extract(roles, i_am_i_can)
         | 
| 39 39 | 
             
                    if save
         | 
| 40 | 
            -
                      assignment = _stored_roles_exec(action | 
| 40 | 
            +
                      assignment = _stored_roles_exec(action.flatten!, instances, name: names)
         | 
| 41 41 | 
             
                      _set_roles_expire(exp, assignment.map(&:id)) if exp
         | 
| 42 42 | 
             
                    else
         | 
| 43 43 | 
             
                      to_be_assigned_names = (instances.map(&:name).map(&:to_sym) + names).uniq
         | 
| 44 | 
            -
                      assignment = _temporary_roles_exec(action | 
| 44 | 
            +
                      assignment = _temporary_roles_exec(action.flatten!, to_be_assigned_names)
         | 
| 45 45 | 
             
                    end
         | 
| 46 46 |  | 
| 47 47 | 
             
                    ResultOf.role assignment, i_am_i_can, given: [instances, names]
         | 
| @@ -2,7 +2,7 @@ module IAmICan | |
| 2 2 | 
             
              module Role
         | 
| 3 3 | 
             
                module Definition
         | 
| 4 4 | 
             
                  def have_role *roles, which_can: [ ], obj: nil, remarks: nil
         | 
| 5 | 
            -
                    return unless roles.first.class.in?([ Symbol, String ])
         | 
| 5 | 
            +
                    return unless roles.flatten!.first.class.in?([ Symbol, String ])
         | 
| 6 6 | 
             
                    roles.map!(&:to_sym) ; i = i_am_i_can
         | 
| 7 7 | 
             
                    definition = _create_roles(roles.map { |role| { name: role, remarks: remarks } })
         | 
| 8 8 |  | 
| @@ -3,7 +3,7 @@ module IAmICan | |
| 3 3 | 
             
                module Definition
         | 
| 4 4 | 
             
                  def group_roles *members, by_name:, which_can: [ ], obj: nil
         | 
| 5 5 | 
             
                    group = (i = i_am_i_can).role_group_model.where(name: by_name).first_or_create
         | 
| 6 | 
            -
                    instances, names = Role.extract(members | 
| 6 | 
            +
                    instances, names = Role.extract(members.flatten!, i)
         | 
| 7 7 | 
             
                    assignment = group._members_exec(:assign, instances, name: names)
         | 
| 8 8 | 
             
                    ResultOf.members assignment, i, given: [instances, names]
         | 
| 9 9 | 
             
                  end
         | 
    
        data/lib/i_am_i_can/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: i_am_i_can
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4.3. | 
| 4 | 
            +
              version: 4.3.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - zhandao
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018-12- | 
| 11 | 
            +
            date: 2018-12-22 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         |