petergate 0.1.3 → 0.1.4

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
  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