authentasaurus 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +173 -0
  3. data/TODO +4 -0
  4. data/app/controllers/areas_controller.rb +4 -0
  5. data/app/controllers/groups_controller.rb +4 -0
  6. data/app/controllers/permissions_controller.rb +4 -0
  7. data/app/controllers/recoveries_controller.rb +2 -0
  8. data/app/controllers/registrations_controller.rb +2 -0
  9. data/app/controllers/sessions_controller.rb +2 -0
  10. data/app/controllers/user_invitations_controller.rb +4 -0
  11. data/app/controllers/users_controller.rb +4 -0
  12. data/app/controllers/validations_controller.rb +2 -0
  13. data/app/models/area.rb +2 -0
  14. data/app/models/authentasaurus_emailer.rb +2 -0
  15. data/app/models/group.rb +2 -0
  16. data/app/models/permission.rb +2 -0
  17. data/app/models/recovery.rb +2 -0
  18. data/app/models/session.rb +2 -0
  19. data/app/models/user.rb +3 -0
  20. data/app/models/user_invitation.rb +2 -0
  21. data/app/models/user_sync.rb +3 -0
  22. data/app/models/validation.rb +2 -0
  23. data/app/views/areas/edit.html.erb +7 -0
  24. data/app/views/areas/index.html.erb +11 -0
  25. data/app/views/areas/new.html.erb +7 -0
  26. data/app/views/areas/show.html.erb +7 -0
  27. data/app/views/authentasaurus_emailer/invitation_mail.html.erb +4 -0
  28. data/app/views/authentasaurus_emailer/recovery_mail.html.erb +7 -0
  29. data/app/views/authentasaurus_emailer/validation_mail.html.erb +6 -0
  30. data/app/views/groups/edit.html.erb +7 -0
  31. data/app/views/groups/index.html.erb +11 -0
  32. data/app/views/groups/new.html.erb +7 -0
  33. data/app/views/groups/show.html.erb +7 -0
  34. data/app/views/permissions/edit.html.erb +19 -0
  35. data/app/views/permissions/index.html.erb +17 -0
  36. data/app/views/permissions/new.html.erb +19 -0
  37. data/app/views/permissions/show.html.erb +7 -0
  38. data/app/views/recoveries/edit.html.erb +24 -0
  39. data/app/views/recoveries/new.html.erb +15 -0
  40. data/app/views/registrations/new.html.erb +21 -0
  41. data/app/views/sessions/new.html.erb +41 -0
  42. data/app/views/sessions/no_access.html.erb +1 -0
  43. data/app/views/user_invitations/index.html.erb +14 -0
  44. data/app/views/user_invitations/new.html.erb +9 -0
  45. data/app/views/users/edit.html.erb +27 -0
  46. data/app/views/users/index.html.erb +19 -0
  47. data/app/views/users/new.html.erb +27 -0
  48. data/app/views/users/show.html.erb +11 -0
  49. data/app/views/validations/activate.html.erb +6 -0
  50. data/app/views/validations/resend_validation_email.html.erb +6 -0
  51. data/config/locales/en.yml +34 -0
  52. data/generators/authentasaurus/USAGE +2 -0
  53. data/generators/authentasaurus/authentasaurus_generator.rb +9 -0
  54. data/generators/authentasaurus/templates/authentasaurus_tasks.rake +48 -0
  55. data/generators/authentasaurus/templates/defaults.yml +51 -0
  56. data/generators/authentasaurus/templates/initializer.rb +3 -0
  57. data/generators/authentasaurus_views/USAGE +12 -0
  58. data/generators/authentasaurus_views/authentasaurus_views_generator.rb +87 -0
  59. data/generators/authentasaurus_views/templates/views/areas/edit.html.erb +7 -0
  60. data/generators/authentasaurus_views/templates/views/areas/index.html.erb +11 -0
  61. data/generators/authentasaurus_views/templates/views/areas/new.html.erb +7 -0
  62. data/generators/authentasaurus_views/templates/views/areas/show.html.erb +7 -0
  63. data/generators/authentasaurus_views/templates/views/authentasaurus_emailer/invitation_mail.html.erb +4 -0
  64. data/generators/authentasaurus_views/templates/views/authentasaurus_emailer/recovery_mail.html.erb +7 -0
  65. data/generators/authentasaurus_views/templates/views/authentasaurus_emailer/validation_mail.html.erb +6 -0
  66. data/generators/authentasaurus_views/templates/views/groups/edit.html.erb +7 -0
  67. data/generators/authentasaurus_views/templates/views/groups/index.html.erb +11 -0
  68. data/generators/authentasaurus_views/templates/views/groups/new.html.erb +7 -0
  69. data/generators/authentasaurus_views/templates/views/groups/show.html.erb +7 -0
  70. data/generators/authentasaurus_views/templates/views/permissions/edit.html.erb +19 -0
  71. data/generators/authentasaurus_views/templates/views/permissions/index.html.erb +17 -0
  72. data/generators/authentasaurus_views/templates/views/permissions/new.html.erb +19 -0
  73. data/generators/authentasaurus_views/templates/views/permissions/show.html.erb +7 -0
  74. data/generators/authentasaurus_views/templates/views/recoveries/edit.html.erb +24 -0
  75. data/generators/authentasaurus_views/templates/views/recoveries/new.html.erb +15 -0
  76. data/generators/authentasaurus_views/templates/views/registrations/new.html.erb +21 -0
  77. data/generators/authentasaurus_views/templates/views/sessions/new.html.erb +41 -0
  78. data/generators/authentasaurus_views/templates/views/sessions/no_access.html.erb +1 -0
  79. data/generators/authentasaurus_views/templates/views/user_invitations/index.html.erb +14 -0
  80. data/generators/authentasaurus_views/templates/views/user_invitations/new.html.erb +9 -0
  81. data/generators/authentasaurus_views/templates/views/users/edit.html.erb +27 -0
  82. data/generators/authentasaurus_views/templates/views/users/index.html.erb +19 -0
  83. data/generators/authentasaurus_views/templates/views/users/new.html.erb +27 -0
  84. data/generators/authentasaurus_views/templates/views/users/show.html.erb +11 -0
  85. data/generators/authentasaurus_views/templates/views/validations/activate.html.erb +6 -0
  86. data/generators/authentasaurus_views/templates/views/validations/resend_validation_email.html.erb +6 -0
  87. data/lib/action_controller/authorization.rb +215 -0
  88. data/lib/action_view/authorization.rb +123 -0
  89. data/lib/active_record/acts_as_authenticatable.rb +80 -0
  90. data/lib/active_record/acts_as_authenticatable_validatable.rb +32 -0
  91. data/lib/active_record/authenticatable.rb +56 -0
  92. data/lib/active_resource/acts_as_authenticatable.rb +42 -0
  93. data/lib/active_resource/authenticatable.rb +22 -0
  94. data/lib/authentasaurus.rb +21 -0
  95. data/lib/authentasaurus/areas_controller.rb +71 -0
  96. data/lib/authentasaurus/authentasaurus_controller.rb +2 -0
  97. data/lib/authentasaurus/groups_controller.rb +73 -0
  98. data/lib/authentasaurus/models/area.rb +8 -0
  99. data/lib/authentasaurus/models/authentasaurus_emailer.rb +31 -0
  100. data/lib/authentasaurus/models/group.rb +8 -0
  101. data/lib/authentasaurus/models/permission.rb +9 -0
  102. data/lib/authentasaurus/models/recovery.rb +23 -0
  103. data/lib/authentasaurus/models/session.rb +63 -0
  104. data/lib/authentasaurus/models/user_invitation.rb +21 -0
  105. data/lib/authentasaurus/models/validation.rb +18 -0
  106. data/lib/authentasaurus/permissions_controller.rb +71 -0
  107. data/lib/authentasaurus/recoveries_controller.rb +59 -0
  108. data/lib/authentasaurus/registrations_controller.rb +32 -0
  109. data/lib/authentasaurus/sessions_controller.rb +45 -0
  110. data/lib/authentasaurus/user_invitations_controller.rb +39 -0
  111. data/lib/authentasaurus/users_controller.rb +71 -0
  112. data/lib/authentasaurus/validations_controller.rb +34 -0
  113. data/lib/helpers/migrations.rb +171 -0
  114. data/lib/helpers/routing.rb +90 -0
  115. data/rails/init.rb +37 -0
  116. metadata +188 -0
