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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20a6deb0be1cd7ca4a0835d7fc1211057a944237a4370ce576f3a6e8bc067738
4
- data.tar.gz: 60fb44729f7721fc885224b2df4f7dcd3ec7ac07efaeacbee0ccd42dcece913c
3
+ metadata.gz: cccc4f918f72719fedda5f137e14cdccf49de3931209a7adf2e9f7d7a974068c
4
+ data.tar.gz: 0e3a7821d6883250e28bb75b5f6ca50841166f6fff2a180740daf8f59dd323df
5
5
  SHA512:
6
- metadata.gz: 633737ce0a993e839281b86d9a2d686f098a585d43b608aabb1c770b6b4a8f5c75c6faa0480e75c3c5a7d8089c01666aafd7c1d299415c4f0f391f8958ef209a
7
- data.tar.gz: 9d859f78801920fca33bd80ab075e6f00e0a7d54e098dd5d2f66defa19481d66c23650f5a21b703b6640ed1e09fe2450c549168b63d0f41e9504ca38669038ea
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.0', '>= 1.0.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::UserRole
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
@@ -10,7 +10,7 @@ module Restme
10
10
  module Rules
11
11
  include ::Restme::Shared::ControllerParams
12
12
  include ::Restme::Shared::CurrentModel
13
- include ::Restme::Shared::UserRole
13
+ include ::Restme::Shared::RestmeCurrentUserRole
14
14
 
15
15
  attr_reader :create_temp_record
16
16
 
data/lib/restme/restme.rb CHANGED
@@ -28,7 +28,8 @@ module Restme
28
28
  end
29
29
 
30
30
  def use_current_user
31
- @restme_current_user = try(:current_user)
31
+ @restme_current_user =
32
+ try(::Restme::Configuration.current_user_variable)
32
33
  end
33
34
  end
34
35
  end
@@ -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 || DEFAULT_PAGE
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 || DEFAULT_PER_PAGE
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 <= MAX_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: MAX_PER_PAGE }
38
+ body: { per_page_max_value: ::Restme::Configuration.pagination_max_per_page }
43
39
  }
44
40
  )
45
41
 
@@ -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::UserRole
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(model_scope),
68
- total_items: total_items(model_scope)
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 UserRole
6
+ module RestmeCurrentUserRole
7
7
  def restme_current_user_role
8
- restme_current_user&.try(:role)
8
+ restme_current_user&.try(::Restme::Configuration.user_role_field)
9
9
  end
10
10
  end
11
11
  end
@@ -10,7 +10,7 @@ module Restme
10
10
  module Rules
11
11
  include ::Restme::Shared::ControllerParams
12
12
  include ::Restme::Shared::CurrentModel
13
- include ::Restme::Shared::UserRole
13
+ include ::Restme::Shared::RestmeCurrentUserRole
14
14
 
15
15
  attr_reader :update_temp_record
16
16
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Restme
4
- VERSION = "1.0.2"
4
+ VERSION = "1.1.1"
5
5
  end
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.0.2
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