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 +4 -4
- data/lib/generators/petergate/install_generator.rb +3 -26
- data/lib/petergate.rb +77 -10
- data/lib/petergate/railtie.rb +5 -1
- data/lib/petergate/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df522f0d5ba79467f079e0592fb6f19471c763b4
|
4
|
+
data.tar.gz: e6eb64935d92dfa959765b354099a0b697888b88
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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=
|
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
|
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
|
-
|
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
|
data/lib/petergate/railtie.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
1
|
-
|
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
|
data/lib/petergate/version.rb
CHANGED
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.
|
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
|
+
date: 2014-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|