ecm_user_area 0.0.1.pre → 1.0.0.pre

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,40 @@
1
+ ActiveAdmin.register Role do
2
+ # menu entry settings
3
+ menu :parent => Proc.new { I18n.t('ecm.user_area.active_admin.menu') }.call
4
+
5
+ index do
6
+ column :name
7
+ column :namespace
8
+ column :identifier
9
+ column :enabled
10
+ column :description
11
+ column :created_at
12
+ column :updated_at
13
+ default_actions
14
+ end
15
+
16
+ show :title => :to_s do
17
+ panel Role.human_attribute_name(:user_roles) do
18
+ table_for role.user_roles, :i18n => UserRole do
19
+ column :user
20
+ column :active?
21
+ column :valid_from
22
+ column :valid_to
23
+ column do |user_role|
24
+ link_to(I18n.t('active_admin.view'), [:admin, user_role], :class => "member_link view_link") +
25
+ link_to(I18n.t('active_admin.edit'), [:edit, :admin, user_role], :class => "member_link edit_link")
26
+ end
27
+ end # table_for
28
+ end # panel
29
+ end
30
+
31
+ sidebar Role.human_attribute_name(:details), :only => :show do
32
+ attributes_table_for role do
33
+ row :namespace
34
+ row :identifier
35
+ row :enabled
36
+ row :created_at
37
+ row :updated_at
38
+ end
39
+ end # sidebar
40
+ end
@@ -0,0 +1,27 @@
1
+ ActiveAdmin.register UserRole do
2
+ # menu entry settings
3
+ menu :parent => Proc.new { I18n.t('ecm.user_area.active_admin.menu') }.call
4
+
5
+ form do |f|
6
+ f.semantic_errors *f.object.errors.keys
7
+
8
+ f.inputs do
9
+ f.input :user
10
+ f.input :role
11
+ f.input :valid_from, :as => :datepicker
12
+ f.input :valid_to, :as => :datepicker
13
+ end
14
+ f.actions
15
+ end
16
+
17
+ index do
18
+ column :role
19
+ column :user
20
+ column :valid_from
21
+ column :valid_to
22
+ column :active?
23
+ column :created_at
24
+ column :updated_at
25
+ default_actions
26
+ end
27
+ end
data/app/admin/users.rb CHANGED
@@ -1,20 +1,58 @@
1
- ActiveAdmin.register User do
2
- index do
3
- column :email
4
- column :current_sign_in_at
5
- column :last_sign_in_at
6
- column :sign_in_count
7
- default_actions
8
- end
1
+ ActiveAdmin.register User do
2
+ # menu entry settings
3
+ menu :parent => Proc.new { I18n.t('ecm.user_area.active_admin.menu') }.call
9
4
 
10
- filter :email
5
+ index do
6
+ column :email
7
+ column :current_sign_in_at
8
+ column :last_sign_in_at
9
+ column :sign_in_count
10
+ default_actions
11
+ end
11
12
 
12
- form do |f|
13
- f.inputs "User Details" do
14
- f.input :email
15
- f.input :password
16
- f.input :password_confirmation
17
- end
18
- f.actions
19
- end
13
+ filter :email
14
+
15
+ form do |f|
16
+ f.inputs "User Details" do
17
+ f.input :email
18
+ f.input :password
19
+ f.input :password_confirmation
20
+ end
21
+ f.actions
22
+ end
23
+
24
+ show :title => :to_s do
25
+ panel User.human_attribute_name(:user_roles) do
26
+ table_for user.user_roles, :i18n => UserRole do
27
+ column :role
28
+ column :active?
29
+ column :valid_from
30
+ column :valid_to
31
+ column do |user_role|
32
+ link_to(I18n.t('active_admin.view'), [:admin, user_role], :class => "member_link view_link") +
33
+ link_to(I18n.t('active_admin.edit'), [:edit, :admin, user_role], :class => "member_link edit_link")
34
+ end
35
+ end # table_for
36
+ end # panel
37
+ end
38
+
39
+ sidebar User.human_attribute_name(:details), :only => :show do
40
+ attributes_table_for user do
41
+ row :email
42
+ row :reset_password_sent_at
43
+ row :remember_created_at
44
+ row :sign_in_count
45
+ row :current_sign_in_at
46
+ row :last_sign_in_at
47
+ row :current_sign_in_ip
48
+ row :confirmed_at
49
+ row :confirmation_sent_at
50
+ row :unconfirmed_email
51
+ row :failed_attempts
52
+ row :unlock_token
53
+ row :locked_at
54
+ row :created_at
55
+ row :updated_at
56
+ end
57
+ end # sidebar
20
58
  end
