restme 1.0.2 → 1.1.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 +30 -1
- data/lib/restme/authorize/rules.rb +1 -1
- data/lib/restme/configuration.rb +20 -0
- data/lib/restme/create/rules.rb +1 -1
- data/lib/restme/restme.rb +2 -1
- data/lib/restme/scope/paginate/rules.rb +4 -8
- data/lib/restme/scope/rules.rb +3 -3
- data/lib/restme/shared/restme_current_user_role.rb +2 -2
- data/lib/restme/update/rules.rb +1 -1
- data/lib/restme/version.rb +1 -1
- data/lib/restme.rb +6 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cccc4f918f72719fedda5f137e14cdccf49de3931209a7adf2e9f7d7a974068c
|
4
|
+
data.tar.gz: 0e3a7821d6883250e28bb75b5f6ca50841166f6fff2a180740daf8f59dd323df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef683d119c129847df93624eb7f5480db6ec8bb190fe2aff432c59bb228aecec0a699ce1eb9cd91b23e73888fb1d03abe6c01accf1fe278d5ffab57ef51963f3
|
7
|
+
data.tar.gz: bcfefa780c6c4303e47b85492cd80ca51d404c83c8f68976bb0750a949236c0ccc45cd2278a4741747fa877a45b87e418cee46f6675c212e2a80f6572c6ec0bf
|
data/README.md
CHANGED
@@ -13,7 +13,7 @@ This gem manages your controller's responsibilities for:
|
|
13
13
|
|
14
14
|
GEMFILE:
|
15
15
|
```bash
|
16
|
-
gem 'restme', '~> 1.
|
16
|
+
gem 'restme', '~> 1.1'
|
17
17
|
```
|
18
18
|
|
19
19
|
INSTALL:
|
@@ -28,6 +28,35 @@ gem 'restme'
|
|
28
28
|
- You must create a folder inside app named restfy to define controller rules for authorization, scoping, creation, updating, and field selection (see example below).
|
29
29
|
|
30
30
|
|
31
|
+
<br>
|
32
|
+
|
33
|
+
## Optional Configuration (Available from version 1.1 or higher)
|
34
|
+
|
35
|
+
You can create a `restme.rb` file inside `config/initializers` to customize Restme's behavior:
|
36
|
+
|
37
|
+
- Define the name of the controller variable that holds the current user (default: `current_user`).
|
38
|
+
- Define the name of the user field that identifies the user's role (default: `role`).
|
39
|
+
- Set the default number of items returned per page (default: `12`).
|
40
|
+
- Set the default starting page (default: `1`).
|
41
|
+
- Define the maximum number of items allowed per page (default: `100`).
|
42
|
+
|
43
|
+
Example:
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
# config/initializers/restme.rb
|
47
|
+
|
48
|
+
Restme.configure do |config|
|
49
|
+
config.current_user_variable = :current_user
|
50
|
+
config.user_role_field = :role
|
51
|
+
config.pagination_default_per_page = 12
|
52
|
+
config.pagination_default_page = 1
|
53
|
+
config.pagination_max_per_page = 100
|
54
|
+
end
|
55
|
+
```
|
56
|
+
|
57
|
+
<br>
|
58
|
+
|
59
|
+
|
31
60
|
### Usage examples
|
32
61
|
|
33
62
|
Rails API project example here: https://github.com/everson-ever/restme-example/pull/1
|
@@ -8,7 +8,7 @@ module Restme
|
|
8
8
|
# Defines the rules used to authotize user
|
9
9
|
module Rules
|
10
10
|
include ::Restme::Shared::CurrentModel
|
11
|
-
include ::Restme::Shared::
|
11
|
+
include ::Restme::Shared::RestmeCurrentUserRole
|
12
12
|
|
13
13
|
def user_authorized?
|
14
14
|
return true if restme_current_user.blank? || authorize?
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Restme
|
4
|
+
# Defines the initialization configuration for restme gem
|
5
|
+
module Configuration
|
6
|
+
@current_user_variable = :current_user
|
7
|
+
@user_role_field = :role
|
8
|
+
@pagination_default_per_page = 12
|
9
|
+
@pagination_default_page = 1
|
10
|
+
@pagination_max_per_page = 100
|
11
|
+
|
12
|
+
class << self
|
13
|
+
attr_accessor :current_user_variable,
|
14
|
+
:user_role_field,
|
15
|
+
:pagination_default_per_page,
|
16
|
+
:pagination_default_page,
|
17
|
+
:pagination_max_per_page
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/restme/create/rules.rb
CHANGED
data/lib/restme/restme.rb
CHANGED
@@ -5,16 +5,12 @@ module Restme
|
|
5
5
|
module Paginate
|
6
6
|
# Defines pagination rules
|
7
7
|
module Rules
|
8
|
-
DEFAULT_PER_PAGE = ENV.fetch("PAGINATION_DEFAULT_PER_PAGE", 12)
|
9
|
-
DEFAULT_PAGE = ENV.fetch("PAGINATION_DEFAULT_PAGE", 1)
|
10
|
-
MAX_PER_PAGE = ENV.fetch("PAGINATION_MAX_PER_PAGE", 100)
|
11
|
-
|
12
8
|
def paginable_scope(user_scope)
|
13
9
|
user_scope.limit(per_page).offset(paginate_offset)
|
14
10
|
end
|
15
11
|
|
16
12
|
def page_no
|
17
|
-
params[:page]&.to_i ||
|
13
|
+
params[:page]&.to_i || ::Restme::Configuration.pagination_default_page
|
18
14
|
end
|
19
15
|
|
20
16
|
def pages(user_scope)
|
@@ -26,7 +22,7 @@ module Restme
|
|
26
22
|
end
|
27
23
|
|
28
24
|
def per_page
|
29
|
-
params[:per_page]&.to_i ||
|
25
|
+
params[:per_page]&.to_i || ::Restme::Configuration.pagination_default_per_page
|
30
26
|
end
|
31
27
|
|
32
28
|
def paginate_offset
|
@@ -34,12 +30,12 @@ module Restme
|
|
34
30
|
end
|
35
31
|
|
36
32
|
def per_page_errors
|
37
|
-
return if per_page <=
|
33
|
+
return if per_page <= ::Restme::Configuration.pagination_max_per_page
|
38
34
|
|
39
35
|
restme_scope_errors(
|
40
36
|
{
|
41
37
|
message: "Invalid per page value",
|
42
|
-
body: { per_page_max_value:
|
38
|
+
body: { per_page_max_value: ::Restme::Configuration.pagination_max_per_page }
|
43
39
|
}
|
44
40
|
)
|
45
41
|
|
data/lib/restme/scope/rules.rb
CHANGED
@@ -20,7 +20,7 @@ module Restme
|
|
20
20
|
include ::Restme::Scope::Filter::Rules
|
21
21
|
include ::Restme::Shared::ControllerParams
|
22
22
|
include ::Restme::Shared::CurrentModel
|
23
|
-
include ::Restme::Shared::
|
23
|
+
include ::Restme::Shared::RestmeCurrentUserRole
|
24
24
|
|
25
25
|
attr_reader :filtered_scope, :sorted_scope, :paginated_scope, :fieldated_scope
|
26
26
|
attr_writer :restme_scope_errors, :restme_scope_status
|
@@ -64,8 +64,8 @@ module Restme
|
|
64
64
|
def pagination
|
65
65
|
{
|
66
66
|
page: page_no,
|
67
|
-
pages: pages(
|
68
|
-
total_items: total_items(
|
67
|
+
pages: pages(filtered_scope),
|
68
|
+
total_items: total_items(filtered_scope)
|
69
69
|
}
|
70
70
|
end
|
71
71
|
|
@@ -3,9 +3,9 @@
|
|
3
3
|
module Restme
|
4
4
|
module Shared
|
5
5
|
# Returns the roles associated with the user, if any exist.
|
6
|
-
module
|
6
|
+
module RestmeCurrentUserRole
|
7
7
|
def restme_current_user_role
|
8
|
-
restme_current_user&.try(
|
8
|
+
restme_current_user&.try(::Restme::Configuration.user_role_field)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
data/lib/restme/update/rules.rb
CHANGED
data/lib/restme/version.rb
CHANGED
data/lib/restme.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "restme/version"
|
4
|
+
require_relative "restme/configuration"
|
4
5
|
require_relative "restme/restme"
|
5
6
|
|
7
|
+
# Restme gem
|
6
8
|
module Restme
|
7
9
|
class Error < StandardError; end
|
8
10
|
# Your code goes here...
|
11
|
+
|
12
|
+
def self.configure
|
13
|
+
yield(Configuration)
|
14
|
+
end
|
9
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- everson-ever
|
@@ -28,6 +28,7 @@ files:
|
|
28
28
|
- docker-compose.yml
|
29
29
|
- lib/restme.rb
|
30
30
|
- lib/restme/authorize/rules.rb
|
31
|
+
- lib/restme/configuration.rb
|
31
32
|
- lib/restme/create/rules.rb
|
32
33
|
- lib/restme/restme.rb
|
33
34
|
- lib/restme/scope/field/attachable.rb
|