blockade 0.0.1 → 0.0.2

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: 6d168dcd683b656c1cf34e953b5a6d98ffef7ffa
4
- data.tar.gz: 0bc13591726ae7d3b28843f30f945c2d64a76e0c
3
+ metadata.gz: 8531e01cc4257948a14b2c82d7df77e2b9f23e64
4
+ data.tar.gz: ac5681e00b7a6f64b0ca1a30d3279b53e79707fb
5
5
  SHA512:
6
- metadata.gz: 4700efad4114a35feb857d8e98484a9f24affbc4afa93f3e87284cbae18691fdb78fd81cd53cf816a4ab3d84f3b49323dd770801b4df696857cf5ef5bab10416
7
- data.tar.gz: 2db12ec4b5d1696732adc5069a971b9ad57edbf160f88fe2a08b7d746d681f9e16afb48f2c3ba6bb33d329e80e338cd666ccdfd3d5ffe214ab9759bc381aa55a
6
+ metadata.gz: 157a9a50fed38554ef59bdaffc93286fd3186a6fc30055c599c642d1f124198eaa47f93712176d551b29954958555180190cded6d48c31563b00995bffb19733
7
+ data.tar.gz: 36f3e8c112835bea71aeebd800da2d8225c894d83204bc93b150240615e1bbe54454e15ef0e621bdac33995a2cc0870b5ddfc0c07fc9e43234b36f799d02ed1e
@@ -1,13 +1,38 @@
1
1
  module Blockade
2
+ class AccessDenied < StandardError; end
3
+
2
4
  module ControllerAdditions
3
5
  def self.included(base)
4
6
  base.extend ClassMethods
5
7
  end
6
8
 
9
+ def roles
10
+ raise NotImplementedError
11
+ end
12
+
13
+ def allowx(*args)
14
+ allowed = false
15
+ self.class.instance_variable_get(:@roles).each do |role, permissions|
16
+ if roles.public_send("#{role}?")
17
+ allowed = true
18
+ break
19
+ end
20
+ end
21
+ raise Blockade::AccessDenied unless allowed
22
+ end
23
+
7
24
  module ClassMethods
8
25
  def allow(*args)
9
- self.before_filter :allow
26
+ @roles ||= {}
27
+ @roles[args.first] = []
28
+ self.before_filter :allowx
10
29
  end
11
30
  end
12
31
  end
13
32
  end
33
+
34
+ if defined? ActionController::Base
35
+ ActionController::Base.class_eval do
36
+ include Blockade::ControllerAdditions
37
+ end
38
+ end
@@ -1,3 +1,3 @@
1
1
  module Blockade
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blockade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zamith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-14 00:00:00.000000000 Z
11
+ date: 2013-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler