petergate 0.1.3 → 0.1.4

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: 7187ecf8f85815e545390c1d6990f5f86dd4b681
4
- data.tar.gz: 9d7af8202338b5dccf7c44ff3e4aab8a6f48a090
3
+ metadata.gz: df522f0d5ba79467f079e0592fb6f19471c763b4
4
+ data.tar.gz: e6eb64935d92dfa959765b354099a0b697888b88
5
5
  SHA512:
6
- metadata.gz: ed8b2dcf4ad4e053c383f606c5f69c0feb2e6354c2d090448bf6f28a65971047b2d3e0074d4c08fd4f3be3bf1bc9f2437b4916de5bf09a9aae4b1e844dc8bf09
7
- data.tar.gz: 89c02b9422e50a40032ceacb276f2a0dd258545d431b9cf7d19804c3ae153b4646a90a18a15e4599b19792dd04c5820acff52d12515fc72d001b2631e9f1c67f
6
+ metadata.gz: 82976196c290845cd522a04c1a126e289620bc58ea901e1b1dfd71195d65b159a78aca870c308b3f81e0614157766078c31bb568f16ccbf247266d38e53c876b
7
+ data.tar.gz: ea208dffeecf56dafdaac758d7c1c91288021e94554bcc1c7a14337e92baadf5edb92788b678d8bb8abf359a1db4dce12db9b14dfc5287dc00f3eb33e6b3b169
@@ -19,33 +19,10 @@ module Petergate
19
19
 
20
20
  ################################################################################
21
21
  ## PeterGate Roles
22
+ ## The :user role is added by default and shouldn't be included in this list.
23
+ petergate(roles: [admin, company_admin])
22
24
  ################################################################################
23
-
24
- serialize :roles
25
-
26
- # The :user role is added by default and shouldn't be included in this list.
27
- Roles = [:admin]
28
-
29
- after_initialize do
30
- self[:roles] = []
31
- end
32
-
33
- def roles=(v)
34
- self[:roles] = v.map(&:to_sym).to_a.select{|r| r.size > 0 && Roles.include?(r)}
35
- end
36
-
37
- def roles
38
- self[:roles] + [:user]
39
- end
40
-
41
- def role
42
- roles.first
43
- end
44
-
45
- ################################################################################
46
- ## End PeterGate Roles
47
- ################################################################################
48
-
25
+
49
26
  RUBY
50
27
  end
51
28
  end
data/lib/petergate.rb CHANGED
@@ -1,17 +1,26 @@
1
1
  require "petergate/version"
2
- require 'petergate/railtie' if defined?(Rails)
3
2
 
4
- module Petergate
3
+ module PeterGate
5
4
  module ControllerMethods
5
+ module ClassMethods
6
+ def access(rules = {}, &block)
7
+ if block
8
+ b_rules = block.call
9
+ rules = rules.merge(b_rules) if b_rules.is_a?(Hash)
10
+ end
11
+ def check_access
12
+ perms(rules)
13
+ end
14
+ end
15
+ end
16
+
6
17
  AllRest = [:show, :index, :new, :edit, :update, :create, :destroy]
7
18
 
8
- ################################################################################
9
- # Start Permissions
10
- ################################################################################
11
19
  def self.included(base)
20
+ base.extend(ClassMethods)
12
21
  base.before_filter do
13
22
  unless logged_in?(:admin)
14
- message= access
23
+ message= check_access
15
24
  if message.is_a?(String) || message == false
16
25
  if user_signed_in?
17
26
  redirect_to (request.referrer || after_sign_in_path_for(current_user)), :notice => message || "Permission Denied"
@@ -23,7 +32,7 @@ module Petergate
23
32
  end
24
33
  end
25
34
 
26
- def access
35
+ def check_access
27
36
  permissions
28
37
  end
29
38
 
@@ -47,9 +56,67 @@ module Petergate
47
56
  def logged_in?(*roles)
48
57
  current_user && (roles & current_user.roles).any?
49
58
  end
59
+ end
60
+
61
+ module UserMethods
62
+ def self.included(base)
63
+ base.extend(ClassMethods)
64
+ end
65
+
66
+ module ClassMethods
67
+ def petergate(options = {roles: [:admin]})
68
+ serialize :roles
69
+ after_initialize do
70
+ self[:roles] ||= []
71
+ end
72
+
73
+ instance_eval do
74
+ @available_roles = options[:roles]
75
+
76
+ def available_roles
77
+ @available_roles
78
+ end
79
+ end
80
+
50
81
 
51
- ################################################################################
52
- # End Permissions
53
- ################################################################################
82
+ class_eval do
83
+ # TODO: Find a better way of making this available as both class and instance method.
84
+ def available_roles
85
+ self.class.available_roles
86
+ end
87
+
88
+ def roles=(v)
89
+ self[:roles] = v.map(&:to_sym).to_a.select{|r| r.size > 0 && available_roles.include?(r)}
90
+ end
91
+
92
+ def roles
93
+ self[:roles] + [:user]
94
+ end
95
+
96
+ def role
97
+ roles.first
98
+ end
99
+ end
100
+ end
101
+ end
54
102
  end
55
103
  end
104
+
105
+ class ActionController::Base
106
+ include PeterGate::ControllerMethods
107
+ end
108
+
109
+ class ActiveRecord::Base
110
+ include PeterGate::UserMethods
111
+ end
112
+
113
+ # class User < ActiveRecord::Base
114
+ # ################################################################################
115
+ # ## PeterGate Roles
116
+ # ################################################################################
117
+ #
118
+ #
119
+ # ################################################################################
120
+ # ## End PeterGate Roles
121
+ # ################################################################################
122
+ # end
@@ -1,10 +1,14 @@
1
- # require 'petergate/view_helpers'
1
+ require 'petergate/view_helpers'
2
2
  module Petergate
3
3
  class Railtie < Rails::Railtie
4
4
  initializer "petergate.libs" do
5
5
  ActiveSupport.on_load(:action_controller) do
6
6
  ActionController::Base.send(:include, Petergate::ControllerMethods)
7
7
  end
8
+
9
+ ActiveSupport.on_load(:active_record) do
10
+ User.send(:include, Petergate::ModelMethods)
11
+ end
8
12
  end
9
13
  end
10
14
  end
@@ -1,3 +1,3 @@
1
1
  module Petergate
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: petergate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Isaac Sloan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-11 00:00:00.000000000 Z
11
+ date: 2014-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler