restricted_access 0.0.2 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57423d579e160bde70cb930f1afec19fd06254d0
4
- data.tar.gz: af663d4ad4acf2af0484898788688e426bc1b76e
3
+ metadata.gz: a09963a023398671ce46a2bb029db73ec5d1ad41
4
+ data.tar.gz: fecea55f47f5b79637cbd1a88d178bb46328fb29
5
5
  SHA512:
6
- metadata.gz: 3f05f7df578367cfeed90cff6f96be561a2547a6ab43ff283e7624239b9bdbb7c0b3697e2a1cfa854c6aa33b05b1ecf079bf00de24215671d000a6bef8e62172
7
- data.tar.gz: 1d8e02118ae4acf5f2f431f431fbadc402e852547982d739777ab823eabc012b77cfa86deeb3cfb94d5754b42a62b57432ea16c90ba495e24c304f0be65c192f
6
+ metadata.gz: 2a0997f4e9dbe5c21eabe6bb8c9e70163721fab8e5b0d4ddce723d4b0bad94dc0ae0ec2b692993de4cdb021337d894fd54740d31ad140024df9ec1e05073201e
7
+ data.tar.gz: c775fc0a5e586b611b9a93fe987ef0bdde98da3bf7a0a5c2ec250192ac48f8b27130df445d84f0b432f7f98455485acf79cb35e0f88a11a955de94fd1c9d6856
data/README-v0.0.2.md ADDED
@@ -0,0 +1,178 @@
1
+ # RestrictedAccess
2
+
3
+ An access rights management tool.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'restricted_access'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install restricted_access
18
+
19
+ ## Usage
20
+
21
+ The gem is currently working only with Mongoid.
22
+
23
+ It depends on [Devise](https://github.com/plataformatec/devise) & [mongoid-enum](https://github.com/thetron/mongoid-enum).
24
+
25
+
26
+ Generate this initializer with
27
+ ```
28
+ rails g restricted_access:install admin --levels=mini normal super --controller_scope=backoffice
29
+ ```
30
+
31
+ model_name is the name of the model concerned with the access restriction.
32
+
33
+ Give the available levels of access to the --levels options
34
+
35
+ Give your controllers scope name to the --controller_scope options (default: nil)
36
+
37
+ This will generate the restricted_access.rb initializer
38
+
39
+ ```ruby
40
+ RestrictedAccess.configure do |config|
41
+
42
+ config.accesses = [ { level: :mini,
43
+ label: 'Some description for this access level',
44
+ power: 0 },
45
+ { level: :normal,
46
+ label: 'Some description for this access level',
47
+ power: 1 },
48
+ { level: :super,
49
+ label: 'Some description for this access level',
50
+ power: 2}
51
+ ]
52
+ config.resource = :admin
53
+ config.controller_scope = :backoffice
54
+
55
+ end
56
+ ```
57
+
58
+ You can customize the accesses with a label (optional) and define different power (the higher has more rights).
59
+
60
+ The `config.resource` and `config.controller_scope` are useful only in Rails, defining some methods in controllers and helpers (see below).
61
+
62
+ ### RestrictedAccess::Model
63
+
64
+ Include the RestrictedAccess::Model module in your related model
65
+
66
+ ```ruby
67
+ class Admin
68
+ include Mongoid::Document
69
+ include RestrictedAccess::Model
70
+
71
+ end
72
+ ```
73
+
74
+ The module enhances the model with some methods and attributes.
75
+
76
+ Every model has now a :level attribute (Symbol type), by default the first defined in your initializer. You can set it like any attributes.
77
+
78
+ ```ruby
79
+ admin = Admin.first
80
+ admin.update(level: :super)
81
+
82
+ admin2 = Admin.last
83
+ admin.update(level: :mini)
84
+ ```
85
+
86
+ The level defines its access rights.
87
+
88
+ Each instance has a `:access` method, returning a `RestrictedAccess::Access` instance.
89
+
90
+ ```ruby
91
+ admin.access
92
+ => #<RestrictedAccess::Access:0x007fc255d36098 @level=:super, @label="", @power=2>
93
+
94
+ ```
95
+
96
+ The `RestrictedAccess::Access` class include comparable, so you can do such things :
97
+
98
+ ```ruby
99
+ admin.access > admin2.access
100
+ => true
101
+
102
+ RestrictedAccess.accesses.max
103
+ => #<RestrictedAccess::Access:0x007fc255d36098 @level=:super, @label="", @power=2>
104
+
105
+ ```
106
+
107
+ Thanks to the [mongoid-enum](https://github.com/thetron/mongoid-enum) gem, some methods to check rights.
108
+
109
+ ```ruby
110
+ admin.mini?
111
+ => false
112
+
113
+ admin.super?
114
+ => true
115
+
116
+ Admin::LEVEL
117
+ => [:mini, :normal, :super]
118
+
119
+ # scopes
120
+ Admin.mini # => Mongoid::Criteria
121
+ Admin.super # => Mongoid::Criteria
122
+ ```
123
+
124
+ ### RestrictedAccess::Controller
125
+
126
+ If you provided a `config.resource` and `config.controller_scope` in the initializer you can include the `RestrictedAccess::Controller` in your controller.
127
+
128
+ ```ruby
129
+ class Backoffice::BaseController < ApplicationController
130
+ include RestrictedAccess::Controller
131
+ end
132
+ ```
133
+
134
+ Every inherited controller has now a few more methods:
135
+
136
+ * `:restrict_access`, which redirect to the `#{controller_scope}_root_path`. Set controller_scope to nil if you just want to redirect to root_path.
137
+
138
+ * `:prevent_#{level}_access`, which calls `:restrict_access` if the `:current_#{resource_name}` doesn't have enough access right. If you use Devise, you already have a `:current_#{resource_name}` method, if you don't use Devise, just implement it.
139
+
140
+ ```ruby
141
+ class Backoffice::AdminsController < Backoffice::BaseController
142
+ before_action :prevent_normal_access, except: [:index]
143
+ # mini & normal admins will only be able to access index view
144
+ end
145
+ ```
146
+
147
+ ### RestrictedAccess::Helper
148
+
149
+ ```ruby
150
+ module Backoffice::AdminHelper
151
+ include RestrictedAccess::Helper
152
+ end
153
+ ```
154
+
155
+
156
+ If you provided a `config.resource` option, you can include the `RestrictedAccess::Helper` in one of your helpers.
157
+
158
+ It provides a `:available_for` method in the views, allowing you to hide some part of the view.
159
+
160
+ ```html
161
+ <!-- this div won't be seen be admins lower than super -->
162
+ <%= available_for :super do %>
163
+ <div>
164
+ I have something to hide here.
165
+ </div>
166
+ <%- end %>
167
+ ```
168
+
169
+
170
+
171
+
172
+ ## Contributing
173
+
174
+ 1. Fork it ( http://github.com/<my-github-username>/restricted_access/fork )
175
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
176
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
177
+ 4. Push to the branch (`git push origin my-new-feature`)
178
+ 5. Create new Pull Request
data/README.md CHANGED
@@ -6,7 +6,7 @@ An access rights management tool.
6
6
 
7
7
  Add this line to your application's Gemfile:
8
8
 
9
- gem 'restricted_access', git: 'https://github.com/4nt1/restricted_access'
9
+ gem 'restricted_access'
10
10
 
11
11
  And then execute:
12
12
 
@@ -16,64 +16,63 @@ Or install it yourself as:
16
16
 
17
17
  $ gem install restricted_access
18
18
 
19
- ## Usage
19
+ ## Previous version of the README (for version 0.0.2)
20
20
 
21
- The gem is currently working only with Mongoid.
21
+ can be found [here](https://github.com/4nt1/restricted_access/blob/develop/README-v0.0.2.md)
22
22
 
23
- It depends on [Devise](https://github.com/plataformatec/devise) & [mongoid-enum](https://github.com/thetron/mongoid-enum).
23
+ ## Usage
24
24
 
25
+ Generate the config file with the generator, pass the resources as an argument.
25
26
 
26
- Generate this initializer with
27
27
  ```
28
- rails g restricted_access:install admin --levels=mini normal super --controller_scope=backoffice
28
+ rails g restricted_access:install -r user admin
29
29
  ```
30
30
 
31
- model_name is the name of the model concerned with the access restriction.
31
+ ## Active Record
32
32
 
33
- Give the available levels of access to the --levels options
33
+ You have to run a migration to add the `:level` field to your model.
34
34
 
35
- Give your controllers scope name to the --controller_scope options (default: nil)
36
-
37
- This will generate the restricted_access.rb initializer
35
+ ```
36
+ $ rails g migration AddLevelToAdmin
37
+ ```
38
+ You can edit it this way :
38
39
 
39
40
  ```ruby
40
- RestrictedAccess.configure do |config|
41
-
42
- config.accesses = [ { level: :mini,
43
- label: 'Some description for this access level',
44
- power: 0 },
45
- { level: :normal,
46
- label: 'Some description for this access level',
47
- power: 1 },
48
- { level: :super,
49
- label: 'Some description for this access level',
50
- power: 2}
51
- ]
52
- config.resource = :admin
53
- config.controller_scope = :backoffice
54
-
41
+ class AddLevelToAdmins < ActiveRecord::Migration
42
+ def change
43
+ add_column :admins, :level, :integer
44
+ end
55
45
  end
46
+
56
47
  ```
57
48
 
58
- You can customize the accesses with a label (optional) and define different power (the higher has more rights).
49
+ ## Mongoid support
59
50
 
60
- The `config.resource` and `config.controller_scope` are useful only in Rails, defining some methods in controllers and helpers (see below).
51
+ You need the [mongoid-enum](https://github.com/thetron/mongoid-enum) gem if you use mongoid.
52
+ Just ad it to your gemfile.
61
53
 
62
- ### RestrictedAccess::Model
54
+ ```
55
+ gem 'mongoid-enum'
56
+ ```
57
+
58
+ I didn't ship it as a dependency as it's useless for active_record users, and I didn't want to copy/paste some nice code done by someone else.
63
59
 
64
- Include the RestrictedAccess::Model module in your related model
60
+ ### Models
61
+
62
+ You must define the different levels of accesses in your model.
65
63
 
66
64
  ```ruby
67
65
  class Admin
68
66
  include Mongoid::Document
69
- include RestrictedAccess::Model
70
-
67
+ access_levels mini: 0, normal: 1, super: 2
71
68
  end
72
69
  ```
73
70
 
74
71
  The module enhances the model with some methods and attributes.
75
72
 
76
- Every model has now a :level attribute (Symbol type), by default the first defined in your initializer. You can set it like any attributes.
73
+ Every model has now a :level attribute, by default the first defined by the class method.
74
+
75
+ You can set it like any attributes.
77
76
 
78
77
  ```ruby
79
78
  admin = Admin.first
@@ -89,7 +88,7 @@ Each instance has a `:access` method, returning a `RestrictedAccess::Access` ins
89
88
 
90
89
  ```ruby
91
90
  admin.access
92
- => #<RestrictedAccess::Access:0x007fc255d36098 @level=:super, @label="", @power=2>
91
+ => #<RestrictedAccess::Access:0x007fc255d36098 @level=:super, @power=2>
93
92
 
94
93
  ```
95
94
 
@@ -99,12 +98,11 @@ The `RestrictedAccess::Access` class include comparable, so you can do such thin
99
98
  admin.access > admin2.access
100
99
  => true
101
100
 
102
- RestrictedAccess.accesses.max
103
- => #<RestrictedAccess::Access:0x007fc255d36098 @level=:super, @label="", @power=2>
101
+ Admin.accesses.max
102
+ => #<RestrictedAccess::Access:0x007fc255d36098 @level=:super, @power=2>
104
103
 
105
104
  ```
106
-
107
- Thanks to the [mongoid-enum](https://github.com/thetron/mongoid-enum) gem, some methods to check rights.
105
+ As the `:level` attribute is an enum, you get this kind of methods :
108
106
 
109
107
  ```ruby
110
108
  admin.mini?
@@ -113,53 +111,72 @@ admin.mini?
113
111
  admin.super?
114
112
  => true
115
113
 
116
- Admin::LEVEL
117
- => [:mini, :normal, :super]
118
-
119
114
  # scopes
120
- Admin.mini # => Mongoid::Criteria
121
- Admin.super # => Mongoid::Criteria
115
+ Admin.mini # => Mongoid::Criteria
116
+ # or
117
+ Admin.super # => ActiveRecord::Relation
122
118
  ```
123
119
 
124
- ### RestrictedAccess::Controller
120
+ ### Controllers
121
+
122
+ Controllers inheriting from ApplicationController have now a few more methods:
123
+
124
+ * `:prevent_#{level}_#{resource_name}_access`, which calls `:restrict_#{current_resource.level}_#{resource_name}_access` if the `:current_#{resource_name}` doesn't have enough access right.
125
125
 
126
- If you provided a `config.resource` and `config.controller_scope` in the initializer you can include the `RestrictedAccess::Controller` in your controller.
126
+ If you use Devise, you already have a `:current_#{resource_name}` method, if you don't use Devise, just implement the method.
127
127
 
128
128
  ```ruby
129
- class Backoffice::BaseController < ApplicationController
130
- include RestrictedAccess::Controller
129
+ class FrontController < ApplicationController
130
+ before_action :prevent_normal_admin_access, except: [:index]
131
+ # mini & normal admins will only be able to access index view
131
132
  end
132
133
  ```
133
134
 
134
- Every inherited controller has now a few more methods:
135
-
136
- * `:restrict_access`, which redirect to the `#{controller_scope}_root_path`. Set controller_scope to nil if you just want to redirect to root_path.
135
+ * `:restrict_#{level}_#{resource_name}_access` which redirect to the `root_path`.
137
136
 
138
- * `:prevent_#{level}_access`, which calls `:restrict_access` if the `:current_#{resource_name}` doesn't have enough access right. If you use Devise, you already have a `:current_#{resource_name}` method, if you don't use Devise, just implement it.
137
+ You can override the method in your controller to do something else.
139
138
 
140
139
  ```ruby
141
- class Backoffice::AdminsController < Backoffice::BaseController
142
- before_action :prevent_normal_access, except: [:index]
143
- # mini & normal admins will only be able to access index view
140
+ class FrontController < ApplicationController
141
+ before_action :prevent_normal_admin_access, except: [:index]
142
+ # Some code ...
143
+
144
+ private
145
+
146
+ def restrict_mini_admin_access
147
+ redirect_to some_path, notice: 'Nope dude' and return
148
+ end
149
+
150
+ def restrict_normal_admin_access
151
+ redirect_to some_other_path, notice: 'Nope dude' and return
152
+ end
144
153
  end
145
154
  ```
146
155
 
147
- ### RestrictedAccess::Helper
156
+ You can also define a more global `:restrict_#{resource_name}_access` method which applies to all concerned resources.
148
157
 
149
158
  ```ruby
150
- module Backoffice::AdminHelper
151
- include RestrictedAccess::Helper
159
+ class FrontController < ApplicationController
160
+
161
+ private
162
+ # this method as a bigger precedency than the other one
163
+ def restrict_admin_access
164
+ redirect_to some_path, notice: 'Nope dude' and return
165
+ end
166
+
167
+ def restrict_normal_admin_access
168
+ redirect_to some_other_path, notice: 'Nope dude' and return
169
+ end
152
170
  end
153
171
  ```
154
172
 
173
+ ### Helpers
155
174
 
156
- If you provided a `config.resource` option, you can include the `RestrictedAccess::Helper` in one of your helpers.
157
-
158
- It provides a `:available_for` method in the views, allowing you to hide some part of the view.
175
+ The gem provides a `:available_for` method in the views, allowing you to hide some part of the view.
159
176
 
160
177
  ```html
161
178
  <!-- this div won't be seen be admins lower than super -->
162
- <%= available_for :super do %>
179
+ <%= available_for :super, :admin do %>
163
180
  <div>
164
181
  I have something to hide here.
165
182
  </div>
@@ -171,7 +188,7 @@ It provides a `:available_for` method in the views, allowing you to hide some pa
171
188
 
172
189
  ## Contributing
173
190
 
174
- 1. Fork it ( http://github.com/<my-github-username>/restricted_access/fork )
191
+ 1. Fork it ( http://github.com/4nt1/restricted_access/fork )
175
192
  2. Create your feature branch (`git checkout -b my-new-feature`)
176
193
  3. Commit your changes (`git commit -am 'Add some feature'`)
177
194
  4. Push to the branch (`git push origin my-new-feature`)
@@ -3,7 +3,7 @@ Description:
3
3
  Generate the initializer.
4
4
 
5
5
  Example:
6
- rails g restricted_access:install admin --levels=mini super mega --controller_scope=backoffice
6
+ rails g restricted_access:install
7
7
 
8
8
  This will create:
9
9
  app/config/initializers/restricted_access.rb
@@ -1,19 +1,14 @@
1
+ require 'rails/generators/base'
2
+ require 'securerandom'
1
3
  module RestrictedAccess
2
4
  module Generators
3
- class InstallGenerator < Rails::Generators::NamedBase
4
- include Rails::Generators::ResourceHelpers
5
+ class InstallGenerator < Rails::Generators::Base
5
6
  source_root File.expand_path('../templates', __FILE__)
6
- argument :resource_name, type: :string, default: 'user'
7
- class_option :levels, type: :array, default: ['normal', 'super'], desc: "List of the differents access levels"
8
- class_option :controller_scope, type: :string, desc: "Scope of the concerned controllers"
9
7
 
10
8
  desc "Creates a RestrictedAccess initializer."
9
+ class_option :orm
11
10
 
12
- def set_variable
13
- @levels = options.levels
14
- @resource_name = resource_name
15
- @controller_scope = options.controller_scope
16
- end
11
+ class_option :resources, type: :array, desc: "List of the differents resources", aliases: '-r'
17
12
 
18
13
  def copy_initializer
19
14
  template "restricted_access.erb", "config/initializers/restricted_access.rb"
@@ -1,18 +1,4 @@
1
- RestrictedAccess.configure do |config|
2
-
3
- config.accesses = [<% @levels.each_with_index do |level, index| %>
4
- { level: :<%= level %>,
5
- label: '',
6
- power: <%= index %> }<% if index + 1 < @levels.count %>,<%- end %>
7
- <%- end %>
8
- ]
9
-
10
- config.resource = :<%= @resource_name %>
11
-
12
- <% if @controller_scope %>
13
- config.controller_scope = :<%= @controller_scope %>
14
- <% else %>
15
- config.controller_scope = nil
16
- <%- end %>
17
-
1
+ RestrictedAccess.configure do |conf|
2
+ require 'restricted_access/orm/<%= options[:orm] %>'
3
+ conf.resources = <%= options[:resources].map { |r| r.downcase.singularize.to_sym } %>
18
4
  end
@@ -1,9 +1,7 @@
1
- require "mongoid/enum"
2
1
  require "restricted_access/version"
3
2
  require 'restricted_access/configuration'
4
3
  require 'restricted_access/access'
5
- require 'restricted_access/model'
6
- require 'restricted_access/controller'
4
+ require 'restricted_access/models'
7
5
  require 'restricted_access/helper'
8
6
 
9
7
  module RestrictedAccess
@@ -15,41 +13,14 @@ module RestrictedAccess
15
13
 
16
14
  def configure
17
15
  yield(configuration)
18
- define_dynamic_methods
16
+ require 'restricted_access/controller'
17
+ ActionController::Base.send(:include, RestrictedAccess::Controller)
18
+ ActionView::Base.send(:include, RestrictedAccess::Helper)
19
19
  end
20
20
 
21
- def accesses
22
- @accesses ||= configuration.accesses.map do |a|
23
- Access.new(a[:level], a[:label], a[:power])
24
- end
21
+ def resources
22
+ @resources ||= configuration.resources
25
23
  end
26
24
 
27
- def resource
28
- @resource ||= configuration.resource
29
- end
30
-
31
- def controller_scope
32
- @controller_scope ||= configuration.controller_scope
33
- end
34
-
35
- def define_dynamic_methods
36
- # on Access class
37
- accesses.map(&:level).each do |level|
38
- Access.define_singleton_method level do
39
- RestrictedAccess.accesses.find {|a| a.level == level}
40
- end
41
-
42
- RestrictedAccess::Controller.class_eval do
43
- define_method "prevent_#{level}_access" do
44
- restrict_access if send("current_#{RestrictedAccess.resource}").access <= RestrictedAccess::Access.send(level)
45
- end
46
-
47
- define_method :restrict_access do
48
- _scope = RestrictedAccess.controller_scope.present? ? "#{RestrictedAccess.controller_scope}_" : nil
49
- redirect_to send("#{_scope}root_path"), notice: 'You do not have access to this page' and return
50
- end
51
- end
52
- end
53
- end
54
25
  end
55
26
  end
@@ -1,15 +1,14 @@
1
1
  module RestrictedAccess
2
2
  class Access
3
3
  include Comparable
4
- attr_accessor :level, :label, :power
4
+ attr_accessor :level, :power
5
5
 
6
6
  def <=>(access)
7
7
  power <=> access.power
8
8
  end
9
9
 
10
- def initialize(level, label, power)
10
+ def initialize(level, power)
11
11
  @level = level
12
- @label = label
13
12
  @power = power
14
13
  end
15
14
 
@@ -1,7 +1,5 @@
1
1
  module RestrictedAccess
2
2
  class Configuration
3
- attr_accessor :accesses
4
- attr_accessor :resource
5
- attr_accessor :controller_scope
3
+ attr_accessor :resources
6
4
  end
7
5
  end
@@ -1,6 +1,30 @@
1
1
  module RestrictedAccess
2
2
  module Controller
3
3
 
4
- end
4
+ RestrictedAccess.resources.each do |resource_name|
5
+ klass = resource_name.to_s.classify.constantize
6
+ if klass.accesses.present?
7
+ klass.accesses.each do |access|
8
+
9
+ define_method "prevent_#{access.level}_#{resource_name}_access" do
10
+ current_resource = send("current_#{resource_name}")
11
+ if current_resource && current_resource.access <= klass.send(:access, access.level)
12
+ if respond_to?("restrict_#{resource_name}_access", true)
13
+ send("restrict_#{resource_name}_access")
14
+ else
15
+ send("restrict_#{current_resource.level}_#{resource_name}_access"
16
+ )
17
+ end
18
+ end
19
+ end
20
+
21
+ define_method "restrict_#{access.level}_#{resource_name}_access" do
22
+ redirect_to root_path, notice: 'You do not have access to this page' and return
23
+ end
24
+ end
25
+ end
5
26
 
27
+ end
28
+
29
+ end
6
30
  end
@@ -1,8 +1,9 @@
1
1
  module RestrictedAccess
2
2
  module Helper
3
- def available_for(level, &block)
4
- access = RestrictedAccess::Access.send(level)
5
- capture(&block) if access && send("current_#{RestrictedAccess.resource}") && send("current_#{RestrictedAccess.resource}").access >= access
3
+ def available_for(level, resource_name, &block)
4
+ klass = resource_name.to_s.classify.constantize
5
+ access = klass.send(level)
6
+ capture(&block) if access && send("current_#{resource_name}") && send("current_#{resource_name}").access >= access
6
7
  end
7
8
  end
8
9
  end
@@ -0,0 +1,37 @@
1
+ module RestrictedAccess
2
+ module Models
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+
7
+ attr_reader :accesses
8
+
9
+ def access_levels(accesses)
10
+ @accesses = accesses.map { |k, v| Access.new(k, v) }
11
+
12
+ # define level store field
13
+ if defined?(Mongoid::Document)
14
+ enum :level, accesses.keys
15
+ elsif defined?(ActiveRecord::Base)
16
+ enum level: accesses
17
+ else
18
+ raise 'Your ORM is not recognized.'
19
+ end
20
+
21
+ end
22
+
23
+ def access(level_name)
24
+ @accesses.find { |a| a.level == level_name }
25
+ end
26
+ end
27
+
28
+ def access
29
+ self.class.access(level.to_sym)
30
+ end
31
+
32
+ def authorized_accesses
33
+ self.class.accesses.select { |a| a <= access }
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,4 @@
1
+ require 'active_record'
2
+
3
+ ActiveRecord::Base.extend RestrictedAccess::Models::ClassMethods
4
+ ActiveRecord::Base.include RestrictedAccess::Models
@@ -0,0 +1,6 @@
1
+ require 'mongoid'
2
+ require "mongoid/enum"
3
+
4
+ Mongoid::Document::ClassMethods.send :include, RestrictedAccess::Models::ClassMethods
5
+ Mongoid::Document.send :include, RestrictedAccess::Models
6
+ Mongoid::Document.send :include, Mongoid::Enum
@@ -1,3 +1,3 @@
1
1
  module RestrictedAccess
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = RestrictedAccess::VERSION
9
9
  spec.authors = ["4nt1"]
10
10
  spec.email = ["antoinemary@hotmail.fr"]
11
- spec.summary = %q{An access rights management tool intended to work with Devise}
12
- spec.description = %q{An access rights management tool intended to work with Devise}
11
+ spec.summary = %q{An access rights management tool}
12
+ spec.description = %q{An access rights management tool. Define routes and part of views that can be accessed by resources.}
13
13
  spec.homepage = "https://github.com/4nt1/restricted_access"
14
14
  spec.license = "MIT"
15
15
 
@@ -19,7 +19,4 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.5"
22
- spec.add_development_dependency "rake"
23
- spec.add_dependency "mongoid"
24
- spec.add_dependency "mongoid-enum"
25
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restricted_access
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - 4nt1
@@ -24,49 +24,8 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: mongoid
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: mongoid-enum
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- description: An access rights management tool intended to work with Devise
27
+ description: An access rights management tool. Define routes and part of views that
28
+ can be accessed by resources.
70
29
  email:
71
30
  - antoinemary@hotmail.fr
72
31
  executables: []
@@ -76,6 +35,7 @@ files:
76
35
  - ".gitignore"
77
36
  - Gemfile
78
37
  - LICENSE.txt
38
+ - README-v0.0.2.md
79
39
  - README.md
80
40
  - Rakefile
81
41
  - lib/generators/restricted_access/USAGE
@@ -86,7 +46,9 @@ files:
86
46
  - lib/restricted_access/configuration.rb
87
47
  - lib/restricted_access/controller.rb
88
48
  - lib/restricted_access/helper.rb
89
- - lib/restricted_access/model.rb
49
+ - lib/restricted_access/models.rb
50
+ - lib/restricted_access/orm/active_record.rb
51
+ - lib/restricted_access/orm/mongoid.rb
90
52
  - lib/restricted_access/version.rb
91
53
  - restricted_access.gemspec
92
54
  homepage: https://github.com/4nt1/restricted_access
@@ -112,5 +74,5 @@ rubyforge_project:
112
74
  rubygems_version: 2.2.2
113
75
  signing_key:
114
76
  specification_version: 4
115
- summary: An access rights management tool intended to work with Devise
77
+ summary: An access rights management tool
116
78
  test_files: []
@@ -1,19 +0,0 @@
1
- module RestrictedAccess
2
- module Model
3
- extend ActiveSupport::Concern
4
-
5
- included do |base|
6
- include Mongoid::Enum
7
- enum :level, RestrictedAccess.accesses.map(&:level)
8
- end
9
-
10
- def access
11
- RestrictedAccess.accesses.find {|a| a.level == level}
12
- end
13
-
14
- def authorized_accesses
15
- RestrictedAccess.accesses.select {|a| a <= access}
16
- end
17
-
18
- end
19
- end