authengine 0.0.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.
Files changed (155) hide show
  1. data/.gitignore +10 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +4 -0
  4. data/README.md +86 -0
  5. data/Rakefile +31 -0
  6. data/app/assets/images/message_block/back.gif +0 -0
  7. data/app/assets/images/message_block/back_m.gif +0 -0
  8. data/app/assets/images/message_block/confirmation.gif +0 -0
  9. data/app/assets/images/message_block/confirmation_m.gif +0 -0
  10. data/app/assets/images/message_block/error.gif +0 -0
  11. data/app/assets/images/message_block/error_m.gif +0 -0
  12. data/app/assets/images/message_block/info.gif +0 -0
  13. data/app/assets/images/message_block/info_m.gif +0 -0
  14. data/app/assets/images/message_block/notice.gif +0 -0
  15. data/app/assets/images/message_block/notice_m.gif +0 -0
  16. data/app/assets/images/message_block/warn.gif +0 -0
  17. data/app/assets/images/message_block/warn_m.gif +0 -0
  18. data/app/assets/stylesheets/authengine.css +3 -0
  19. data/app/assets/stylesheets/message_block.css +45 -0
  20. data/app/controllers/authengine/accounts_controller.rb +56 -0
  21. data/app/controllers/authengine/action_roles_controller.rb +22 -0
  22. data/app/controllers/authengine/actions_controller.rb +17 -0
  23. data/app/controllers/authengine/roles_controller.rb +35 -0
  24. data/app/controllers/authengine/sessions_controller.rb +75 -0
  25. data/app/controllers/authengine/user_roles_controller.rb +55 -0
  26. data/app/controllers/authengine/useractions_controller.rb +17 -0
  27. data/app/controllers/authengine/users_controller.rb +137 -0
  28. data/app/helpers/application_helper.rb +2 -0
  29. data/app/helpers/authengine/users_helper.rb +11 -0
  30. data/app/helpers/roles_helper.rb +2 -0
  31. data/app/mailers/authengine/user_mailer.rb +53 -0
  32. data/app/models/action.rb +54 -0
  33. data/app/models/action_role.rb +29 -0
  34. data/app/models/authenticated_system.rb +179 -0
  35. data/app/models/authorized_system.rb +41 -0
  36. data/app/models/controller.rb +124 -0
  37. data/app/models/role.rb +71 -0
  38. data/app/models/session.rb +3 -0
  39. data/app/models/session_role.rb +17 -0
  40. data/app/models/user.rb +191 -0
  41. data/app/models/user_observer.rb +14 -0
  42. data/app/models/user_role.rb +4 -0
  43. data/app/models/useraction.rb +56 -0
  44. data/app/views/authengine/accounts/edit.html.erb +19 -0
  45. data/app/views/authengine/actions/create.html.erb +2 -0
  46. data/app/views/authengine/actions/destroy.html.erb +2 -0
  47. data/app/views/authengine/actions/edit.html.erb +80 -0
  48. data/app/views/authengine/actions/index.html.haml +26 -0
  49. data/app/views/authengine/actions/new.html.erb +2 -0
  50. data/app/views/authengine/actions/show.html.erb +8 -0
  51. data/app/views/authengine/actions/update.html.erb +11 -0
  52. data/app/views/authengine/admin/_show.html.haml +5 -0
  53. data/app/views/authengine/layouts/authengine.html.haml +9 -0
  54. data/app/views/authengine/roles/index.html.haml +12 -0
  55. data/app/views/authengine/roles/new.html.haml +15 -0
  56. data/app/views/authengine/roles/show.html.erb +8 -0
  57. data/app/views/authengine/sessions/new.html.haml +18 -0
  58. data/app/views/authengine/user_mailer/activation.html.erb +5 -0
  59. data/app/views/authengine/user_mailer/forgot_password.html.erb +3 -0
  60. data/app/views/authengine/user_mailer/message_to_admin.html.erb +2 -0
  61. data/app/views/authengine/user_mailer/reset_password.html.erb +1 -0
  62. data/app/views/authengine/user_mailer/signup_notification.html.erb +5 -0
  63. data/app/views/authengine/user_roles/edit.html.haml +10 -0
  64. data/app/views/authengine/user_roles/index.html.haml +14 -0
  65. data/app/views/authengine/user_roles/new.html.haml +8 -0
  66. data/app/views/authengine/useractions/_useraction.html.erb +6 -0
  67. data/app/views/authengine/useractions/index.html.erb +13 -0
  68. data/app/views/authengine/useractions/show.html.haml +14 -0
  69. data/app/views/authengine/useractions/update.html.erb +2 -0
  70. data/app/views/authengine/users/_no_privacy_policy.html.haml +1 -0
  71. data/app/views/authengine/users/_privacy_policy_example.html.haml +36 -0
  72. data/app/views/authengine/users/_user.html.haml +19 -0
  73. data/app/views/authengine/users/edit.html.haml +24 -0
  74. data/app/views/authengine/users/index.html.haml +10 -0
  75. data/app/views/authengine/users/new.html.haml +31 -0
  76. data/app/views/authengine/users/show.html.haml +19 -0
  77. data/app/views/authengine/users/signup.html.haml +52 -0
  78. data/authengine.gemspec +44 -0
  79. data/config/application.rb +1 -0
  80. data/config/routes.rb +43 -0
  81. data/db/migrate/20110320171029_create_authengine_tables.rb +90 -0
  82. data/db/migrate/20110924165900_add_parent_id_to_roles_table.rb +5 -0
  83. data/db/migrate/20110925202800_add_type_field_to_user_roles_table.rb +5 -0
  84. data/db/migrate/20111003074700_add_indexes_to_several_tables.rb +7 -0
  85. data/db/seeds.rb +7 -0
  86. data/lib/application_helper.rb +19 -0
  87. data/lib/authengine.rb +5 -0
  88. data/lib/authengine/engine.rb +44 -0
  89. data/lib/authengine/testing_support/factories/user_factory.rb +13 -0
  90. data/lib/authengine/version.rb +3 -0
  91. data/lib/rails/generators/authengine/authengine_generator.rb +160 -0
  92. data/lib/rails/generators/authengine/templates/initializer.rb +3 -0
  93. data/lib/rails/generators/authengine/templates/migration.rb +16 -0
  94. data/lib/rails/generators/authengine/templates/pre_populate_database.rb +20 -0
  95. data/lib/rails/generators/authengine/templates/schema.rb +69 -0
  96. data/lib/tasks/bootstrap.rake +29 -0
  97. data/spec/authengine_spec.rb +7 -0
  98. data/spec/dummy/.rspec +1 -0
  99. data/spec/dummy/Gemfile +3 -0
  100. data/spec/dummy/Rakefile +8 -0
  101. data/spec/dummy/app/assets/javascripts/jasmine_examples/Player.js +22 -0
  102. data/spec/dummy/app/assets/javascripts/jasmine_examples/Song.js +7 -0
  103. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  104. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  105. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  106. data/spec/dummy/config.ru +4 -0
  107. data/spec/dummy/config/application.rb +50 -0
  108. data/spec/dummy/config/boot.rb +10 -0
  109. data/spec/dummy/config/database.yml +22 -0
  110. data/spec/dummy/config/environment.rb +5 -0
  111. data/spec/dummy/config/environments/development.rb +26 -0
  112. data/spec/dummy/config/environments/production.rb +49 -0
  113. data/spec/dummy/config/environments/test.rb +35 -0
  114. data/spec/dummy/config/initializers/application.rb +1 -0
  115. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  116. data/spec/dummy/config/initializers/inflections.rb +10 -0
  117. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  118. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  119. data/spec/dummy/config/initializers/session_store.rb +8 -0
  120. data/spec/dummy/config/locales/en.yml +5 -0
  121. data/spec/dummy/config/routes.rb +3 -0
  122. data/spec/dummy/db/development.sqlite3 +0 -0
  123. data/spec/dummy/db/schema.rb +87 -0
  124. data/spec/dummy/lib/constants.rb +5 -0
  125. data/spec/dummy/log/development.log +117 -0
  126. data/spec/dummy/log/production.log +0 -0
  127. data/spec/dummy/log/server.log +0 -0
  128. data/spec/dummy/public/404.html +26 -0
  129. data/spec/dummy/public/422.html +26 -0
  130. data/spec/dummy/public/500.html +26 -0
  131. data/spec/dummy/public/favicon.ico +0 -0
  132. data/spec/dummy/public/javascripts/application.js +2 -0
  133. data/spec/dummy/public/javascripts/controls.js +965 -0
  134. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  135. data/spec/dummy/public/javascripts/effects.js +1123 -0
  136. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  137. data/spec/dummy/public/javascripts/rails.js +191 -0
  138. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  139. data/spec/dummy/script/rails +6 -0
  140. data/spec/dummy/spec/javascripts/helpers/.gitkeep +0 -0
  141. data/spec/dummy/spec/javascripts/helpers/SpecHelper.js +9 -0
  142. data/spec/dummy/spec/javascripts/jasmine_examples/PlayerSpec.js +58 -0
  143. data/spec/dummy/spec/javascripts/support/jasmine.yml +76 -0
  144. data/spec/generators/authengine_generator_spec.rb +11 -0
  145. data/spec/integration/navigation_spec.rb +9 -0
  146. data/spec/javascripts/spec.css +3 -0
  147. data/spec/javascripts/spec.js.coffee +2 -0
  148. data/spec/models/action_role_spec.rb +59 -0
  149. data/spec/models/authenticated_system_spec.rb +109 -0
  150. data/spec/models/role_spec.rb +38 -0
  151. data/spec/models/user_factory_spec.rb +7 -0
  152. data/spec/models/user_spec.rb +16 -0
  153. data/spec/requests/sessions_spec.rb +11 -0
  154. data/spec/spec_helper.rb +57 -0
  155. metadata +405 -0