@@ -1,3 +1,25 @@
1
1
  class Ecm::UserArea::RegistrationsController < Devise::RegistrationsController
2
2
  include RailsTools::I18nController
3
+
4
+ def new
5
+ if Ecm::UserArea::Configuration.registrations_disabled?
6
+ handle_disabled_registration
7
+ else
8
+ super
9
+ end
10
+ end
11
+
12
+ def create
13
+ if Ecm::UserArea::Configuration.registrations_disabled?
14
+ handle_disabled_registration
15
+ else
16
+ super
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def handle_disabled_registration
23
+ redirect_to root_path, :notice => t('ecm.user_area.messages.notices.registrations_disabled')
24
+ end
3
25
  end
@@ -0,0 +1,37 @@
1
+ class Role < ActiveRecord::Base
2
+ # Associations
3
+ has_many :user_roles
4
+ has_many :users, :through => :user_roles
5
+
6
+ # Attributes
7
+ attr_accessible :description,
8
+ :enabled,
9
+ :identifier,
10
+ :namespace
11
+
12
+ # Validations
13
+ validates :namespace, :presence => true
14
+ validates :identifier, :presence => true
15
+
16
+ def qualified_identifier
17
+ "#{namespace}/#{identifier}"
18
+ end
19
+
20
+ def to_s
21
+ qualified_identifier
22
+ end
23
+
24
+ def name
25
+ I18n.t("#{i18n_namespace}.name")
26
+ end
27
+
28
+ def description
29
+ I18n.t("#{i18n_namespace}.description")
30
+ end
31
+
32
+ private
33
+
34
+ def i18n_namespace
35
+ "#{namespace}/roles/#{identifier}".underscore.gsub("/", ".")
36
+ end
37
+ end
data/app/models/user.rb CHANGED
@@ -1,13 +1,32 @@
1
1
  class User < ActiveRecord::Base
2
+ # Associations
3
+ has_many :user_roles
4
+ has_many :roles, :through => :user_roles
5
+ has_many :active_roles, :through => :user_roles,
6
+ :class_name => "Role",
7
+ :source => :role,
8
+ :conditions => [ 'user_roles.valid_from < ? AND user_roles.valid_to > ? AND roles.enabled = ?', Time.zone.now, Time.zone.now, true ]
9
+
2
10
  # Include default devise modules. Others available are:
3
11
  # :token_authenticatable and :omniauthable
4
12
  devise :confirmable, :database_authenticatable, :lockable, :registerable,
5
13
  :recoverable, :rememberable, :timeoutable, :trackable, :validatable
6
14
 
7
15
  # Setup accessible (or protected) attributes for your model
8
- attr_accessible :email, :password, :password_confirmation, :remember_me
16
+ attr_accessible :email,
17
+ :password,
18
+ :password_confirmation,
19
+ :remember_me
9
20
 
10
21
  def devise_mailer
11
22
  Ecm::UserArea::Mailer
12
23
  end
24
+
25
+ def has_role?(role_identifier)
26
+ active_roles.map(&:qualified_identifier).include?(role_identifier.to_s)
27
+ end
28
+
29
+ def to_s
30
+ email
31
+ end
13
32
  end
