i_am_i_can 4.3.0 → 4.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|