@@ -0,0 +1,7 @@
1
+ <h1><%= @permission.area.name %> permissions for <%= @permission.group.name %></h1>
2
+ <% if @permission.read %>
3
+ <h3>Members of <%= @permission.group.name %> have read permission for <%= @permission.area.name %></h3>
4
+ <% end %>
5
+ <% if @permission.write %>
6
+ <h3>Members of <%= @permission.group.name %> have write permission for <%= @permission.area.name %></h3>
7
+ <% end %>
@@ -0,0 +1,24 @@
1
+ <h1>Fill in your new password</h1>
2
+
3
+ <% form_tag do_recover_password_path, :method => :delete do %>
4
+ <%= error_messages_for :user %>
5
+
6
+ <p>
7
+ <%= label_tag :name %><br />
8
+ <%= text_field_tag :name, @user.name, :disabled => true %>
9
+ </p>
10
+
11
+ <p>
12
+ <%= label_tag "user[new_password]", "Password" %><br />
13
+ <%= password_field_tag "user[new_password]" %>
14
+ </p>
15
+ <p>
16
+ <%= label_tag "user[new_password_confirmation]", "Password confirmation" %><br />
17
+ <%= password_field_tag "user[new_password_confirmation]" %>
18
+ </p>
19
+ <p>
20
+ <%= submit_tag "Set" %>
21
+ </p>
22
+ <% end %>
23
+
24
+ <%= link_to "Cancel", url_for(:back) %>
@@ -0,0 +1,15 @@
1
+ <h1>Recover your password</h1>
2
+
3
+ <% form_for @recovery, :url => do_forgot_password_path do |f| %>
4
+ <%= f.error_messages %>
5
+ <p>
6
+ <%= f.label :email %><br />
7
+ <%= f.text_field :email %>
8
+ </p>
9
+
10
+ <p>
11
+ <%= f.submit "Send Instructions" %>
12
+ </p>
13
+ <% end %>
14
+
15
+ <%= link_to "Cancel", url_for(:back) %>
@@ -0,0 +1,21 @@
1
+ <h1>Enter your data</h1>
2
+ <% form_for @user, :url => registrations_path(:token => params[:token]) do |f| %>
3
+ <%= f.error_messages %>
4
+ <br>
5
+ <%= f.label :username %>
6
+ <%= f.text_field :username, :size => 30 %>
7
+ <br>
8
+ <%= f.label :password %>
9
+ <%= f.password_field :password, :size => 30 %>
10
+ <br>
11
+ <%= f.label :password_confirmation %>
12
+ <%= f.password_field :password_confirmation, :size => 30 %>
13
+ <br>
14
+ <%= f.label :name %>
15
+ <%= f.text_field :name, :size => 30 %>
16
+ <br>
17
+ <%= f.label :email %>
18
+ <%= f.text_field :email, :size => 30 %>
19
+ <br>
20
+ <%= f.submit "Create" %>
21
+ <% end %>
@@ -0,0 +1,41 @@
1
+ <div class="form-stroke">
2
+ <%= flash[:alert] if flash[:alert] %>
3
+ <% form_for @session do |f| %>
4
+ <h2>Sign in</h2>
5
+ <br>
6
+ <%= f.error_messages %>
7
+ <p>
8
+ <%= f.label :username %>
9
+ <%= f.text_field :username, :style => "width: 98%;" %>
10
+ </p>
11
+
12
+ <p>
13
+ <%= f.label :password %>
14
+ <%= f.password_field :password, :style => "width: 98%;" %>
15
+ </p>
16
+
17
+ <label>
18
+ <%= f.check_box :remember %> Remember me
19
+ </label>
20
+
21
+ <div>
22
+ <div style="float:left; padding-top: 9px;">
23
+ <% unless defined?(forgot_password_path).nil? %>
24
+ <p>
25
+ <%= link_to(t(:forgot_password_link, :scope => [:authentasaurus, :views, :sessions]), forgot_password_path) %>
26
+ </p>
27
+ <% end %>
28
+
29
+ <% unless defined?(resend_validation_email_path).nil? %>
30
+ <p>
31
+ <%= link_to(t(:resend_validation_email_link, :scope => [:authentasaurus, :views, :sessions]), resend_validation_email_path) %>
32
+ </p>
33
+ <% end %>
34
+ </div>
35
+ <div style="float:right;">
36
+ <%= submit_tag "Sign in" %>
37
+ </div>
38
+ <br style="clear: both;">
39
+ </div>
40
+ <% end %>
41
+ </div>
@@ -0,0 +1 @@
1
+ <h1>You are not allowed to access this page.</h1>
@@ -0,0 +1,14 @@
1
+ <h1>User Invitations</h1>
2
+ <table width="100%">
3
+ <tr>
4
+ <th>Email</th>
5
+ </tr>
6
+ <% @invitations.each do |invitation| %>
7
+ <tr>
8
+ <td><%= invitation.email %></td>
9
+ <td><%= link_to "Delete", invitation, :method => :delete, :confirm => "Are you sure?" %></td>
10
+ </tr>
11
+ <% end %>
12
+ </table>
13
+ <br>
14
+ <%= link_to "New", :action => :new %>
@@ -0,0 +1,9 @@
1
+ <h1>Create new user invitation</h1>
2
+ <% form_for @invitation do |f| %>
3
+ <%= f.error_messages %>
4
+ <br>
5
+ <%= f.label :email %>
6
+ <%= f.text_field :email, :size => 30 %>
7
+ <br>
8
+ <%= f.submit "Create" %>
9
+ <% end %>
@@ -0,0 +1,27 @@
1
+ <h1>Editing <%= @user.username %></h1>
2
+ <% form_for @user do |f| %>
3
+ <%= f.error_messages %>
4
+ <br>
5
+ <%= f.label :username %>
6
+ <%= f.text_field :username, :size => 30 %>
7
+ <br>
8
+ <%= f.label :new_password %>
9
+ <%= f.password_field :new_password, :size => 30 %>
10
+ <br>
11
+ <%= f.label :new_password_confirmation %>
12
+ <%= f.password_field :new_password_confirmation, :size => 30 %>
13
+ <br>
14
+ <%= f.label :name %>
15
+ <%= f.text_field :name, :size => 30 %>
16
+ <br>
17
+ <%= f.label :email %>
18
+ <%= f.text_field :email, :size => 30 %>
19
+ <br>
20
+ <%= f.label :active %>
21
+ <%= f.check_box :active %>
22
+ <br>
23
+ <%= f.label :group_id %>
24
+ <%= f.collection_select(:group_id, Group.find(:all), :id, :name, {:prompt => true}) %>
25
+ <br>
26
+ <%= f.submit "Create" %>
27
+ <% end %>
@@ -0,0 +1,19 @@
1
+ <h1>Users</h1>
2
+ <table width="100%">
3
+ <tr>
4
+ <th>Username</th>
5
+ <th>Name</th>
6
+ <th>Email</th>
7
+ <th>Active</th>
8
+ <th>Group</th>
9
+ </tr>
10
+ <% @users.each do |user| %>
11
+ <tr>
12
+ <td><%= link_to user.username, user %></td>
13
+ <td><%= user.name %></td>
14
+ <td><%= user.email %></td>
15
+ <td><%= check_box_tag user.id, "active", user.active, :disabled => true %></td>
16
+ <td><%= link_to user.group.name, user.group %></td>
17
+ </tr>
18
+ <% end %>
19
+ </table>
@@ -0,0 +1,27 @@
1
+ <h1>Create new user</h1>
2
+ <% form_for @user do |f| %>
3
+ <%= f.error_messages %>
4
+ <br>
5
+ <%= f.label :username %>
6
+ <%= f.text_field :username, :size => 30 %>
7
+ <br>
8
+ <%= f.label :password %>
9
+ <%= f.password_field :password, :size => 30 %>
10
+ <br>
11
+ <%= f.label :password_confirmation %>
12
+ <%= f.password_field :password_confirmation, :size => 30 %>
13
+ <br>
14
+ <%= f.label :name %>
15
+ <%= f.text_field :name, :size => 30 %>
16
+ <br>
17
+ <%= f.label :email %>
18
+ <%= f.text_field :email, :size => 30 %>
19
+ <br>
20
+ <%= f.label :active %>
21
+ <%= f.check_box :active %>
22
+ <br>
23
+ <%= f.label :group_id %>
24
+ <%= f.collection_select(:group_id, Group.find(:all), :id, :name, {:prompt => true}) %>
25
+ <br>
26
+ <%= f.submit "Create" %>
27
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <h1><%= @user.username %></h1>
2
+ <dl>
3
+ <dt>Name : </dt>
4
+ <dd><%= @user.name %></dd>
5
+ <dt>Email : </dt>
6
+ <dd><%= @user.email %></dd>
7
+ <dt>Active : </dt>
8
+ <dd><%= check_box_tag @user.id, "active", @user.active, :disabled => true %></dd>
9
+ <dt>Group : </dt>
10
+ <dd><%= link_to @user.group.name, @user.group %></dd>
11
+ </dl>
@@ -0,0 +1,6 @@
1
+ <h3><%= flash.now[:notice] %></h3>
2
+ <% form_tag do %>
3
+ Validation Code :<br>
4
+ <p><%= text_field_tag :vcode, params[:vcode], :size => 44 %></p>
5
+ <p><%= submit_tag "Validate" %></p>
6
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h3><%= flash.now[:notice] %></h3>
2
+ <% form_tag do_resend_validation_email_path do %>
3
+ Email :<br>
4
+ <p><%= text_field_tag :email, params[:email], :size => 44 %></p>
5
+ <p><%= submit_tag "Submit" %></p>
6
+ <% end %>
@@ -0,0 +1,34 @@
1
+ en:
2
+ activerecord:
3
+ errors:
4
+ full_messages:
5
+ authenticatable:
6
+ lower_case_password: "Your password must include at least one lower case character"
7
+ upper_case_password: "Your password must include at least one upper case character"
8
+ digit_password: "Your password must include at least one digit"
9
+ symbol_password: "Your password must include at least one of the following symbols \"@$%!&\""
10
+ recovery:
11
+ user_id:
12
+ blank: "There exists no user with the given email"
13
+ authentasaurus:
14
+ messages:
15
+ sessions:
16
+ invalid_login: Invalid Username/Password combination
17
+ validations:
18
+ validation_successful: Account activated successfully
19
+ validation_failed: Validation failed, check your validation code and try again
20
+ validation_email_sent: A message containing instructions to validate your email has been sent to your email
21
+ validation_email_invalid: Could not find {{email}}
22
+ recoveries:
23
+ recovery_successful: Password recovered successfully
24
+ recovery_failed: Token no longer valid
25
+ recovery_email_sent: A message containing instructions to recover your password has been sent to {{email}}
26
+ recovery_email_invalid: Email format is invalid
27
+ recovery_email_unknown: Email does not exist
28
+ recovery_field_blank: "{{field}} can't be blank"
29
+ user_invitations:
30
+ invalid_invitation_token: Invalid invitation token
31
+ views:
32
+ sessions:
33
+ resend_validation_email_link: Haven't recieved your validation email?
34
+ forgot_password_link: Forgot your password?
@@ -0,0 +1,2 @@
1
+ Description:
2
+ Generates a configurations file for Authentasaurus with defaults.
@@ -0,0 +1,9 @@
1
+ class AuthentasaurusGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ m.file "initializer.rb", File.join("config", "initializers", "authentasaurus.rb")
5
+ m.file "defaults.yml", File.join("config", "authentasaurus.yml")
6
+ m.file "authentasaurus_tasks.rake", File.join("lib","tasks","authentasaurus.rake")
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,48 @@
1
+ namespace :authentasaurus do
2
+ desc "Setup default data for authentasaurus"
3
+ task :setup_defaults => :environment do
4
+ puts "Setting default data"
5
+ unless ENV["authorizable"] == "false"
6
+ puts "- Creating Areas"
7
+ area = Area.create! :name => "all"
8
+ create_areas
9
+ puts "- Creating Administrators group"
10
+ group = Group.create! :name => "Administrators"
11
+ puts "- Creating permissions"
12
+ Permission.create! :area_id => area.id, :group_id => group.id, :write => true, :read => true
13
+ puts "- Creating default user"
14
+ User.create! :username=> "admin" ,:password => "Pass@123",:password_confirmation => "Pass@123",:name=> "admin",
15
+ :email=> AUTHENTASAURUS[:mail][:email], :active => true, :group_id => group.id
16
+ else
17
+ puts "- Creating default user"
18
+ User.create! :username=> "admin" ,:password => "Pass@123",:password_confirmation => "Pass@123",:name=> "admin",
19
+ :email=> AUTHENTASAURUS[:mail][:email], :active => true
20
+ end
21
+
22
+ puts "Created admin user, you can now login with the following credentials:"
23
+ puts ""
24
+ puts "Username: admin"
25
+ puts "Password: Pass@123"
26
+ end
27
+
28
+ desc "Finds and creates areas for use in authorization"
29
+ task :create_areas => :environment do
30
+ create_areas
31
+ end
32
+
33
+ def create_areas
34
+ puts "-- Locating areas"
35
+ controllers = Dir.new("#{RAILS_ROOT}/app/controllers").entries
36
+ controllers.each do |controller|
37
+ if controller =~ /_controller/ && !(controller =~ /application_controller/)
38
+ cont = controller.gsub("_controller.rb","")
39
+ puts "--- Creating #{cont} area"
40
+ area = Area.find_or_create_by_name cont
41
+ unless area.errors.empty?
42
+ puts area.errors.full_messages
43
+ raise "Could not create areas"
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,51 @@
1
+ ## Authentasaurus configuration
2
+ development: &non_production_settings
3
+ :mail:
4
+ :email: &development_email "foo_bar@your-domain.com"
5
+ :modules:
6
+ :remote:
7
+ :user:
8
+ :site: "http://localhost:3000/api_key/auth"
9
+ :session_element: "remote_sync"
10
+ :sync: true
11
+ :sync_to: "user"
12
+ :recoverable:
13
+ :token_expires_after: 10 # days
14
+ :send_email: true
15
+ :mail_subject: "Reset your password on your-domain.com"
16
+ :mail_from: *development_email
17
+ :invitable:
18
+ :send_email: true
19
+ :mail_subject: "You've been invited to your-domain.com"
20
+ :mail_from: *development_email
21
+ :validatable:
22
+ :send_email: true
23
+ :mail_subject: "Validate your account on your-domain.com"
24
+ :mail_from: *development_email
25
+
26
+ test:
27
+ <<: *non_production_settings
28
+
29
+ production:
30
+ :mail:
31
+ :email: &production_email "foo_bar@your-domain.com"
32
+ :modules:
33
+ :remote:
34
+ :user:
35
+ :site: "http://localhost:3000/api_key/auth"
36
+ :session_element: "remote_sync"
37
+ :sync: true
38
+ :sync_to: "user"
39
+ :recoverable:
40
+ :token_expires_after: 10 # days
41
+ :send_email: true
42
+ :mail_subject: "Reset your password on your-domain.com"
43
+ :mail_from: *production_email
44
+ :invitable:
45
+ :send_email: true
46
+ :mail_subject: "You've been invited to your-domain.com"
47
+ :mail_from: *production_email
48
+ :validatable:
49
+ :send_email: true
50
+ :mail_subject: "Validate your account on your-domain.com"
51
+ :mail_from: *production_email
@@ -0,0 +1,3 @@
1
+ # Loads the system configuration
2
+ # Usage: AUTHENTASAURUS_CONFIGURATIONS[:section][:key]
3
+ AUTHENTASAURUS = YAML.load(File.read(Rails.root.join("config", "authentasaurus.yml")))[RAILS_ENV]
@@ -0,0 +1,12 @@
1
+ Description:
2
+ Generates a stub for Authentasaurus restful authentication views.
3
+
4
+ Examples:
5
+ `./script/generate authentasaurus_views users`
6
+
7
+ creates views for Authentasaurus with main user model named "user"
8
+
9
+ `./script/generate authentasaurus_views users --authorizable --validatable
10
+
11
+ creates views for Authentasaurus with main user model named "user" and also creates views
12
+ for authorization (--authorizable) and validation (--validatable)
@@ -0,0 +1,87 @@
1
+ class AuthentasaurusViewsGenerator < Rails::Generator::NamedBase
2
+ default_options :authorizable => false, :validatable => false, :invitable => false
3
+
4
+ def manifest
5
+ record do |m|
6
+ # Controller, View , Model, test, and fixture directories.
7
+ m.directory File.join('app/views', class_path)
8
+ # Other directories
9
+ m.directory File.join('app/views', class_path, "sessions")
10
+ m.directory File.join('app/views', class_path, file_name)
11
+ m.directory File.join('app/views', class_path, "authentasaurus_emailer")
12
+ m.directory File.join('app/views', class_path, "recoveries")
13
+
14
+ # Views
15
+ ## user sessions
16
+ m.file 'views/sessions/new.html.erb', File.join("app/views", class_path, "sessions", "new.html.erb")
17
+ m.file 'views/sessions/no_access.html.erb', File.join("app/views", class_path, "sessions", "no_access.html.erb")
18
+ ## users
19
+ m.file 'views/users/edit.html.erb', File.join("app/views", class_path, file_name, "edit.html.erb")
20
+ m.file 'views/users/index.html.erb', File.join("app/views", class_path, file_name, "index.html.erb")
21
+ m.file 'views/users/new.html.erb', File.join("app/views", class_path, file_name, "new.html.erb")
22
+ m.file 'views/users/show.html.erb', File.join("app/views", class_path, file_name, "show.html.erb")
23
+ ## recoverable
24
+ m.file 'views/recoveries/new.html.erb', File.join("app/views", class_path, "recoveries", "new.html.erb")
25
+ m.file 'views/recoveries/edit.html.erb', File.join("app/views", class_path, "recoveries", "edit.html.erb")
26
+
27
+
28
+ if options[:authorizable]
29
+ m.directory File.join('app/views', class_path, "groups")
30
+ m.directory File.join('app/views', class_path, "areas")
31
+ m.directory File.join('app/views', class_path, "permissions")
32
+ ## groups
33
+ m.file 'views/groups/show.html.erb', File.join('app/views', class_path, "groups", "show.html.erb")
34
+ m.file 'views/groups/index.html.erb', File.join("app/views", class_path, "groups", "index.html.erb")
35
+ m.file 'views/groups/edit.html.erb', File.join("app/views", class_path, "groups", "edit.html.erb")
36
+ m.file 'views/groups/new.html.erb', File.join("app/views", class_path, "groups", "new.html.erb")
37
+ ## areas
38
+ m.file 'views/areas/edit.html.erb', File.join("app/views", class_path, "areas", "edit.html.erb")
39
+ m.file 'views/areas/index.html.erb', File.join("app/views", class_path, "areas", "index.html.erb")
40
+ m.file 'views/areas/new.html.erb', File.join("app/views", class_path, "areas", "new.html.erb")
41
+ m.file 'views/areas/show.html.erb', File.join("app/views", class_path, "areas", "show.html.erb")
42
+ ## permissions
43
+ m.file 'views/permissions/edit.html.erb', File.join("app/views", class_path, "permissions", "edit.html.erb")
44
+ m.file 'views/permissions/index.html.erb', File.join("app/views", class_path, "permissions", "index.html.erb")
45
+ m.file 'views/permissions/new.html.erb', File.join("app/views", class_path, "permissions", "new.html.erb")
46
+ m.file 'views/permissions/show.html.erb', File.join("app/views", class_path, "permissions", "show.html.erb")
47
+ end
48
+
49
+ # Validations
50
+ if options[:validatable]
51
+ m.directory File.join('app/views', class_path, "validations")
52
+
53
+ # Views
54
+ m.file 'views/validations/activate.html.erb', File.join("app/views", class_path, "validations", "activate.html.erb")
55
+ m.file 'views/validations/resend_validation_email.html.erb', File.join("app/views", class_path, "validations", "resend_validation_email.html.erb")
56
+ m.file 'views/authentasaurus_emailer/validation_mail.html.erb', File.join("app/views", class_path, "authentasaurus_emailer", "validation_mail.html.erb")
57
+ end
58
+
59
+ # User invitations
60
+ if options[:invitable]
61
+ m.directory File.join('app/views', class_path, "user_invitations")
62
+
63
+ #Views
64
+ m.file 'views/user_invitations/index.html.erb', File.join('app/views', class_path, 'user_invitations', "index.html.erb")
65
+ m.file 'views/user_invitations/new.html.erb', File.join('app/views', class_path, 'user_invitations', "new.html.erb")
66
+
67
+ m.file 'views/authentasaurus_emailer/invitation_mail.html.erb', File.join("app/views", class_path, "authentasaurus_emailer", "invitation_mail.html.erb")
68
+ end
69
+ end
70
+ end
71
+
72
+ protected
73
+ def banner
74
+ "Usage: #{$0} #{spec.name} MainUserControllerName"
75
+ end
76
+
77
+ def add_options!(opt)
78
+ opt.separator ''
79
+ opt.separator 'Options:'
80
+ opt.on("--validatable",
81
+ "Add validation to authentasaurus") { |v| options[:validatable] = v }
82
+ opt.on("--authorizable",
83
+ "Add authorization to authentasaurus") { |v| options[:authorizable] = v }
84
+ opt.on("--invitable",
85
+ "Add invitations to authentasaurus") { |v| options[:invitable] = v }
86
+ end
87
+ end