@@ -0,0 +1,30 @@
1
+ class UserRole < ActiveRecord::Base
2
+ # Associations
3
+ belongs_to :user
4
+ belongs_to :role
5
+
6
+ # Attributes
7
+ attr_accessible :user_id,
8
+ :role_id,
9
+ :valid_from,
10
+ :valid_to
11
+
12
+ # Callbacks
13
+ after_initialize :set_defaults
14
+
15
+ # Delegates
16
+ delegate :name, :description, :to => :role, :prefix => true
17
+
18
+ def active?
19
+ valid_from < Time.zone.now && valid_to > Time.zone.now
20
+ end
21
+
22
+ private
23
+
24
+ def set_defaults
25
+ if new_record?
26
+ self.valid_from = Time.zone.now
27
+ self.valid_to = Time.zone.parse('9999-12-31 23:59:59')
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ module Ecm::UserArea
2
+ class RoleCollector
3
+ def self.call
4
+ self.new.call
5
+ end
6
+
7
+ def call
8
+ roles = Rbac::Role::Enumerator.call
9
+ roles.each do |role|
10
+ Role.where(:namespace => role.namespace, :identifier => role.identifier).first_or_create
11
+ end
12
+ end
13
+ end
14
+ end
@@ -20,6 +20,31 @@
20
20
  </div>
21
21
  <% end %>
22
22
 
23
+ <h3>Meine Rollen</h3>
24
+
25
+ <table class="table table-striped table-condensed">
26
+ <thead>
27
+ <tr>
28
+ <th><%= UserRole.human_attribute_name(:role_name) %></th>
29
+ <th><%= UserRole.human_attribute_name(:role_description) %></th>
30
+ <th><%= UserRole.human_attribute_name(:valid_from) %></th>
31
+ <th><%= UserRole.human_attribute_name(:valid_to) %></th>
32
+ <th><%= UserRole.human_attribute_name(:active?) %></th>
33
+ </tr>
34
+ </thead>
35
+ <tbody>
36
+ <% resource.user_roles.each do |user_role| %>
37
+ <tr>
38
+ <td><%= user_role.role_name %></td>
39
+ <td><%= user_role.role_description %></td>
40
+ <td><%= l(user_role.valid_from) %></td>
41
+ <td><%= l(user_role.valid_to) %></td>
42
+ <td><%= t(user_role.active?) %></td>
43
+ </tr>
44
+ <% end %>
45
+ </tbody>
46
+ </table>
47
+
23
48
  <h3>Mein Konto kündigen</h3>
24
49
 
25
50
  <p>Unzufrieden? <%= link_to "Mein Konto kündigen", registration_path(resource_name), :data => { :confirm => "Sind Sie sicher?" }, :method => :delete, :class=>'btn btn-danger btn-mini' %>.</p>
@@ -1,6 +1,14 @@
1
1
  de:
2
2
  activerecord:
3
3
  attributes:
4
+ role:
5
+ created_at: Erstellt am
6
+ description: Beschreibung
7
+ enabled: Aktiv
8
+ identifier: Bezeichner
9
+ name: Name
10
+ namespace: Namensraum
11
+ updated_at: Aktualisiert am
4
12
  user:
5
13
  created_at: Erstellt am
6
14
  current_password: Aktuelles Passwort
@@ -12,10 +20,24 @@ de:
12
20
  password_confirmation: Passwort wiederholen
13
21
  remember_me: merken?
14
22
  sign_in_count: Anmeldungen
23
+ user_roles: Benutzerrollen
24
+ user_role:
25
+ active?: Aktiv
26
+ role: Rolle
27
+ role_description: Rollenbeschreibung
28
+ role_name: Name
29
+ valid_from: Gültig seit
30
+ valid_to: Gültig bis
15
31
  models:
32
+ role:
33
+ one: Rolle
34
+ other: Rollen
16
35
  user:
17
36
  one: Benutzer
18
37
  other: Benutzer
38
+ user_role:
39
+ one: Benutzerrolle
40
+ other: Benutzerrollen
19
41
  ecm:
20
42
  user_area:
21
43
  actions:
@@ -24,3 +46,15 @@ de:
24
46
  new: Registrieren
25
47
  sign_in: Anmelden
26
48
  sign_out: Abmelden
49
+ active_admin:
50
+ menu: Benutzerverwaltung
51
+ messages:
52
+ registrations_disabled: Derzeit sind Neuanmeldungen deaktiviert.
53
+ roles:
54
+ user_admin:
55
+ name: Benutzeradministrator
56
+ super_admin:
57
+ name: Superadministrator
58
+ description: Darf Rollen an andere Benutzer vergeben.
59
+ resources:
60
+ users: benutzer
@@ -1,6 +1,14 @@
1
1
  en:
2
2
  activerecord:
3
3
  attributes:
