permisi 0.1.3 → 0.1.4
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/CHANGELOG.md +7 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +1 -1
- data/lib/generators/permisi/templates/migration.rb +2 -0
- data/lib/permisi/backend/active_record/actor.rb +18 -1
- data/lib/permisi/config.rb +10 -0
- data/lib/permisi/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4b56c15224ab819fd173b51ce3cd341836a9edcbf6d2a0c0496813826c168f4c
|
|
4
|
+
data.tar.gz: 1eb2ef335b4fa1a2790573ca118c9178cff6d96ef6d3334cc165650c216bbc97
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9e099b2453555f7da80bfef2c4948a80523625271ba9666d2c053e455b0c42dc90d53f7f4a7233e1572696d58c7f1553dbdcaf38f9a4d6e351432a98de21d3ae
|
|
7
|
+
data.tar.gz: ea49a2fa692188d5864da2322a37c01de5856fb3d5bb4529966328f45e2ccc0114119c07289fa12c68afffc7f9e2030db99a10815480f180f3ea17fccd082218
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
# 0.1.4
|
|
4
|
+
|
|
5
|
+
[_View the docs._](https://github.com/ukazap/permisi/blob/v0.1.4/README.md)
|
|
6
|
+
|
|
7
|
+
- Add actor-role uniqueness constraint (previously it was possible to append the same role to an actor many times), if you are upgrading from previous versions, please create the following migration: `add_index :permisi_actor_roles, [:actor_id, :role_id], unique: true`
|
|
8
|
+
- Show warning when calling "roles.delete" because it won't invalidate the cache
|
|
9
|
+
|
|
3
10
|
# 0.1.3
|
|
4
11
|
|
|
5
12
|
[_View the docs._](https://github.com/ukazap/permisi/blob/v0.1.3/README.md)
|
data/Gemfile
CHANGED
|
@@ -6,9 +6,9 @@ source "https://rubygems.org"
|
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
8
|
gem "byebug", "~> 11.1"
|
|
9
|
+
gem "codecov", "~> 0.4.3"
|
|
9
10
|
gem "rake", "~> 13.0"
|
|
10
11
|
gem "rspec", "~> 3.0"
|
|
11
12
|
gem "rubocop", "~> 1.9"
|
|
12
13
|
gem "simplecov", "~> 0.21.2"
|
|
13
14
|
gem "sqlite3", "~> 1.4"
|
|
14
|
-
gem "codecov", "~> 0.4.3"
|
data/Gemfile.lock
CHANGED
|
@@ -6,10 +6,14 @@ module Permisi
|
|
|
6
6
|
class Actor < ::ActiveRecord::Base
|
|
7
7
|
belongs_to :aka, polymorphic: true, touch: true
|
|
8
8
|
has_many :actor_roles, dependent: :destroy
|
|
9
|
-
has_many :roles, through: :actor_roles
|
|
9
|
+
has_many :roles, -> { distinct }, through: :actor_roles
|
|
10
10
|
|
|
11
11
|
after_commit :reset_permissions
|
|
12
12
|
|
|
13
|
+
def roles
|
|
14
|
+
super.extend(ActorRolesCollectionProxy)
|
|
15
|
+
end
|
|
16
|
+
|
|
13
17
|
def role?(role_slug)
|
|
14
18
|
roles.load.any? { |role| role.slug == role_slug.to_s }
|
|
15
19
|
end
|
|
@@ -38,6 +42,19 @@ module Permisi
|
|
|
38
42
|
|
|
39
43
|
alias may? may_i?
|
|
40
44
|
alias has_role? role?
|
|
45
|
+
|
|
46
|
+
module ActorRolesCollectionProxy
|
|
47
|
+
def <<(new_role)
|
|
48
|
+
super
|
|
49
|
+
rescue ::ActiveRecord::RecordNotUnique
|
|
50
|
+
self
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def delete(*records)
|
|
54
|
+
warn "WARNING: `#delete(*records)` won't invalidate the cache, use `#destroy(*records)` instead."
|
|
55
|
+
super
|
|
56
|
+
end
|
|
57
|
+
end
|
|
41
58
|
end
|
|
42
59
|
end
|
|
43
60
|
end
|
data/lib/permisi/config.rb
CHANGED
|
@@ -15,6 +15,16 @@ module Permisi
|
|
|
15
15
|
|
|
16
16
|
def backend=(chosen_backend)
|
|
17
17
|
chosen_backend = "::Permisi::Backend::#{chosen_backend.to_s.classify}".constantize if chosen_backend.is_a? Symbol
|
|
18
|
+
|
|
19
|
+
if chosen_backend == Backend::ActiveRecord && VERSION == "0.1.4"
|
|
20
|
+
warn <<~MESSAGE
|
|
21
|
+
|
|
22
|
+
WARNING: If you are upgrading from Permisi >v0.1.4, please create the following migration:
|
|
23
|
+
`add_index :permisi_actor_roles, [:actor_id, :role_id], unique: true`
|
|
24
|
+
|
|
25
|
+
MESSAGE
|
|
26
|
+
end
|
|
27
|
+
|
|
18
28
|
@backend = chosen_backend
|
|
19
29
|
rescue NameError
|
|
20
30
|
raise Backend::InvalidBackend
|
data/lib/permisi/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: permisi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ukaza Perdana
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-02-
|
|
11
|
+
date: 2021-02-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activemodel
|