mix-auth 0.3.4 → 0.4.0
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.
@@ -0,0 +1,28 @@
|
|
1
|
+
class Ability
|
2
|
+
include CanCan::Ability
|
3
|
+
|
4
|
+
def initialize(user)
|
5
|
+
# Define abilities for the passed in user here. For example:
|
6
|
+
#
|
7
|
+
user ||= User.new # guest user (not logged in)
|
8
|
+
if user.is?(:admin)
|
9
|
+
can :manage, :all
|
10
|
+
else
|
11
|
+
can :read, :all
|
12
|
+
end
|
13
|
+
#
|
14
|
+
# The first argument to `can` is the action you are giving the user permission to do.
|
15
|
+
# If you pass :manage it will apply to every action. Other common actions here are
|
16
|
+
# :read, :create, :update and :destroy.
|
17
|
+
#
|
18
|
+
# The second argument is the resource the user can perform the action on. If you pass
|
19
|
+
# :all it will apply to every resource. Otherwise pass a Ruby class of the resource.
|
20
|
+
#
|
21
|
+
# The third argument is an optional hash of conditions to further filter the objects.
|
22
|
+
# For example, here the user can only update published articles.
|
23
|
+
#
|
24
|
+
# can :update, Article, :published => true
|
25
|
+
#
|
26
|
+
# See the wiki for details: https://github.com/ryanb/cancan/wiki/Defining-Abilities
|
27
|
+
end
|
28
|
+
end
|
data/app/models/user.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
class User
|
2
2
|
include Mongoid::Document
|
3
|
+
|
4
|
+
ROLES = %w[admin content_manager]
|
5
|
+
|
6
|
+
attr_accessible :roles
|
7
|
+
|
3
8
|
# Include default devise modules. Others available are:
|
4
9
|
# :token_authenticatable, :confirmable,
|
5
10
|
# :lockable, :timeoutable and :omniauthable
|
@@ -26,6 +31,7 @@ class User
|
|
26
31
|
field :last_sign_in_at, :type => Time
|
27
32
|
field :current_sign_in_ip, :type => String
|
28
33
|
field :last_sign_in_ip, :type => String
|
34
|
+
|
29
35
|
|
30
36
|
## Confirmable
|
31
37
|
# field :confirmation_token, :type => String
|
@@ -40,4 +46,23 @@ class User
|
|
40
46
|
|
41
47
|
## Token authenticatable
|
42
48
|
# field :authentication_token, :type => String
|
49
|
+
|
50
|
+
|
51
|
+
#field :role, :type => String
|
52
|
+
field :roles_mask, :type => Integer
|
53
|
+
|
54
|
+
def roles=(roles)
|
55
|
+
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.inject(0, :+)
|
56
|
+
end
|
57
|
+
|
58
|
+
def roles
|
59
|
+
ROLES.reject do |r|
|
60
|
+
((roles_mask || 0) & 2**ROLES.index(r)).zero?
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def is?(role)
|
65
|
+
roles.include?(role.to_s)
|
66
|
+
end
|
67
|
+
|
43
68
|
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
= f.input :email, as: 'string'
|
2
|
+
= f.input :password, as: 'password'
|
3
|
+
- for role in User::ROLES
|
4
|
+
= check_box_tag "user[roles][#{role}]", role, @user.roles.include?(role), {:name => "user[roles][]"}
|
5
|
+
= label_tag "user_roles_#{role}", role.humanize
|
6
|
+
%br
|
7
|
+
= hidden_field_tag "user[roles][]", ""
|
@@ -0,0 +1,4 @@
|
|
1
|
+
= link_to image_tag('albums/photos.png'), resource_url([resource, :photos])
|
2
|
+
= link_to image_tag('admix/zoom.png'), resource_url(resource)
|
3
|
+
= link_to image_tag('admix/page_edit.png'), edit_resource_url(resource)
|
4
|
+
= link_to image_tag('admix/cancel.png'), resource_url(resource), method: :delete, data: { confirm: t('admix.crud.destroy_confirm') }
|
data/lib/auth/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mix-auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-01-
|
13
|
+
date: 2013-01-14 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -76,6 +76,22 @@ dependencies:
|
|
76
76
|
- - ~>
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: 3.0.15
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: cancan
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :runtime
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
79
95
|
- !ruby/object:Gem::Dependency
|
80
96
|
name: mix-rails
|
81
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -121,7 +137,11 @@ files:
|
|
121
137
|
- app/assets/javascripts/admix/users.js
|
122
138
|
- app/helpers/admix/users_helper.rb
|
123
139
|
- app/models/admix/users_datagrid.rb
|
140
|
+
- app/models/ability.rb
|
124
141
|
- app/models/user.rb
|
142
|
+
- app/views/admix/users/_show.html.haml
|
143
|
+
- app/views/admix/users/_table_actions.html.haml
|
144
|
+
- app/views/admix/users/_form_fields.html.haml
|
125
145
|
- config/locales/auth.en.yml
|
126
146
|
- config/locales/devise.pt-BR.yml
|
127
147
|
- config/locales/devise.en.yml
|
@@ -150,7 +170,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
150
170
|
version: '0'
|
151
171
|
segments:
|
152
172
|
- 0
|
153
|
-
hash:
|
173
|
+
hash: 2479283267806110614
|
154
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
175
|
none: false
|
156
176
|
requirements:
|
@@ -159,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
179
|
version: '0'
|
160
180
|
segments:
|
161
181
|
- 0
|
162
|
-
hash:
|
182
|
+
hash: 2479283267806110614
|
163
183
|
requirements: []
|
164
184
|
rubyforge_project:
|
165
185
|
rubygems_version: 1.8.24
|