easy_roles 0.4.1 → 0.4.2
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/README.rdoc
CHANGED
@@ -4,8 +4,15 @@ Simple rails gem for basic role authorization with ruby on rails.
|
|
4
4
|
|
5
5
|
== Changelog
|
6
6
|
|
7
|
+
=== 03 February 2010 - Version 0.4.2
|
8
|
+
Fixed migration names
|
9
|
+
Does not allow duplicates to be added
|
10
|
+
|
11
|
+
=== 08 December 2009 - Version 0.4.1
|
12
|
+
Added a bitmask migration generator (Read below for usage)
|
13
|
+
|
7
14
|
=== 08 December 2009 - Version 0.4.0
|
8
|
-
Added the ability to use bitmasks instead of serializing the roles in a table
|
15
|
+
Added the ability to use bitmasks instead of serializing the roles in a table (Read below on how to setup and use)
|
9
16
|
|
10
17
|
=== 17 November 2009 - Version 0.3.0
|
11
18
|
Added a generator to generate the database columns "script/generate easy_roles Table Column_Name"
|
@@ -47,11 +54,36 @@ Then you need to add "easy_roles :column_name" to your model.
|
|
47
54
|
|
48
55
|
=== Bitmask Method
|
49
56
|
|
57
|
+
==== WARNING: If you plan on using the column name 'roles' for the bitmask method your getter and setter actions will be 'easy_roles' and 'easy_roles=', instead of 'roles' and 'roles='. I would suggest using 'roles_mask' as your roles column for this method.
|
58
|
+
|
50
59
|
Add the following to your enviroment.rb in the rails initializer block
|
51
60
|
|
52
61
|
config.gem 'easy_roles', :source => 'http://gemcutter.org'
|
53
62
|
|
54
|
-
|
63
|
+
(from version 0.4.1) use the migration generator to generate the roles column for your users table
|
64
|
+
|
65
|
+
E.G. script/generate easy_bitmask_roles user roles_mask
|
66
|
+
|
67
|
+
Or add a "roles_mask" column to your users model of type 'integer', and set the default value to 0. Please note you can call this column anything you like, I like to use the name "roles_mask".
|
68
|
+
|
69
|
+
t.integer :roles_mask, :default => 0
|
70
|
+
|
71
|
+
Add "easy_roles :column_name, :method => :bitmask" to your model.
|
72
|
+
|
73
|
+
class User < ActiveRecord::Base
|
74
|
+
easy_roles :roles_mask, :method => :bitmask
|
75
|
+
end
|
76
|
+
|
77
|
+
And lastly you need to add a constant variable which stores an array of the different roles for your system. The name of the constant must be the name of your column in full caps.
|
78
|
+
|
79
|
+
==== WARNING: Bitmask storage relies that you DO NOT change the order of your array of roles, if you need to add a new role, just append it to the end of the array.
|
80
|
+
|
81
|
+
class User < ActiveRecord::Base
|
82
|
+
easy_roles :roles_mask, :method => :bitmask
|
83
|
+
|
84
|
+
# Constant variable storing roles in the system
|
85
|
+
ROLES_MASK = %w[admin moderator user]
|
86
|
+
end
|
55
87
|
|
56
88
|
== Usage
|
57
89
|
|
@@ -68,6 +100,10 @@ check to see if a user has a certain role
|
|
68
100
|
# or
|
69
101
|
is_role? # role being anything you like, for example 'is_admin?' or 'is_awesome?'
|
70
102
|
|
103
|
+
For every method above there is a bang method too.
|
104
|
+
add_role! 'role'
|
105
|
+
remove_role! 'role'
|
106
|
+
|
71
107
|
== Examples
|
72
108
|
|
73
109
|
@user = User.first
|
@@ -119,8 +155,12 @@ Then in your AdminsController or any controller that you only want admins to vie
|
|
119
155
|
class MarksController < ApplicationController
|
120
156
|
before_filter :admin_required, :only => :create, :update
|
121
157
|
end
|
122
|
-
|
123
|
-
|
158
|
+
|
159
|
+
Check out http://blog.platform45.com/2009/10/05/howto-basic-roles-for-users for implementation, and http://blog.platform45.com/2009/10/07/easy-roles-gem-released for usage.
|
160
|
+
|
161
|
+
Follow me on twitter: http://twitter.com/ryan_za
|
162
|
+
|
163
|
+
Email: ryan *at* platform45.com
|
124
164
|
|
125
165
|
|
126
166
|
== License
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('easy_roles', '0.4.
|
5
|
+
Echoe.new('easy_roles', '0.4.2') do |p|
|
6
6
|
p.description = "Easy role authorization in rails"
|
7
7
|
p.url = "http://github.com/platform45/easy_roles"
|
8
8
|
p.author = "Platform45"
|
data/easy_roles.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{easy_roles}
|
5
|
-
s.version = "0.4.
|
5
|
+
s.version = "0.4.2"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Platform45"]
|
9
|
-
s.date = %q{
|
9
|
+
s.date = %q{2010-02-03}
|
10
10
|
s.description = %q{Easy role authorization in rails}
|
11
11
|
s.email = %q{ryan@platform45.com}
|
12
12
|
s.extra_rdoc_files = ["README.rdoc", "lib/easy_roles.rb"]
|
@@ -2,7 +2,7 @@ class EasyBitmaskRolesGenerator < Rails::Generator::NamedBase
|
|
2
2
|
def manifest
|
3
3
|
record do |m|
|
4
4
|
m.class_collisions class_name
|
5
|
-
m.migration_template 'migration.rb', "db/migrate", :migration_file_name => "
|
5
|
+
m.migration_template 'migration.rb', "db/migrate", :migration_file_name => "add_bitmask_roles_to_#{table_name}"
|
6
6
|
end
|
7
7
|
end
|
8
8
|
end
|
@@ -2,7 +2,7 @@ class EasyRolesGenerator < Rails::Generator::NamedBase
|
|
2
2
|
def manifest
|
3
3
|
record do |m|
|
4
4
|
m.class_collisions class_name
|
5
|
-
m.migration_template 'migration.rb', "db/migrate", :migration_file_name => "
|
5
|
+
m.migration_template 'migration.rb', "db/migrate", :migration_file_name => "add_roles_to_#{table_name}"
|
6
6
|
end
|
7
7
|
end
|
8
8
|
end
|
data/lib/easy_roles.rb
CHANGED
@@ -19,7 +19,8 @@ module EasyRoles
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def add_role(role)
|
22
|
-
self.#{name}
|
22
|
+
clear_roles if self.#{name}.nil?
|
23
|
+
has_role?(role) ? false : self.#{name} << role
|
23
24
|
end
|
24
25
|
|
25
26
|
def add_role!(role)
|
@@ -68,7 +69,7 @@ module EasyRoles
|
|
68
69
|
end
|
69
70
|
|
70
71
|
def add_role(role)
|
71
|
-
new_roles = #{def_name}.push(role)
|
72
|
+
new_roles = #{def_name}.push(role).uniq
|
72
73
|
self.#{def_name} = new_roles
|
73
74
|
end
|
74
75
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_roles
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Platform45
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-02-03 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|