@@ -0,0 +1,14 @@
1
+ class UserObserver < ActiveRecord::Observer
2
+ def after_create(user)
3
+ Authengine::UserMailer.signup_notification(user).deliver
4
+ end
5
+
6
+ def after_save(user)
7
+ # the next line causes deprecation warnings in
8
+ # actionmailer/lib/actionmailer/adv_attr_accessor.rb
9
+ # this could become fatal when the deprecated methods are removed
10
+ Authengine::UserMailer.activation(user).deliver if user.pending? # pending? true if user is activated
11
+ Authengine::UserMailer.forgot_password(user).deliver if user.recently_forgot_password?
12
+ Authengine::UserMailer.reset_password(user).deliver if user.recently_reset_password?
13
+ end
14
+ end
@@ -0,0 +1,4 @@
1
+ class UserRole < ActiveRecord::Base
2
+ belongs_to :user
3
+ belongs_to :role
4
+ end
@@ -0,0 +1,56 @@
1
+ class Useraction < ActiveRecord::Base
2
+ belongs_to :user
3
+ belongs_to :action
4
+
5
+ delegate :lastName, :to => :user, :prefix => true
6
+ scope :expired, :conditions => ['updated_at < ?',Time.zone.now.advance(:hours => -24)]
7
+
8
+ def self.create(params)
9
+ self.name.constantize.send(:expired).each { |u| u.destroy }
10
+ super
11
+ end
12
+
13
+ def self.current
14
+ eval("Useraction#{current_index}")
15
+ end
16
+
17
+ def self.date_range
18
+ t = Time.zone.now.to_date
19
+ t.advance(:days => -4) .. t
20
+ end
21
+
22
+ # if current index = 2
23
+ # i days before today
24
+ # 0 2
25
+ # 1 1
26
+ # 2 0
27
+ # 3 4
28
+ # 4 3
29
+ def self.date_of_index(i)
30
+ Time.zone.now.to_date.advance(:days => -((current_index - i)%5))
31
+ end
32
+
33
+ def params_truncated
34
+ # because some requests, especially the "actions" controller, produce huge params fields, with little value
35
+ # so we display a truncated version only (but full params are stored
36
+ # in the db, available for display if necessary).
37
+ if params.to_s.size > 80
38
+ p = params.to_s[0..80]+" ...more"
39
+ else
40
+ p = params.to_s
41
+ end
42
+ p.gsub(/^\{|\}$/,"") # remove start/end braces
43
+ end
44
+
45
+ private
46
+
47
+ def self.current_index
48
+ (Time.zone.now.to_datetime - Date.new(2011,1,1)).to_i.%5
49
+ end
50
+ end
51
+
52
+ class Useraction0 < Useraction; end
53
+ class Useraction1 < Useraction; end
54
+ class Useraction2 < Useraction; end
55
+ class Useraction3 < Useraction; end
56
+ class Useraction4 < Useraction; end
@@ -0,0 +1,19 @@
1
+ <% form_tag user_account_path(current_user), :method => :put do %>
2
+ <p><label for="old_password" class="block">Old Password</label><br />
3
+ <%= password_field_tag 'old_password', @old_password, :size => 45 %></p>
4
+
5
+ <p><label for="password" class="block">New Password</label><br />
6
+ <%= password_field_tag 'password', {}, :size => 45 %><br />
7
+ <small>Between 4 and 40 characters</small></p>
8
+
9
+ <p><label for="password_confirmation" class="block">Confirm new password</label><br />
10
+ <%= password_field_tag 'password_confirmation', {}, :size => 45 %></p>
11
+
12
+ <%= submit_tag 'Change password' %>
13
+ <br/>
14
+ <p><%= link_to("Cancel", :controller=>session[:referer][:controller], :action=>session[:referer][:action])%></p>
15
+
16
+ <% end %>
17
+ <script type='text/javascript'>
18
+ document.getElementById('old_password').focus()
19
+ </script>
@@ -0,0 +1,2 @@
1
+ <h1>Actions#create</h1>
2
+ <p>Find me in app/views/actions/create.html.erb</p>
@@ -0,0 +1,2 @@
1
+ <h1>Actions#destroy</h1>
2
+ <p>Find me in app/views/actions/destroy.html.erb</p>
@@ -0,0 +1,80 @@
1
+ <h1>Edit role</h1>
2
+
3
+ <%= error_messages_for :role %>
4
+
5
+ <% form_for(@role) do |f| %>
6
+ <table>
7
+ <tr><td>Name:</td><td colspan="3"><%= f.text_field :name %></td></tr>
8
+ <tr><td>Manage DB Users:</td>
9
+ <td> <%= f.label :read %>
10
+ <%= radio_button('role', 'manageDbUsers', 'read') %>
11
+ </td>
12
+ <td> <%= f.label :write %>
13
+ <%= radio_button('role', 'manageDbUsers', 'write') %>
14
+ </td>
15
+ <td> <%= f.label :none %>
16
+ <%= radio_button('role', 'manageDbUsers', 'none') %>
17
+ </td>
18
+ </tr>
19
+ <tr><td>Manage Students:</td>
20
+ <td> <%= f.label :read %>
21
+ <%= radio_button('role', 'manageStudents', 'read') %>
22
+ </td>
23
+ <td> <%= f.label :write %>
24
+ <%= radio_button('role', 'manageStudents', 'write') %>
25
+ </td>
26
+ <td> <%= f.label :none %>
27
+ <%= radio_button('role', 'manageStudents', 'none') %>
28
+ </td>
29
+ </tr>
30
+ <tr><td>Manage Self:</td>
31
+ <td> <%= f.label :read %>
32
+ <%= radio_button('role', 'manageSelf', 'read') %>
33
+ </td>
34
+ <td> <%= f.label :write %>
35
+ <%= radio_button('role', 'manageSelf', 'write') %>
36
+ </td>
37
+ <td> <%= f.label :none %>
38
+ <%= radio_button('role', 'manageSelf', 'none') %>
39
+ </td>
40
+ </tr>
41
+ <tr><td>Manage Queries:</td>
42
+ <td> <%= f.label :read %>
43
+ <%= radio_button('role', 'manageQueries', 'read') %>
44
+ </td>
45
+ <td> <%= f.label :write %>
46
+ <%= radio_button('role', 'manageQueries', 'write') %>
47
+ </td>
48
+ <td> <%= f.label :none %>
49
+ <%= radio_button('role', 'manageQueries', 'none') %>
50
+ </td>
51
+ </tr>
52
+ <tr><td>Manage Roles:</td>
53
+ <td> <%= f.label :read %>
54
+ <%= radio_button('role', 'manageRoles', 'read') %>
55
+ </td>
56
+ <td> <%= f.label :write %>
57
+ <%= radio_button('role', 'manageRoles', 'write') %>
58
+ </td>
59
+ <td> <%= f.label :none %>
60
+ <%= radio_button('role', 'manageRoles', 'none') %>
61
+ </td>
62
+ </tr>
63
+ <tr><td>Manage Translations:</td>
64
+ <td> <%= f.label :read %>
65
+ <%= radio_button('role', 'manageTranslations', 'read') %>
66
+ </td>
67
+ <td> <%= f.label :write %>
68
+ <%= radio_button('role', 'manageTranslations', 'write') %>
69
+ </td>
70
+ <td> <%= f.label :none %>
71
+ <%= radio_button('role', 'manageTranslations', 'none') %>
72
+ </td>
73
+ </tr>
74
+ </table>
75
+ <p>
76
+ <%= f.submit "Update" %>
77
+ </p>
78
+ <% end %>
79
+ <%= link_to 'Show', @role %> |
80
+ <%= link_to 'Back', roles_path %>
@@ -0,0 +1,26 @@
1
+ %h1 Configure Permissions for Roles
2
+ = form_tag update_all_authengine_action_roles_path,:method => :put do
3
+ %table{:style=>"width:780px"}
4
+ %tr
5
+ %th{:style=>"width:200px"}
6
+ Controller
7
+ %th{:style=>"width:125px"}
8
+ Action
9
+ - for role in @roles do
10
+ %th{:style=>"width:70px"}
11
+ = role
12
+
13
+ %div{:style=>"height:400px; width:1000px; margin-r:0px; overflow:auto"}
14
+ %table{:style=>"width:780px"}
15
+ - for action in @actions do
16
+ %tr{:class=>"#{cycle('odd', 'even')}"}
17
+ %td{:style=>"width:200px"}
18
+ = action.controller_name
19
+ %td{:style=>"width:125px"}
20
+ = action.action_name
21
+ - for role in @roles do
22
+ %td{:style=>"width:70px"}
23
+ %input{:name=>"permission[#{role.id}][#{action.id}]" , :type=>"hidden", :value=>'0'}
24
+ = check_box_tag("permission[#{role.id}][#{action.id}]", "1", @allowed[role.id].include?(action.id) )
25
+
26
+ = submit_tag 'Save'
@@ -0,0 +1,2 @@
1
+ <h1>Actions#new</h1>
2
+ <p>Find me in app/views/actions/new.html.erb</p>
@@ -0,0 +1,8 @@
1
+ <p>
2
+ <b>Name:</b>
3
+ <%=h @role.name %>
4
+ </p>
5
+
6
+
7
+ <%= link_to 'Edit', edit_role_path(@role) %> |
8
+ <%= link_to 'Back', roles_path %>
@@ -0,0 +1,11 @@
1
+ <h1>Update Actions</h1>
2
+ <% params[:permission].each do |role, permissions| %>
3
+ <%= "role name: #{role}):" %><br/>
4
+ <% permissions.each do |controller, actions|%>
5
+ <%= "controller: #{controller}," %><br/>
6
+ <% actions.each do |action_name, val|%>
7
+ <%= "action #{action_name}" %><br/>
8
+ <% end %>
9
+ <% end %>
10
+ <br/>
11
+ <% end %>
@@ -0,0 +1,5 @@
1
+ %ul
2
+ %li= link_to "Manage users", authengine_users_path
3
+ %li= link_to "Manage access roles", authengine_roles_path
4
+ %li= link_to "Manage access", authengine_actions_path
5
+ %li= link_to "Restrict access for the current session", edit_authengine_user_user_roles_path(current_user)
@@ -0,0 +1,9 @@
1
+ - content_for :authengine do
2
+ = yield
3
+
4
+ - content_for :head do
5
+ - if Rails.env.test?
6
+ %script
7
+ confirm = function(){ return true; }; alert = function() { return true; };
8
+
9
+ = render :file => 'layouts/application'
@@ -0,0 +1,12 @@
1
+ = message_block :on => :role
2
+ %h1 Edit roles
3
+ %table{:cellspacing =>'0', :cellpadding => '4'}
4
+ %tr
5
+ %th Role
6
+ - for role in @all_roles
7
+ %tr
8
+ %td= role.name
9
+ %td= (link_to "Remove", authengine_role_path(role), :method => :delete) unless role.is_developer?
10
+
11
+ %p= link_to 'Add new role', :controller=>:roles, :action=>:new
12
+ %p= link_to "Cancel", admin_index_path
@@ -0,0 +1,15 @@
1
+ = message_block :on => :role
2
+ %h1 Add role
3
+
4
+ = form_for @role, :url => authengine_roles_path do |f|
5
+ %table
6
+ %tr
7
+ %td
8
+ %label{:for => :name} Name:
9
+ %td{:colspan=>"3"}= f.text_field :name, :autocomplete => 'off'
10
+ %tr
11
+ %td= f.label(:parent_id, "Parent:")
12
+ %td{:colspan=>"3"}= f.select :parent_id, @roles.collect{|r| [r.name, r.id]}
13
+ - submit_or_return_to authengine_roles_path
14
+
15
+ -focus('role_name')
@@ -0,0 +1,8 @@
1
+ <p>
2
+ <b>Name:</b>
3
+ <%=h @role.name %>
4
+ </p>
5
+
6
+
7
+ <%= link_to 'Edit', edit_role_path(@role) %> |
8
+ <%= link_to 'Back', roles_path %>
@@ -0,0 +1,18 @@
1
+ - focus('login')
2
+ = message_block
3
+ - unless logged_in?
4
+ %h1 Please log in
5
+ =form_tag authengine_sessions_path do
6
+ %table
7
+ %tr
8
+ %td User name:
9
+ %td
10
+ =text_field_tag "login"
11
+ %tr
12
+ %td Password
13
+ %td
14
+ =password_field_tag "password"
15
+ %tr
16
+ %td
17
+ = submit_tag 'Log in...'
18
+ %td
@@ -0,0 +1,5 @@
1
+ <p><%=h @user.firstName %> <%=h @user.lastName %>,</p>
2
+ <p>your <%= APPLICATION_NAME || "database" %> access account has been activated. To visit the site, follow the link below:</p>
3
+ <p><%= @url %></p>
4
+ <p>Please respect the confidentiality of the information in the database. Never share your username or password with anyone.</p>
5
+ <p><%= APPLICATION_NAME || "database" %> administrator</p>
@@ -0,0 +1,3 @@
1
+ <%=h @user.login %>, to reset your password, please visit
2
+
3
+ <%= @url %>
@@ -0,0 +1,2 @@
1
+ The following message was sent from a user:
2
+ <%= @body %>
@@ -0,0 +1 @@
1
+ <%=h @user.login %>, Your password has been reset
@@ -0,0 +1,5 @@
1
+ <p><%=h @user.firstName %> <%=h @user.lastName %></p>
2
+ <p>An account has been created so that you can access the <%= APPLICATION_NAME || "database" %>.</p>
3
+ <p>Please click <a href='<%= @url %>'>here</a> to activate your account.</p>
4
+ <p>You will be asked to select a login name and password.</p>
5
+ <p><%= APPLICATION_NAME || "database" %> administrator</p>
@@ -0,0 +1,10 @@
1
+ = message_block
2
+
3
+ %h1 Select new temporary access role for this session
4
+
5
+ = form_for @user_role, :url => authengine_user_user_roles_path(current_user), :method => :put do |f|
6
+ %table
7
+ %tr
8
+ %td= f.label :role_id, "New role"
9
+ %td= f.select :role_id, @roles.collect{|r| [r.name, r.id]}
10
+ - submit_or_return_to admin_index_path
@@ -0,0 +1,14 @@
1
+ %h2 Roles for #{@user.first_last_name}
2
+ %h3 Roles assigned:
3
+ %ul#assigned_roles
4
+ - for role in @user.user_roles.map(&:role)
5
+ %li #{role.name} [ #{link_to "remove role", authengine_user_user_role_path(@user,role), :method => :delete} ]
6
+
7
+ %h3 Roles available:
8
+ %ul#available_roles
9
+ - for role in (@all_roles - @user.user_roles.map(&:role))
10
+ = form_for @user_role, :url => authengine_user_user_roles_path(@user), :method => :post do |f|
11
+ = hidden_field :user_role, :role_id, :value => role.id
12
+ %li #{role.name} [ #{ link_to "assign role", "#", :onclick => "$(this).closest('form').submit()"} ]
13
+
14
+ %p= link_to "Back", authengine_users_path
@@ -0,0 +1,8 @@
1
+ %h1 Select new access role
2
+
3
+ = form_for @user_role, :url => authengine_user_user_roles_path(current_user), :method => :post do |f|
4
+ %table
5
+ %tr
6
+ %td= f.label :role_id, "New role"
7
+ %td= f.select :role_id, @roles.collect{|r| [r.name, r.id]}
8
+ - submit_or_return_to admin_index_path
@@ -0,0 +1,6 @@
1
+ <tr>
2
+ <td><%= useraction.created_at.to_formatted_s(:log_format) %></td>
3
+ <td><%= useraction.user.first_last_name %></td>
4
+ <td><%= (useraction.action.controller_name+"/"+useraction.action.action_name) unless !useraction.action %></td>
5
+ <td><%= useraction.params_truncated %></td>
6
+ </tr>
@@ -0,0 +1,13 @@
1
+ <h1>User activity logs</h1>
2
+ <table>
3
+ <tr><th>Date</th></tr>
4
+ <% @dates.keys.sort.each do |date| %>
5
+ <tr><td><%= link_to date, :controller=>"useractions", :action=>:show, :actionlog_id=>@dates[date] %></td></tr>
6
+ <% end %>
7
+ </table>
8
+ <h1>Rails logs</h1>
9
+ <table>
10
+ <tr><td><%= if RAILS_ENV == 'production' then link_to 'Production log', '/rails_logs/show' else link_to 'Development log', '/rails_logs/show' end %></td></tr>
11
+ <tr><td><%= link_to 'Cron log', "/cron_logs/show" %></td></tr>
12
+ <tr><td><%= link_to 'Failed login log', "/failedlogin_logs/show" %></td></tr>
13
+ </table>
@@ -0,0 +1,14 @@
1
+ %h1 User activity log for #{ @date }
2
+ %script
3
+ var rank = #{ sort_map(@useractions, @sort_criteria) }
4
+ var rows = #{ table_rows(@useractions, 'useraction') }
5
+ var last_sort = "#{ @sort_criteria.first.to_s }"
6
+ %script{:src => '/javascripts/column_sort.js' }
7
+ %table#sortable
8
+ %tr
9
+ %th
10
+ - js_sort("Time(GMT)",'created_at')
11
+ %th
12
+ - js_sort("User",'user_lastName')
13
+ %th Controller/Action
14
+ %th Parameters
@@ -0,0 +1,2 @@
1
+ <h1>Useractions#update</h1>
2
+ <p>Find me in app/views/useractions/update.html.erb</p>
@@ -0,0 +1 @@
1
+ %p= submit_tag 'Sign up'
@@ -0,0 +1,36 @@
1
+ #privacy_policy{:style=>"display:none; width:600px"}
2
+ %h2 Please read the #{APPLICATION_NAME || "database"} Privacy Policy and indicate your committment to comply by checking all the checkboxes
3
+ %p #{ORGANIZATION_NAME} Privacy Policy
4
+ %table
5
+ %tr
6
+ %td{:colspan=>"2"} As a condition of my being granted access to the #{APPLICATION_NAME || "database"}:
7
+ %tr{:valign => 'top'}
8
+ %td= check_box "user[cb]", :cb1
9
+ %td I agree to treat all client and donor data responsibly and to keep all information secure.
10
+ %tr{:valign => 'top'}
11
+ %td= check_box "user[cb]", :cb2
12
+ %td I understand that client data are private and confidential and that data should be accessed only in the course of my official duties for #{APPLICATION_NAME || "database"}.
13
+ %tr
14
+ %td{:colspan=>"2"} When working with the #{APPLICATION_NAME || "database"} and files, I will observe the following guidelines for handling confidential client data:
15
+ %tr{:valign => 'top'}
16
+ %td= check_box "user[cb]", :cb3
17
+ %td I will not discuss any client information or display it in an environment where it may be viewed or overheard by unauthorized individuals.
18
+ %tr{:valign => 'top'}
19
+ %td= check_box "user[cb]", :cb4
20
+ %td When using the #{APPLICATION_NAME || "database"}, I will log out of my session if I ever leave my computer for any length of time.
21
+ %tr{:valign => 'top'}
22
+ %td= check_box "user[cb]", :cb5
23
+ %td When printing, photocopying or faxing anything including client information, I will ensure that only authorized personnel will be able to see the output.
24
+ %tr{:valign => 'top'}
25
+ %td= check_box "user[cb]", :cb6
26
+ %td I will store all paper documents in the file cabinet in the #{APPLICATION_NAME || "database"} office and will ensure that the cabinet is only accessed by #{APPLICATION_NAME} personnel.
27
+ %tr{:valign => 'top'}
28
+ %td= check_box "user[cb]", :cb7
29
+ %td I will not, without the permission of the Executive Director, remove any client information from the #{APPLICATION_NAME || "database"} office, save it on removable media or my personal computer, or send this information via instant message or unsecured file transfer.
30
+ %tr{:valign => 'top'}
31
+ %td= check_box "user[cb]", :cb8
32
+ %td I recognize that violations of this policy are a serious matter that can result in the suspension of my access to the database and other disciplinary measures.
33
+ %tr{:valign => 'top'}
34
+ %td= check_box "user[cb]", :cb9
35
+ %td I understand that client information is private and confidential, and I will work to the best of my ability to preserve this privacy and confidentiality – and our clients’ trust – throughout my time with #{APPLICATION_NAME || "database"}.
36
+ %p= submit_tag 'Sign up'