authentasaurus 0.7.3 → 0.8.3

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 (128) hide show
  1. data/TODO +3 -0
  2. data/app/controllers/areas_controller.rb +1 -1
  3. data/app/controllers/groups_controller.rb +1 -1
  4. data/app/controllers/permissions_controller.rb +1 -1
  5. data/app/controllers/recoveries_controller.rb +1 -1
  6. data/app/controllers/registrations_controller.rb +1 -1
  7. data/app/controllers/sessions_controller.rb +1 -1
  8. data/app/controllers/user_invitations_controller.rb +1 -1
  9. data/app/controllers/users_controller.rb +1 -1
  10. data/app/controllers/validations_controller.rb +1 -1
  11. data/app/models/area.rb +1 -1
  12. data/app/models/group.rb +1 -1
  13. data/app/models/permission.rb +1 -1
  14. data/app/models/recovery.rb +1 -1
  15. data/app/models/session.rb +1 -1
  16. data/app/models/user_invitation.rb +1 -1
  17. data/app/models/validation.rb +1 -1
  18. data/lib/authentasaurus.rb +22 -36
  19. data/lib/authentasaurus/ac/acts_as_overrider.rb +47 -0
  20. data/lib/authentasaurus/ac/controllers/areas_controller.rb +80 -0
  21. data/lib/authentasaurus/ac/controllers/groups_controller.rb +81 -0
  22. data/lib/authentasaurus/ac/controllers/permissions_controller.rb +81 -0
  23. data/lib/authentasaurus/ac/controllers/recoveries_controller.rb +72 -0
  24. data/lib/authentasaurus/ac/controllers/registrations_controller.rb +45 -0
  25. data/lib/authentasaurus/ac/controllers/sessions_controller.rb +58 -0
  26. data/lib/authentasaurus/ac/controllers/user_invitations_controller.rb +50 -0
  27. data/lib/authentasaurus/ac/controllers/users_controller.rb +80 -0
  28. data/lib/authentasaurus/ac/controllers/validations_controller.rb +53 -0
  29. data/lib/authentasaurus/ac/routing.rb +90 -0
  30. data/lib/authentasaurus/ar/acts_as_authenticatable.rb +113 -0
  31. data/lib/authentasaurus/ar/acts_as_authenticatable_validatable.rb +38 -0
  32. data/lib/authentasaurus/ar/acts_as_overrider.rb +51 -0
  33. data/lib/authentasaurus/ar/authenticatable.rb +66 -0
  34. data/lib/authentasaurus/ar/migrations.rb +173 -0
  35. data/lib/authentasaurus/{models → ar/models}/recovery.rb +3 -3
  36. data/lib/authentasaurus/{models → ar/models}/session.rb +1 -1
  37. data/lib/authentasaurus/{models → ar/models}/user_invitation.rb +1 -1
  38. data/lib/authentasaurus/{models → ar/models}/validation.rb +1 -1
  39. data/lib/authentasaurus/arel/acts_as_authenticatable.rb +72 -0
  40. data/lib/authentasaurus/arel/authenticatable.rb +25 -0
  41. data/lib/authentasaurus/authorization.rb +341 -0
  42. data/lib/authentasaurus/railtie.rb +4 -4
  43. data/lib/generators/authentasaurus/install/templates/initializer.rb +1 -1
  44. data/rdoc/apple-touch-icon.png +0 -0
  45. data/rdoc/classes/Authentasaurus.html +65 -0
  46. data/rdoc/classes/Authentasaurus/Ac.html +72 -0
  47. data/rdoc/classes/Authentasaurus/Ac/ActsAsOverrider.html +104 -0
  48. data/rdoc/classes/Authentasaurus/Ac/ActsAsOverrider/ClassMethods.html +397 -0
  49. data/rdoc/classes/Authentasaurus/Ac/Routing.html +61 -0
  50. data/rdoc/classes/Authentasaurus/Ac/Routing/InstanceMethods.html +390 -0
  51. data/rdoc/classes/Authentasaurus/Ar.html +77 -0
  52. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable.html +107 -0
  53. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable/ClassMethods.html +168 -0
  54. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable/InstanceMethods.html +357 -0
  55. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable.html +109 -0
  56. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable/ClassMethods.html +113 -0
  57. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable/InstanceMethods.html +54 -0
  58. data/rdoc/classes/Authentasaurus/Ar/ActsAsOverrider.html +104 -0
  59. data/rdoc/classes/Authentasaurus/Ar/ActsAsOverrider/ClassMethods.html +320 -0
  60. data/rdoc/classes/Authentasaurus/Ar/Authenticatable.html +104 -0
  61. data/rdoc/classes/Authentasaurus/Ar/Authenticatable/ClassMethods.html +182 -0
  62. data/rdoc/classes/Authentasaurus/Ar/Migrations.html +63 -0
  63. data/rdoc/classes/Authentasaurus/Ar/Migrations/Columns.html +68 -0
  64. data/rdoc/classes/Authentasaurus/Ar/Migrations/Columns/InstanceMethods.html +106 -0
  65. data/rdoc/classes/Authentasaurus/Ar/Migrations/Tables.html +68 -0
  66. data/rdoc/classes/Authentasaurus/Ar/Migrations/Tables/InstanceMethods.html +703 -0
  67. data/rdoc/classes/Authentasaurus/Arel.html +65 -0
  68. data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable.html +107 -0
  69. data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable/ClassMethods.html +139 -0
  70. data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable/InstanceMethods.html +113 -0
  71. data/rdoc/classes/Authentasaurus/Arel/Authenticatable.html +105 -0
  72. data/rdoc/classes/Authentasaurus/Arel/Authenticatable/ClassMethods.html +119 -0
  73. data/rdoc/classes/Authentasaurus/Authorization.html +230 -0
  74. data/rdoc/classes/Authentasaurus/Authorization/ActionController.html +63 -0
  75. data/rdoc/classes/Authentasaurus/Authorization/ActionController/ClassMethods.html +263 -0
  76. data/rdoc/classes/Authentasaurus/Authorization/ActionController/InstanceMethods.html +54 -0
  77. data/rdoc/classes/Authentasaurus/Authorization/ActionView.html +54 -0
  78. data/rdoc/classes/Authentasaurus/Authorization/CommonInstanceMethods.html +240 -0
  79. data/rdoc/created.rid +1 -0
  80. data/rdoc/css/main.css +278 -0
  81. data/rdoc/css/panel.css +383 -0
  82. data/rdoc/css/reset.css +53 -0
  83. data/rdoc/favicon.ico +0 -0
  84. data/rdoc/files/README_rdoc.html +366 -0
  85. data/rdoc/files/TODO.html +64 -0
  86. data/rdoc/files/lib/authentasaurus/ac/acts_as_overrider_rb.html +52 -0
  87. data/rdoc/files/lib/authentasaurus/ac/routing_rb.html +60 -0
  88. data/rdoc/files/lib/authentasaurus/ar/acts_as_authenticatable_rb.html +52 -0
  89. data/rdoc/files/lib/authentasaurus/ar/acts_as_authenticatable_validatable_rb.html +52 -0
  90. data/rdoc/files/lib/authentasaurus/ar/acts_as_overrider_rb.html +52 -0
  91. data/rdoc/files/lib/authentasaurus/ar/authenticatable_rb.html +52 -0
  92. data/rdoc/files/lib/authentasaurus/ar/migrations_rb.html +52 -0
  93. data/rdoc/files/lib/authentasaurus/arel/acts_as_authenticatable_rb.html +52 -0
  94. data/rdoc/files/lib/authentasaurus/arel/authenticatable_rb.html +72 -0
  95. data/rdoc/files/lib/authentasaurus/authorization_rb.html +208 -0
  96. data/rdoc/i/arrows.png +0 -0
  97. data/rdoc/i/results_bg.png +0 -0
  98. data/rdoc/i/tree_bg.png +0 -0
  99. data/rdoc/index.html +15 -0
  100. data/rdoc/js/jquery-1.3.2.min.js +19 -0
  101. data/rdoc/js/jquery-effect.js +593 -0
  102. data/rdoc/js/main.js +22 -0
  103. data/rdoc/js/searchdoc.js +628 -0
  104. data/rdoc/panel/index.html +71 -0
  105. data/rdoc/panel/search_index.js +1 -0
  106. data/rdoc/panel/tree.js +1 -0
  107. metadata +92 -44
  108. data/lib/action_controller/authorization.rb +0 -215
  109. data/lib/action_view/authorization.rb +0 -52
  110. data/lib/active_record/acts_as_authenticatable.rb +0 -111
  111. data/lib/active_record/acts_as_authenticatable_validatable.rb +0 -36
  112. data/lib/active_record/authenticatable.rb +0 -64
  113. data/lib/active_resource/acts_as_authenticatable.rb +0 -70
  114. data/lib/active_resource/authenticatable.rb +0 -24
  115. data/lib/authentasaurus/areas_controller.rb +0 -78
  116. data/lib/authentasaurus/groups_controller.rb +0 -79
  117. data/lib/authentasaurus/models/area.rb +0 -21
  118. data/lib/authentasaurus/models/group.rb +0 -19
  119. data/lib/authentasaurus/models/permission.rb +0 -24
  120. data/lib/authentasaurus/permissions_controller.rb +0 -79
  121. data/lib/authentasaurus/recoveries_controller.rb +0 -70
  122. data/lib/authentasaurus/registrations_controller.rb +0 -43
  123. data/lib/authentasaurus/sessions_controller.rb +0 -56
  124. data/lib/authentasaurus/user_invitations_controller.rb +0 -48
  125. data/lib/authentasaurus/users_controller.rb +0 -78
  126. data/lib/authentasaurus/validations_controller.rb +0 -51
  127. data/lib/helpers/migrations.rb +0 -171
  128. data/lib/helpers/routing.rb +0 -87
