activeaclplus 0.3.0 → 0.3.1
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.
- data/CHANGELOG +1 -1
- data/generators/active_acl/templates/controllers/privileges_controller.rb +55 -0
- data/generators/active_acl/templates/views/privileges/_privilege_form.rhtml +14 -0
- data/generators/active_acl/templates/views/privileges/edit.rhtml +17 -0
- data/generators/active_acl/templates/views/privileges/list.rhtml +39 -0
- data/lib/active_acl/cache/memcache_adapter.rb +44 -0
- data/lib/active_acl/cache/no_cache_adapter.rb +22 -0
- data/lib/active_acl/db/active_record_adapter.rb +15 -0
- data/lib/active_acl/db/mysql_adapter.rb +29 -0
- data/lib/active_acl.rb +26 -0
- data/tasks/active_acl_base_tasks.rake +4 -0
- metadata +17 -1
data/CHANGELOG
CHANGED
@@ -0,0 +1,55 @@
|
|
1
|
+
class <%= privileges_class_name %> < ApplicationController
|
2
|
+
verify :method => :post, :only => [ :create, :update],
|
3
|
+
:redirect_to => { :action => :list }
|
4
|
+
|
5
|
+
def index
|
6
|
+
redirect_to :action => :list
|
7
|
+
end
|
8
|
+
|
9
|
+
def list
|
10
|
+
@privileges = ActiveAcl::Privilege.find(:all, :order => 'section ASC, value ASC')
|
11
|
+
end
|
12
|
+
|
13
|
+
def edit
|
14
|
+
redirect_to :action => :list and return false unless params[:id]
|
15
|
+
begin
|
16
|
+
@privilege = ActiveAcl::Privilege.find(params[:id])
|
17
|
+
rescue ActiveRecord::RecordNotFound => e
|
18
|
+
flash[:error] = 'Privilege not found'
|
19
|
+
redirect_to :action => :list and return false
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def update
|
24
|
+
redirect_to :action => :list and return false if params['commit'] == 'Cancel'
|
25
|
+
|
26
|
+
begin
|
27
|
+
@privilege = ActiveAcl::Privilege.find(params[:id].to_i)
|
28
|
+
rescue ActiveRecord::RecordNotFound => e
|
29
|
+
flash[:error] = 'Privilege not found'
|
30
|
+
redirect_to :action => :list and return false
|
31
|
+
end
|
32
|
+
|
33
|
+
if (@privilege.update_attributes(params[:privilege]))
|
34
|
+
flash[:success] = 'Privilege successfully updated'
|
35
|
+
redirect_to :action => :list and return false
|
36
|
+
else
|
37
|
+
flash.now[:error] = 'There was an error updating the Privilege'
|
38
|
+
@title = 'Edit Privilege'
|
39
|
+
render :action => :edit
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def delete
|
44
|
+
redirect_to :action => :list and return false unless params[:id]
|
45
|
+
begin
|
46
|
+
privilege = ActiveAcl::Privilege.find(params[:id])
|
47
|
+
privilege.destroy
|
48
|
+
flash[:success] = 'Privilege successfully deleted'
|
49
|
+
rescue ActiveRecord::RecordNotFound => e
|
50
|
+
flash[:error] = 'Privilege not found'
|
51
|
+
end
|
52
|
+
|
53
|
+
redirect_to :action => :list and return false
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<table border="0">
|
2
|
+
<tr>
|
3
|
+
<td>Section:</td>
|
4
|
+
<td><%= text_field 'permission', 'section' %></td>
|
5
|
+
</tr>
|
6
|
+
<tr>
|
7
|
+
<td>Value:</td>
|
8
|
+
<td><%= text_field 'permission', 'value' %></td>
|
9
|
+
</tr>
|
10
|
+
<tr>
|
11
|
+
<td>Description:</td>
|
12
|
+
<td><%= text_field 'permission', 'description' %></td>
|
13
|
+
</tr>
|
14
|
+
</table>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<html>
|
2
|
+
<body>
|
3
|
+
<% if flash[:error] %>
|
4
|
+
<p class="error"><%=h flash[:error] %></p>
|
5
|
+
<% elsif flash[:notice] %>
|
6
|
+
<p class="notice"><%=h flash[:notice] %></p>
|
7
|
+
<% elsif flash[:success] %>
|
8
|
+
<p class="notice"><%=h flash[:success] %></p>
|
9
|
+
<% else %>
|
10
|
+
<p> </p>
|
11
|
+
<% end %>
|
12
|
+
<%= form_tag({ :action => 'update', :id => @permission.id }) %>
|
13
|
+
<%= render_partial 'permission_form' %>
|
14
|
+
<%= submit_tag 'Save' %> <%= submit_tag 'Cancel' %>
|
15
|
+
</form>
|
16
|
+
</body>
|
17
|
+
</html>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<html>
|
2
|
+
<body>
|
3
|
+
<% if flash[:error] %>
|
4
|
+
<p class="error"><%=h flash[:error] %></p>
|
5
|
+
<% elsif flash[:notice] %>
|
6
|
+
<p class="notice"><%=h flash[:notice] %></p>
|
7
|
+
<% elsif flash[:success] %>
|
8
|
+
<p class="notice"><%=h flash[:success] %></p>
|
9
|
+
<% else %>
|
10
|
+
<p> </p>
|
11
|
+
<% end %>
|
12
|
+
<table border="0" cellpadding="5">
|
13
|
+
<tr>
|
14
|
+
<th>Section/Value</th>
|
15
|
+
<th>Description</th>
|
16
|
+
<th> </th>
|
17
|
+
</tr>
|
18
|
+
<% oldsection = nil %>
|
19
|
+
<% for permission in @permissions do %>
|
20
|
+
<% if permission.section != oldsection and oldsection != nil %>
|
21
|
+
<tr><td colspan="3"> </td></tr>
|
22
|
+
<% end %>
|
23
|
+
<% unless permission.section == oldsection %>
|
24
|
+
<tr>
|
25
|
+
<td colspan="3"><b><%=h permission.section %></b></td>
|
26
|
+
</tr>
|
27
|
+
<% oldsection = permission.section %>
|
28
|
+
<% end %>
|
29
|
+
<tr>
|
30
|
+
<td><img src="/engine_files/gacl_engine/spacer.gif" height="1" width="20"><%= link_to permission.value, :action => 'edit', :id => permission.id %></td>
|
31
|
+
<td><%=h permission.description %></td>
|
32
|
+
<td>
|
33
|
+
<small>[<%= link_to 'delete', {:action => 'delete', :id => permission.id }, {:confirm => 'Shure to delete this Permission?'} %>]</small>
|
34
|
+
</td>
|
35
|
+
</tr>
|
36
|
+
<% end %>
|
37
|
+
</table>
|
38
|
+
</body>
|
39
|
+
</html>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# This is a cache adapter for the second level cache
|
2
|
+
# using the memcache daemon (http://www.danga.com/memcached).
|
3
|
+
# Sets itself as the cache adapter if the source file is loaded so a simple
|
4
|
+
# require is enough to activate the memcache. Before using the memcache, make shure to set MemcacheAdapter.cache.
|
5
|
+
#
|
6
|
+
# In environment.rb:
|
7
|
+
# require 'active_acl/cache/memcache_adapter'
|
8
|
+
# ActiveAcl::Cache::MemcacheAdapter.cache = MemCache.new('localhost:11211', :namespace => 'my_namespace')
|
9
|
+
#
|
10
|
+
# Detailed instructions on how to set up the server can be found at http://dev.robotcoop.com/Libraries/memcache-client.
|
11
|
+
class ActiveAcl::Cache::MemcacheAdapter
|
12
|
+
|
13
|
+
# returns the memcache server
|
14
|
+
def self.cache
|
15
|
+
@@cache
|
16
|
+
end
|
17
|
+
|
18
|
+
# sets the memcache server
|
19
|
+
def self.cache= cache
|
20
|
+
@@cache = cache
|
21
|
+
end
|
22
|
+
|
23
|
+
# get a value from the cache
|
24
|
+
def self.get(key)
|
25
|
+
value = @@cache.get(key)
|
26
|
+
RAILS_DEFAULT_LOGGER.debug 'GACL::SECOND_LEVEL_CACHE::' + (value.nil? ? 'MISS ' : 'HIT ')+ key.to_s if RAILS_DEFAULT_LOGGER.debug?
|
27
|
+
value
|
28
|
+
end
|
29
|
+
|
30
|
+
# set a value to the cache, specifying the time to live (ttl).
|
31
|
+
# Set ttl to 0 for unlimited.
|
32
|
+
def self.set(key, value, ttl)
|
33
|
+
@@cache.set(key, value, ttl)
|
34
|
+
RAILS_DEFAULT_LOGGER.debug 'GACL::SECOND_LEVEL_CACHE::SET ' + key.to_s + ' TO ' + value.to_s + ' TTL ' + ttl.to_s if RAILS_DEFAULT_LOGGER.debug?
|
35
|
+
end
|
36
|
+
|
37
|
+
# purge data from cache.
|
38
|
+
def self.delete(key)
|
39
|
+
@@cache.delete(key)
|
40
|
+
RAILS_DEFAULT_LOGGER.debug 'GACL::SECOND_LEVEL_CACHE::DELETE ' + key.to_s if RAILS_DEFAULT_LOGGER.debug?
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
ActiveAcl::OPTIONS[:cache] = ActiveAcl::Cache::MemcacheAdapter
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# This module contains different second level cache implementations. The second
|
2
|
+
# level cache caches the instance cache of an access object between requests.
|
3
|
+
# Cache adapter can be set with ActiveAcl::OPTIONS[:cache].
|
4
|
+
module ActiveAcl::Cache
|
5
|
+
|
6
|
+
# The default second level cache dummy implementation, not implementing any
|
7
|
+
# caching functionality at all.
|
8
|
+
class NoCacheAdapter
|
9
|
+
def self.get(key)
|
10
|
+
RAILS_DEFAULT_LOGGER.debug 'GACL::SECOND_LEVEL_CACHE::DISABLED::MISS ' + key.to_s if RAILS_DEFAULT_LOGGER.debug?
|
11
|
+
nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.set(key, value, ttl)
|
15
|
+
RAILS_DEFAULT_LOGGER.debug 'GACL::SECOND_LEVEL_CACHE::DISABLED::SET ' + key.to_s + ' TO ' + value.to_s + ' TTL ' + ttl.to_s if RAILS_DEFAULT_LOGGER.debug?
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.delete(key)
|
19
|
+
RAILS_DEFAULT_LOGGER.debug 'GACL::SECOND_LEVEL_CACHE::DISABLED::DELETE ' + key.to_s if RAILS_DEFAULT_LOGGER.debug?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Includes different DBMS adapters, some of them using C extensions to speed up DB access.
|
2
|
+
# DB adapter can be set with ActiveAcl::OPTIONS[:db].
|
3
|
+
module ActiveAcl::DB
|
4
|
+
|
5
|
+
# Uses ActiveRecord for privilege queries. Should be compatible to all
|
6
|
+
# db types.
|
7
|
+
class ActiveRecordAdapter
|
8
|
+
# Execute sql query against the DB, returning an array of results.
|
9
|
+
def self.query(sql)
|
10
|
+
ActiveRecord::Base.connection.select_all(sql)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
ActiveAcl::OPTIONS[:db] = ActiveAcl::DB::ActiveRecordAdapter
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'mysql'
|
2
|
+
|
3
|
+
# allow access to the real Mysql connection
|
4
|
+
class ActiveRecord::ConnectionAdapters::MysqlAdapter #:nodoc:
|
5
|
+
attr_reader :connection #:nodoc:
|
6
|
+
end
|
7
|
+
|
8
|
+
# Uses the native MySQL connection to do privilege selects. Should be around 20 % faster than
|
9
|
+
# ActiveRecord adapter. Sets itself as the DB adapter if the source file is loaded, so requiring it
|
10
|
+
# is enough to get it activated.
|
11
|
+
class ActiveAcl::DB::MySQLAdapter
|
12
|
+
|
13
|
+
# Execute sql query against the DB, returning an array of results.
|
14
|
+
def self.query(sql)
|
15
|
+
RAILS_DEFAULT_LOGGER.debug 'GACL::DB::EXECUTING QUERY ' + sql if RAILS_DEFAULT_LOGGER.debug?
|
16
|
+
connection = ActiveRecord::Base.connection.connection
|
17
|
+
connection.query_with_result = true
|
18
|
+
|
19
|
+
result = connection.query(sql)
|
20
|
+
rows = []
|
21
|
+
result.each_hash do |hash|
|
22
|
+
rows << hash
|
23
|
+
end if result
|
24
|
+
result.free
|
25
|
+
rows
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
ActiveAcl::OPTIONS[:db] = ActiveAcl::DB::MySQLAdapter
|
data/lib/active_acl.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
module ActiveAcl
|
2
|
+
end
|
3
|
+
|
4
|
+
# plugin dependency
|
5
|
+
require 'has_many_polymorphs'
|
6
|
+
|
7
|
+
ActiveAcl::CONTROLLERS = {}
|
8
|
+
|
9
|
+
require 'active_acl/options'
|
10
|
+
require 'active_acl/privilege_const_set'
|
11
|
+
require 'active_acl/db/active_record_adapter'
|
12
|
+
require 'active_acl/cache/no_cache_adapter'
|
13
|
+
require 'active_acl/load_controller_actions'
|
14
|
+
require 'active_acl/acts_as_access_object'
|
15
|
+
require 'active_acl/acts_as_access_group'
|
16
|
+
|
17
|
+
require 'active_acl/load_files_from'
|
18
|
+
|
19
|
+
# call class so its loaded and registered as access object
|
20
|
+
# wrap in rescue block so migrations don't fail
|
21
|
+
begin
|
22
|
+
ActiveAcl::ControllerAction
|
23
|
+
ActiveAcl::ControllerGroup
|
24
|
+
rescue
|
25
|
+
nil
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeaclplus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Schrammel
|
@@ -33,8 +33,13 @@ extensions: []
|
|
33
33
|
extra_rdoc_files: []
|
34
34
|
|
35
35
|
files:
|
36
|
+
- lib/active_acl
|
36
37
|
- lib/active_acl/db
|
38
|
+
- lib/active_acl/db/mysql_adapter.rb
|
39
|
+
- lib/active_acl/db/active_record_adapter.rb
|
37
40
|
- lib/active_acl/cache
|
41
|
+
- lib/active_acl/cache/no_cache_adapter.rb
|
42
|
+
- lib/active_acl/cache/memcache_adapter.rb
|
38
43
|
- lib/active_acl/target_group_link.rb
|
39
44
|
- lib/active_acl/controller_action.rb
|
40
45
|
- lib/active_acl/acl_section.rb
|
@@ -50,8 +55,19 @@ files:
|
|
50
55
|
- lib/active_acl/privilege_const_set.rb
|
51
56
|
- lib/active_acl/requester_group_link.rb
|
52
57
|
- lib/active_acl/acts_as_access_group.rb
|
58
|
+
- lib/active_acl.rb
|
59
|
+
- tasks/active_acl_base_tasks.rake
|
60
|
+
- generators/active_acl
|
53
61
|
- generators/active_acl/templates
|
62
|
+
- generators/active_acl/templates/controllers
|
63
|
+
- generators/active_acl/templates/controllers/privileges_controller.rb
|
64
|
+
- generators/active_acl/templates/views
|
65
|
+
- generators/active_acl/templates/views/privileges
|
66
|
+
- generators/active_acl/templates/views/privileges/list.rhtml
|
67
|
+
- generators/active_acl/templates/views/privileges/edit.rhtml
|
68
|
+
- generators/active_acl/templates/views/privileges/_privilege_form.rhtml
|
54
69
|
- generators/active_acl/active_acl_generator.rb
|
70
|
+
- db/migrate
|
55
71
|
- db/migrate/001_base_table_setup.rb
|
56
72
|
- init.rb
|
57
73
|
- install.rb
|