4
+ role:
5
+ created_at: created at
6
+ description: description
7
+ enabled: enabled
8
+ identifier: identifier
9
+ name: name
10
+ namespace: namespace
11
+ updated_at: updated at
4
12
  user:
5
13
  created_at: created at
6
14
  current_password: current password
@@ -12,10 +20,24 @@ en:
12
20
  password_confirmation: password confirmation
13
21
  remember_me: remember me?
14
22
  sign_in_count: sign in count
23
+ user_roles: user roles
24
+ user_role:
25
+ active?: active
26
+ role: role
27
+ role_description: role description
28
+ role_name: name
29
+ valid_from: valid from
30
+ valid_to: valid to
15
31
  models:
32
+ role:
33
+ one: role
34
+ other: roles
16
35
  user:
17
36
  one: user
18
37
  other: users
38
+ user_role:
39
+ one: user role
40
+ other: user roles
19
41
  ecm:
20
42
  user_area:
21
43
  actions:
@@ -24,3 +46,14 @@ en:
24
46
  new: Register
25
47
  sign_in: Sign in
26
48
  sign_out: Sign out
49
+ active_admin:
50
+ menu: User management
51
+ messages:
52
+ registrations_disabled: Registrations are disabled at the moment.
53
+ roles:
54
+ user_admin:
55
+ name: User administrator
56
+ super_admin:
57
+ name: Super administrator
58
+ resources:
59
+ users: users
@@ -0,0 +1,12 @@
1
+ class CreateRoles < ActiveRecord::Migration
2
+ def change
3
+ create_table :roles do |t|
4
+ t.string :namespace
5
+ t.string :identifier
6
+ t.boolean :enabled
7
+ t.text :description
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ class CreateUserRoles < ActiveRecord::Migration
2
+ def change
3
+ create_table :user_roles do |t|
4
+ t.references :role, :null => false
5
+ t.references :user, :null => false
6
+ t.timestamp :valid_from, :null => false
7
+ t.timestamp :valid_to, :null => false
8
+
9
+ t.timestamps
10
+ end
11
+ add_index :user_roles, :role_id
12
+ add_index :user_roles, :user_id
13
+ end
14
+ end
@@ -9,8 +9,12 @@ module Ecm
9
9
  yield self
10
10
  end
11
11
 
12
- # mattr_accessor :foo
13
- # @@foo = nil
12
+ mattr_accessor :disable_registrations
13
+ @@disable_registrations = false
14
+
15
+ def self.registrations_disabled?
16
+ !!@@disable_registrations
17
+ end
14
18
  end
15
19
  end
16
20
  end
@@ -0,0 +1,17 @@
1
+ require 'rbac/role/base'
2
+
3
+ module Ecm
4
+ module UserArea
5
+ module Roles
6
+ class UserAdmin < Rbac::Role::Base
7
+ end
8
+
9
+ class SuperAdmin < Rbac::Role::Base
10
+ end
11
+
12
+ def self.all
13
+ self.constants.select { |c| self.const_get(c).is_a? Class }.collect{ |klass| "#{self}::#{klass}"}.map(&:constantize).map(&:new)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  module Ecm
2
2
  module UserArea
3
- VERSION = "0.0.1.pre"
4
- end
3
+ VERSION = "1.0.0.pre"
4
+ end
5
5
  end
data/lib/ecm_user_area.rb CHANGED
@@ -1,13 +1,21 @@
1
1
  require 'devise'
2
2
  require 'devise-i18n'
3
+ require 'pundit'
3
4
  require 'simple_form'
4
5
 
5
6
  require 'ecm/user_area/engine'
6
7
  require 'ecm/user_area/configuration'
7
8
  require 'ecm/user_area/routing'
9
+ require 'ecm/user_area/roles'
10
+
11
+ require 'rbac/role/enumerator'
8
12
 
9
13
  module Ecm
10
14
  module UserArea
11
15
  extend Configuration
16
+
17
+ def self.roles
18
+ Roles.all
19
+ end
12
20
  end
13
21
  end
@@ -1,3 +1,3 @@
1
1
  Ecm::UserArea.configure do |config|
2
- # config.foo = :bar
2
+ config.disable_registrations = false
3
3
  end