@@ -0,0 +1,72 @@
1
+ module Authentasaurus::Ac::Controllers
2
+ module RecoveriesController
3
+ def self.included(base) # :nodoc:
4
+ base.send :extend, ClassMethods
5
+ base.send :include, InstanceMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ end
10
+
11
+ module InstanceMethods
12
+ def new
13
+ @recovery = Recovery.new
14
+
15
+ respond_to do |format|
16
+ format.html
17
+ end
18
+ end
19
+
20
+ def create
21
+ @recovery = Recovery.find_or_initialize_by_email :email => params[:email]
22
+
23
+ if @recovery.new_record?
24
+ @recovery.user = User.find_by_email @recovery.email
25
+ end
26
+
27
+ respond_to do |format|
28
+ if @recovery.save
29
+ @recovery.touch
30
+ format.html { redirect_to new_session_path, :notice => t(:recovery_email_sent, :scope => [:authentasaurus, :messages, :recoveries], :email => @recovery.email) }
31
+ else
32
+ format.html {render :new}
33
+ end
34
+ end
35
+ end
36
+
37
+ def edit
38
+ @recovery = Recovery.valid.find_by_token(params[:token])
39
+
40
+ respond_to do |format|
41
+ unless @recovery.nil?
42
+ @user = @recovery.user
43
+ format.html
44
+ else
45
+ format.html { redirect_to new_session_path, :alert => t(:recovery_failed, :scope => [:authentasaurus, :messages, :recoveries], :email => params[:email]) }
46
+ end
47
+ end
48
+ end
49
+
50
+ def destroy
51
+ @recovery = Recovery.find_by_token params[:token]
52
+ @user = @recovery.user
53
+
54
+ respond_to do |format|
55
+ empty_fields = params[:user].select { |key, value| value.blank? }
56
+ if !empty_fields.empty?
57
+ empty_fields.each do |f|
58
+ @user.errors.add_to_base t(:recovery_field_blank, :scope => [:authentasaurus, :messages, :recoveries], :field => f.first.humanize)
59
+ end
60
+ format.html { render :edit }
61
+ elsif @user.update_attributes params[:user]
62
+ @recovery.destroy
63
+ format.html { redirect_to new_session_path, :notice => t(:recovery_successful, :scope => [:authentasaurus, :messages, :recoveries], :email => params[:email]) }
64
+ else
65
+ flash.now[:alert] = t(:recovery_failed, :scope => [:authentasaurus, :messages, :recoveries], :email => params[:email])
66
+ format.html { render :edit }
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,45 @@
1
+ module Authentasaurus::Ac::Controllers
2
+ module RegistrationsController
3
+ def self.included(base) # :nodoc:
4
+ base.send :extend, ClassMethods
5
+ base.send :include, InstanceMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ end
10
+
11
+ module InstanceMethods
12
+ def new
13
+ @user = User.new
14
+ @user_invitation = UserInvitation.find_by_token params[:token]
15
+
16
+ respond_to do |format|
17
+ if @user_invitation.nil?
18
+ format.html {redirect_to new_session_path, :alert => t(:invalid_invitation_token, :scope => [:authentasaurus, :messages, :user_invitations])}
19
+ else
20
+ @user.email = @user_invitation.email
21
+ format.html
22
+ end
23
+ end
24
+ end
25
+
26
+ def create
27
+ @user = User.new params[:user]
28
+ user_invitation = UserInvitation.find_by_token params[:token]
29
+
30
+ respond_to do |format|
31
+ unless user_invitation.nil?
32
+ if @user.save
33
+ format.html {redirect_to new_session_path}
34
+ else
35
+ format.html {render :new}
36
+ end
37
+ else
38
+ flash.now[:alert] = t(:invalid_invitation_token, :scope => [:authentasaurus, :messages, :user_invitations])
39
+ format.html {render :new}
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,58 @@
1
+ module Authentasaurus::Ac::Controllers
2
+ module SessionsController
3
+ def self.included(base) # :nodoc:
4
+ base.send :extend, ClassMethods
5
+ base.send :include, InstanceMethods
6
+
7
+ base.send :before_filter, :check_is_logged_in, :except => [:destroy, :no_access]
8
+ end
9
+
10
+ module ClassMethods
11
+ end
12
+
13
+ module InstanceMethods
14
+ def new
15
+ @session = Session.new
16
+
17
+ respond_to do |format|
18
+ format.html
19
+ end
20
+ end
21
+
22
+ def create
23
+ @session = Session.new params[:session]
24
+
25
+ respond_to do |format|
26
+ if @session.save
27
+ if @session.remember == "1"
28
+ cookies.signed.permanent[:remember_me_token] = @session.user.remember_me_token
29
+ end
30
+ session[:user_id] = @session.user.id
31
+ session[:user_permissions] = {:read => @session.user.permissions.collect{|per| per.area.name if per.read}, :write => @session.user.permissions.collect{|per| per.area.name if per.write}}
32
+ format.html { redirect_to session[:original_url] || (defined?(signin_redirect_path).nil? ? root_path : signin_redirect_path) }
33
+ else
34
+ format.html { render :action => :new }
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ def destroy
41
+ session[:user_id] = nil
42
+ session[:user_permissions] = nil
43
+ cookies.delete :remember_me_token
44
+
45
+ respond_to do |format|
46
+ format.html { redirect_to :action => :new }
47
+ end
48
+ end
49
+
50
+ private
51
+ def check_is_logged_in
52
+ if is_logged_in?
53
+ redirect_to defined?(signin_redirect_path).nil? ? root_path : signin_redirect_path
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,50 @@
1
+ module Authentasaurus::Ac::Controllers
2
+ module UserInvitationsController
3
+ def self.included(base) # :nodoc:
4
+ base.send :extend, ClassMethods
5
+ base.send :include, InstanceMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ end
10
+
11
+ module InstanceMethods
12
+ def index
13
+ @invitations = UserInvitation.find :all
14
+
15
+ respond_to do |format|
16
+ format.html
17
+ end
18
+ end
19
+
20
+ def new
21
+ @invitation = UserInvitation.new
22
+
23
+ respond_to do |format|
24
+ format.html
25
+ end
26
+ end
27
+
28
+ def create
29
+ @invitation = UserInvitation.new params[:user_invitation]
30
+
31
+ respond_to do |format|
32
+ if @invitation.save
33
+ format.html { redirect_to :action => :index }
34
+ else
35
+ format.html {render :new}
36
+ end
37
+ end
38
+ end
39
+
40
+ def destroy
41
+ invitation = UserInvitation.find params[:id]
42
+ invitation.destroy
43
+
44
+ respond_to do |format|
45
+ format.html { redirect_to :action => :index }
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,80 @@
1
+ module Authentasaurus::Ac::Controllers
2
+ module UsersController
3
+ def self.included(base) # :nodoc:
4
+ base.send :extend, ClassMethods
5
+ base.send :include, InstanceMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ end
10
+
11
+ module InstanceMethods
12
+ def index
13
+ @users = User.all
14
+
15
+ respond_to do |format|
16
+ format.html
17
+ end
18
+ end
19
+
20
+ def show
21
+ @user = User.find(params[:id])
22
+
23
+ respond_to do |format|
24
+ format.html
25
+ end
26
+ end
27
+
28
+ def new
29
+ @user = User.new
30
+
31
+ respond_to do |format|
32
+ format.html
33
+ end
34
+ end
35
+
36
+ def create
37
+ @user = User.new params[:user]
38
+
39
+ respond_to do |format|
40
+ if @user.save
41
+ format.html { redirect_to :action=>:index, :notice => "User saved successfully" }
42
+ else
43
+ flash.now[:alert] = I18n.t(:create_failed, :scope => [:authentasaurus, :messages, :users])
44
+ format.html { render :new }
45
+ end
46
+ end
47
+ end
48
+
49
+ def edit
50
+ @user = User.find params[:id]
51
+
52
+ respond_to do |format|
53
+ format.html
54
+ end
55
+ end
56
+
57
+ def update
58
+ @user = User.find params[:id]
59
+
60
+ respond_to do |format|
61
+ if @user.update_attributes(params[:user])
62
+ format.html { redirect_to :action => :index, :notice => "User updated" }
63
+ else
64
+ flash.now[:alert] = I18n.t(:update_failed, :scope => [:authentasaurus, :messages, :users])
65
+ format.html { render :edit }
66
+ end
67
+ end
68
+ end
69
+
70
+ def destroy
71
+ @user = User.find params[:id]
72
+ @user.destroy
73
+
74
+ respond_to do |format|
75
+ format.html { redirect_to :action=>:index }
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,53 @@
1
+ module Authentasaurus::Ac::Controllers
2
+ module ValidationsController
3
+ def self.included(base) # :nodoc:
4
+ base.send :extend, ClassMethods
5
+ base.send :include, InstanceMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ end
10
+
11
+ module InstanceMethods
12
+ def validate
13
+ respond_to do |format|
14
+ format.html
15
+ end
16
+ end
17
+
18
+ def activate
19
+ respond_to do |format|
20
+ validation = Validation.find_by_validation_code(params[:vcode])
21
+ if validation
22
+ validation.user.activate
23
+ validation.destroy
24
+ format.html { redirect_to login_url, :notice => I18n.t(:validation_successful, :scope => [:authentasaurus, :messages, :validations])}
25
+ else
26
+ flash.now[:alert] = I18n.t(:validation_failed, :scope => [:authentasaurus, :messages, :validations])
27
+ format.html { render :validate }
28
+ end
29
+ end
30
+ end
31
+
32
+ def resend_validation_email
33
+ respond_to do |format|
34
+ format.html
35
+ end
36
+ end
37
+
38
+ def do_resend_validation_email
39
+ validation = Validation.find_by_email params[:email]
40
+
41
+ respond_to do |format|
42
+ unless validation.nil?
43
+ validation.send_validation
44
+ format.html {redirect_to login_url, :notice => I18n.t(:validation_email_sent, :scope => [:authentasaurus, :messages, :validations])}
45
+ else
46
+ flash.now[:alert] = I18n.t(:validation_email_invalid, :scope => [:authentasaurus, :messages, :validations], :email => params[:email])
47
+ format.html { render :resend_validation_email }
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,90 @@
1
+ ## Authentasaurus routes helper
2
+ module Authentasaurus::Ac
3
+ module Routing
4
+ def self.included(base) # :nodoc:
5
+ base.send :include, InstanceMethods
6
+ end
7
+
8
+ module InstanceMethods
9
+ # TODO: add documentation here
10
+ def authentasaurus_routes(*opts)
11
+ options = opts.extract_options!
12
+
13
+ # Authenticatable
14
+ authentasaurus_sessions options.dup
15
+ authentasaurus_users options.dup
16
+ # Recoverable
17
+ authentasaurus_recoverable
18
+
19
+ # Authorizable
20
+ if opts.include?(:authorization)
21
+ authentasaurus_authorizable options.dup
22
+ end
23
+
24
+ # Validatable
25
+ if opts.include?(:validation)
26
+ authentasaurus_validatable
27
+ end
28
+
29
+ # Invitable
30
+ if opts.include?(:invitation)
31
+ authentasaurus_invitable options.dup
32
+ authentasaurus_invitable_public
33
+ end
34
+ end
35
+
36
+ # TODO: add documentation here
37
+ def authentasaurus_sessions(*opts)
38
+ get "/sessions/sign-in(.:format)" => "sessions#new", :as => :new_session
39
+ post "/sessions(.:format)" => "sessions#create", :as => :sessions
40
+ delete "/sessions/sign-out(.:format)" => "sessions#destroy", :as => :session
41
+ get "/sessions/no-access(.:format)" => "sessions#no_access", :as => :no_access_sessions
42
+ end
43
+
44
+ # TODO: add documentation here
45
+ def authentasaurus_users(*opts)
46
+ options = opts.extract_options!
47
+
48
+ resources :users, options.dup
49
+ end
50
+
51
+ # TODO: add documentation here
52
+ def authentasaurus_authorizable(*opts)
53
+ options = opts.extract_options!
54
+
55
+ resources :groups, options.dup
56
+ resources :areas, options.dup
57
+ resources :permissions, options.dup
58
+ end
59
+
60
+ # TODO: add documentation here
61
+ def authentasaurus_validatable
62
+ match "/validate" => "validations#validate", :as => 'validate'
63
+ match "/activate" => "validations#activate", :as => 'activate'
64
+ match "/resend-validation" => "validations#resend_validation_email", :via => :get, :as => 'recover_password'
65
+ match "/resend-validation" => "validations#do_resend_validation_email", :via => :post, :as => 'do_recover_password'
66
+ end
67
+
68
+ # TODO: add documentation here
69
+ def authentasaurus_invitable(*opts)
70
+ options = opts.extract_options!
71
+
72
+ resources :user_invitations, options.dup.merge({:except => [:show, :edit, :update]})
73
+ end
74
+
75
+ def authentasaurus_invitable_public(*opts)
76
+ options = opts.extract_options!
77
+
78
+ resources :registrations, :only => [:new, :create], :path_prefix => "/:token", :requirements => {:token => /[0-9a-zA-Z]+/}
79
+ end
80
+
81
+ # TODO: add documentation here
82
+ def authentasaurus_recoverable
83
+ match "/forgot-password" => "recoveries#new", :via => :get, :as => 'forgot_password'
84
+ match "/forgot-password" => "recoveries#create", :via => :post, :as => 'do_forgot_password'
85
+ match "/recover-password/:token" => "recoveries#edit", :via => :get, :as => 'recover_password'
86
+ match "/recover-password/:token" => "recoveries#destroy", :via => :delete, :as => 'do_recover_password'
87
+ end
88
+ end
89
+ end
90
+ end