@@ -0,0 +1,27 @@
1
+ module Rbac
2
+ module Role
3
+ class Base
4
+ def namespace
5
+ self.class.to_s.deconstantize.underscore.gsub("/roles", "")
6
+ end
7
+
8
+ def identifier
9
+ self.class.to_s.demodulize.underscore
10
+ end
11
+
12
+ def name
13
+ I18n.t("#{i18n_namespace}.name")
14
+ end
15
+
16
+ def description
17
+ I18n.t("#{i18n_namespace}.description")
18
+ end
19
+
20
+ private
21
+
22
+ def i18n_namespace
23
+ self.class.to_s.underscore.gsub("/", ".")
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,16 @@
1
+ module Rbac
2
+ module Role
3
+ class Enumerator
4
+ def self.call
5
+ self.new.call
6
+ end
7
+
8
+ def call
9
+ Rails::Engine.subclasses.sort { |a, b| a.to_s <=> b.to_s }.collect do |engine|
10
+ namespace = engine.to_s.gsub('::Engine', '').constantize
11
+ namespace.roles if namespace.respond_to?(:roles)
12
+ end.flatten.reject(&:blank?)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ module Rbac
2
+ class RoleEnumerator
3
+ def self.call
4
+ self.new.call
5
+ end
6
+
7
+ def call
8
+ Rails::Engine.subclasses.sort { |a, b| a.to_s <=> b.to_s }.collect do |engine|
9
+ namespace = engine.to_s.gsub('::Engine', '').constantize
10
+ namespace.roles if namespace.respond_to?(:roles)
11
+ end.flatten
12
+ end
13
+ end
14
+ end
@@ -1,4 +1,6 @@
1
- # desc "Explaining what the task does"
2
- # task :ecm_user_area do
3
- # # Task goes here
4
- # end
1
+ namespace :ecm_user_area do
2
+ desc "Creates missing roles from engines"
3
+ task :collect_roles => :environment do |t, args|
4
+ Ecm::UserArea::RoleCollector.call
5
+ end
6
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecm_user_area
3
3
  version: !ruby/object:Gem::Version
4
- hash: 961915968
4
+ hash: 961915988
5
5
  prerelease: 6
6
6
  segments:
7
+ - 1
7
8
  - 0
8
9
  - 0
9
- - 1
10
10
  - pre
11
- version: 0.0.1.pre
11
+ version: 1.0.0.pre
12
12
  platform: ruby
13
13
  authors:
14
14
  - Roberto Vasquez Angel
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2013-04-09 00:00:00 Z
19
+ date: 2015-01-07 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: rails
@@ -77,7 +77,7 @@ dependencies:
77
77
  type: :runtime
78
78
  version_requirements: *id004
79
79
  - !ruby/object:Gem::Dependency
80
- name: sqlite3
80
+ name: pundit
81
81
  prerelease: false
82
82
  requirement: &id005 !ruby/object:Gem::Requirement
83
83
  none: false
@@ -88,10 +88,10 @@ dependencies:
88
88
  segments:
89
89
  - 0
90
90
  version: "0"
91
- type: :development
91
+ type: :runtime
92
92
  version_requirements: *id005
93
93
  - !ruby/object:Gem::Dependency
94
- name: thin
94
+ name: sqlite3
95
95
  prerelease: false
96
96
  requirement: &id006 !ruby/object:Gem::Requirement
97
97
  none: false
@@ -105,7 +105,7 @@ dependencies:
105
105
  type: :development
106
106
  version_requirements: *id006
107
107
  - !ruby/object:Gem::Dependency
108
- name: yard
108
+ name: thin
109
109
  prerelease: false
110
110
  requirement: &id007 !ruby/object:Gem::Requirement
111
111
  none: false
@@ -119,7 +119,7 @@ dependencies:
119
119
  type: :development
120
120
  version_requirements: *id007
121
121
  - !ruby/object:Gem::Dependency
122
- name: activeadmin
122
+ name: yard
123
123
  prerelease: false
124
124
  requirement: &id008 !ruby/object:Gem::Requirement
125
125
  none: false
@@ -133,7 +133,7 @@ dependencies:
133
133
  type: :development
134
134
  version_requirements: *id008
135
135
  - !ruby/object:Gem::Dependency
136
- name: sass-rails
136
+ name: activeadmin
137
137
  prerelease: false
138
138
  requirement: &id009 !ruby/object:Gem::Requirement
139
139
  none: false
@@ -147,7 +147,7 @@ dependencies:
147
147
  type: :development
148
148
  version_requirements: *id009
149
149
  - !ruby/object:Gem::Dependency
150
- name: coffee-rails
150
+ name: sass-rails
151
151
  prerelease: false
152
152
  requirement: &id010 !ruby/object:Gem::Requirement
153
153
  none: false
@@ -161,7 +161,7 @@ dependencies:
161
161
  type: :development
162
162
  version_requirements: *id010
163
163
  - !ruby/object:Gem::Dependency
164
- name: i18n_routing
164
+ name: coffee-rails
165
165
  prerelease: false
166
166
  requirement: &id011 !ruby/object:Gem::Requirement
167
167
  none: false
@@ -175,7 +175,7 @@ dependencies:
175
175
  type: :development
176
176
  version_requirements: *id011
177
177
  - !ruby/object:Gem::Dependency
178
- name: therubyracer
178
+ name: i18n_routing
179
179
  prerelease: false
180
180
  requirement: &id012 !ruby/object:Gem::Requirement
181
181
  none: false
@@ -189,7 +189,7 @@ dependencies:
189
189
  type: :development
190
190
  version_requirements: *id012
191
191
  - !ruby/object:Gem::Dependency
192
- name: less-rails
192
+ name: therubyracer
193
193
  prerelease: false
194
194
  requirement: &id013 !ruby/object:Gem::Requirement
195
195
  none: false
@@ -203,7 +203,7 @@ dependencies:
203
203
  type: :development
204
204
  version_requirements: *id013
205
205
  - !ruby/object:Gem::Dependency
206
- name: twitter-bootstrap-rails
206
+ name: less-rails
207
207
  prerelease: false
208
208
  requirement: &id014 !ruby/object:Gem::Requirement
209
209
  none: false
@@ -217,7 +217,7 @@ dependencies:
217
217
  type: :development
218
218
  version_requirements: *id014
219
219
  - !ruby/object:Gem::Dependency
220
- name: localeapp
220
+ name: twitter-bootstrap-rails
221
221
  prerelease: false
222
222
  requirement: &id015 !ruby/object:Gem::Requirement
223
223
  none: false
@@ -231,7 +231,7 @@ dependencies:
231
231
  type: :development
232
232
  version_requirements: *id015
233
233
  - !ruby/object:Gem::Dependency
234
- name: capybara
234
+ name: localeapp
235
235
  prerelease: false
236
236
  requirement: &id016 !ruby/object:Gem::Requirement
237
237
  none: false
@@ -245,9 +245,23 @@ dependencies:
245
245
  type: :development
246
246
  version_requirements: *id016
247
247
  - !ruby/object:Gem::Dependency
248
- name: rspec-rails
248
+ name: capybara
249
249
  prerelease: false
250
250
  requirement: &id017 !ruby/object:Gem::Requirement
251
+ none: false
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ hash: 3
256
+ segments:
257
+ - 0
258
+ version: "0"
259
+ type: :development
260
+ version_requirements: *id017
261
+ - !ruby/object:Gem::Dependency
262
+ name: rspec-rails
263
+ prerelease: false
264
+ requirement: &id018 !ruby/object:Gem::Requirement
251
265
  none: false
252
266
  requirements:
253
267
  - - ~>
@@ -258,11 +272,11 @@ dependencies:
258
272
  - 0
259
273
  version: "2.0"
260
274
  type: :development
261
- version_requirements: *id017
275
+ version_requirements: *id018
262
276
  - !ruby/object:Gem::Dependency
263
277
  name: shoulda-matchers
264
278
  prerelease: false
265
- requirement: &id018 !ruby/object:Gem::Requirement
279
+ requirement: &id019 !ruby/object:Gem::Requirement
266
280
  none: false
267
281
  requirements:
268
282
  - - ">="
@@ -272,11 +286,11 @@ dependencies:
272
286
  - 0
273
287
  version: "0"
274
288
  type: :development
275
- version_requirements: *id018
289
+ version_requirements: *id019
276
290
  - !ruby/object:Gem::Dependency
277
291
  name: factory_girl_rails
278
292
  prerelease: false
279
- requirement: &id019 !ruby/object:Gem::Requirement
293
+ requirement: &id020 !ruby/object:Gem::Requirement
280
294
  none: false
281
295
  requirements:
282
296
  - - ~>
@@ -287,11 +301,11 @@ dependencies:
287
301
  - 0
288
302
  version: "1.0"
289
303
  type: :development
290
- version_requirements: *id019
304
+ version_requirements: *id020
291
305
  - !ruby/object:Gem::Dependency
292
306
  name: guard-rails
293
307
  prerelease: false
294
- requirement: &id020 !ruby/object:Gem::Requirement
308
+ requirement: &id021 !ruby/object:Gem::Requirement
295
309
  none: false
296
310
  requirements:
297
311
  - - ">="
@@ -301,11 +315,11 @@ dependencies:
301
315
  - 0
302
316
  version: "0"
303
317
  type: :development
304
- version_requirements: *id020
318
+ version_requirements: *id021
305
319
  - !ruby/object:Gem::Dependency
306
320
  name: rb-inotify
307
321
  prerelease: false
308
- requirement: &id021 !ruby/object:Gem::Requirement
322
+ requirement: &id022 !ruby/object:Gem::Requirement
309
323
  none: false
310
324
  requirements:
311
325
  - - ~>
@@ -316,11 +330,11 @@ dependencies:
316
330
  - 9
317
331
  version: "0.9"
318
332
  type: :development
319
- version_requirements: *id021
333
+ version_requirements: *id022
320
334
  - !ruby/object:Gem::Dependency
321
335
  name: guard-rspec
322
336
  prerelease: false
323
- requirement: &id022 !ruby/object:Gem::Requirement
337
+ requirement: &id023 !ruby/object:Gem::Requirement
324
338
  none: false
325
339
  requirements:
326
340
  - - ">="
@@ -330,11 +344,11 @@ dependencies:
330
344
  - 0
331
345
  version: "0"
332
346
  type: :development
333
- version_requirements: *id022
347
+ version_requirements: *id023
334
348
  - !ruby/object:Gem::Dependency
335
349
  name: guard-bundler
336
350
  prerelease: false
337
- requirement: &id023 !ruby/object:Gem::Requirement
351
+ requirement: &id024 !ruby/object:Gem::Requirement
338
352
  none: false
339
353
  requirements:
340
354
  - - ">="
@@ -344,7 +358,7 @@ dependencies:
344
358
  - 0
345
359
  version: "0"
346
360
  type: :development
347
- version_requirements: *id023
361
+ version_requirements: *id024
348
362
  description: ECM User Area.
349
363
  email:
350
364
  - roberto@vasquez-angel.de
@@ -385,16 +399,27 @@ files:
385
399
  - app/views/ecm/user_area/shared/_links.de.erb
386
400
  - app/mailers/ecm/user_area/mailer.rb
387
401
  - app/models/user.rb
402
+ - app/models/role.rb
403
+ - app/models/user_role.rb
388
404
  - app/admin/users.rb
405
+ - app/admin/roles.rb
406
+ - app/admin/user_roles.rb
407
+ - app/services/ecm/user_area/role_collector.rb
389
408
  - config/locales/de.yml
390
409
  - config/locales/en.yml
391
410
  - db/migrate/001_devise_create_users.rb
411
+ - db/migrate/002_create_roles.rb
412
+ - db/migrate/003_create_user_roles.rb
413
+ - lib/rbac/role/base.rb
414
+ - lib/rbac/role/enumerator.rb
415
+ - lib/rbac/role_enumerator.rb
392
416
  - lib/generators/ecm/user_area/locales/locales_generator.rb
393
417
  - lib/generators/ecm/user_area/install/install_generator.rb
394
418
  - lib/generators/ecm/user_area/install/templates/ecm_user_area.rb
395
419
  - lib/tasks/ecm_user_area_tasks.rake
396
420
  - lib/ecm_user_area.rb
397
421
  - lib/ecm/user_area/engine.rb
422
+ - lib/ecm/user_area/roles.rb
398
423
  - lib/ecm/user_area/version.rb
399
424
  - lib/ecm/user_area/routing.rb
400
425
  - lib/ecm/user_area/configuration.rb