rodauth 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +3 -0
  3. data/MIT-LICENSE +18 -0
  4. data/README.rdoc +484 -0
  5. data/Rakefile +91 -0
  6. data/lib/roda/plugins/rodauth.rb +265 -0
  7. data/lib/roda/plugins/rodauth/base.rb +428 -0
  8. data/lib/roda/plugins/rodauth/change_login.rb +48 -0
  9. data/lib/roda/plugins/rodauth/change_password.rb +42 -0
  10. data/lib/roda/plugins/rodauth/close_account.rb +42 -0
  11. data/lib/roda/plugins/rodauth/create_account.rb +92 -0
  12. data/lib/roda/plugins/rodauth/lockout.rb +292 -0
  13. data/lib/roda/plugins/rodauth/login.rb +77 -0
  14. data/lib/roda/plugins/rodauth/logout.rb +36 -0
  15. data/lib/roda/plugins/rodauth/remember.rb +226 -0
  16. data/lib/roda/plugins/rodauth/reset_password.rb +205 -0
  17. data/lib/roda/plugins/rodauth/verify_account.rb +228 -0
  18. data/spec/migrate/001_tables.rb +64 -0
  19. data/spec/migrate_password/001_tables.rb +38 -0
  20. data/spec/rodauth_spec.rb +1114 -0
  21. data/spec/views/layout.str +11 -0
  22. data/spec/views/login.str +21 -0
  23. data/templates/change-login.str +22 -0
  24. data/templates/change-password.str +21 -0
  25. data/templates/close-account.str +9 -0
  26. data/templates/confirm-password.str +16 -0
  27. data/templates/create-account.str +33 -0
  28. data/templates/login.str +25 -0
  29. data/templates/logout.str +9 -0
  30. data/templates/remember.str +28 -0
  31. data/templates/reset-password-email.str +5 -0
  32. data/templates/reset-password-request.str +7 -0
  33. data/templates/reset-password.str +23 -0
  34. data/templates/unlock-account-email.str +5 -0
  35. data/templates/unlock-account-request.str +11 -0
  36. data/templates/unlock-account.str +11 -0
  37. data/templates/verify-account-email.str +4 -0
  38. data/templates/verify-account-resend.str +7 -0
  39. data/templates/verify-account.str +11 -0
  40. metadata +227 -0
@@ -0,0 +1,11 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <title>#{@title}</title>
5
+ </head>
6
+ <body>
7
+ #{"<div id='error_flash'>#{flash[:error]}</div>" if flash[:error]}
8
+ #{"<div id='notice_flash'>#{flash[:notice]}</div>" if flash[:notice]}
9
+ #{yield}
10
+ </body>
11
+ </html>
@@ -0,0 +1,21 @@
1
+ <form method="post" class="form-horizontal" role="form" id="login-form">
2
+ #{csrf_tag if respond_to?(:csrf_tag)}
3
+ <input type="hidden" name="lp" value="#{request['lp']}"/>
4
+ <div class="form-group">
5
+ <label class="col-sm-2 control-label" for="login">Login</label>
6
+ <div class="col-sm-10">
7
+ <input type="text" class="form-control#{' error' if @login_error}" name="l" id="login"/> #{@login_error}
8
+ </div>
9
+ </div>
10
+ <div class="form-group">
11
+ <label class="col-sm-2 control-label" for="password">Password</label>
12
+ <div class="col-sm-10">
13
+ <input type="password" class="form-control#{' error' if @password_error}" name="p" id="password"/> #{@password_error}
14
+ </div>
15
+ </div>
16
+ <div class="form-group">
17
+ <div class="col-sm-offset-2 col-sm-10">
18
+ <input type="submit" class="btn btn-default" value="Login"/>
19
+ </div>
20
+ </div>
21
+ </form>
@@ -0,0 +1,22 @@
1
+ <form method="post" class="rodauth form-horizontal" role="form" id="change-login-form">
2
+ #{rodauth.change_login_additional_form_tags}
3
+ #{csrf_tag if respond_to?(:csrf_tag)}
4
+ <div class="form-group">
5
+ <label class="col-sm-2 control-label" for="login">#{rodauth.login_label}</label>
6
+ <div class="col-sm-10">
7
+ <input type="text" class="form-control#{' error' if @login_error}" name="#{rodauth.login_param}" id="login" value="#{h request[rodauth.login_param]}"/> #{@login_error}
8
+ </div>
9
+ </div>
10
+ <div class="form-group">
11
+ <label class="col-sm-2 control-label" for="login-confirm">#{rodauth.login_confirm_label}</label>
12
+ <div class="col-sm-10">
13
+ <input type="text" class="form-control" name="#{rodauth.login_confirm_param}" id="login-confirm" value="#{h request[rodauth.login_confirm_param]}"/>
14
+ </div>
15
+ </div>
16
+ <div class="form-group">
17
+ <div class="col-sm-offset-2 col-sm-10">
18
+ <input type="submit" class="btn btn-primary" value="#{rodauth.change_login_button}"/>
19
+ </div>
20
+ </div>
21
+ </form>
22
+
@@ -0,0 +1,21 @@
1
+ <form method="post" class="rodauth form-horizontal" role="form" id="change-password-form">
2
+ #{rodauth.change_password_additional_form_tags}
3
+ #{csrf_tag if respond_to?(:csrf_tag)}
4
+ <div class="form-group">
5
+ <label class="col-sm-2 control-label" for="password">#{rodauth.password_label}</label>
6
+ <div class="col-sm-10">
7
+ <input type="password" class="form-control#{' error' if @password_error}" name="#{rodauth.password_param}" id="password"/> #{@password_error}
8
+ </div>
9
+ </div>
10
+ <div class="form-group">
11
+ <label class="col-sm-2 control-label" for="password-confirm">#{rodauth.password_confirm_label}</label>
12
+ <div class="col-sm-10">
13
+ <input type="password" class="form-control" name="#{rodauth.password_confirm_param}" id="password-confirm"/>
14
+ </div>
15
+ </div>
16
+ <div class="form-group">
17
+ <div class="col-sm-offset-2 col-sm-10">
18
+ <input type="submit" class="btn btn-primary" value="#{rodauth.change_password_button}"/>
19
+ </div>
20
+ </div>
21
+ </form>
@@ -0,0 +1,9 @@
1
+ <form method="post" class="rodauth form-horizontal" role="form" id="close-account-form">
2
+ #{rodauth.close_account_additional_form_tags}
3
+ #{csrf_tag if respond_to?(:csrf_tag)}
4
+ <div class="form-group">
5
+ <div class="col-sm-offset-2 col-sm-10">
6
+ <input type="submit" class="btn btn-warning" value="#{rodauth.close_account_button}"/>
7
+ </div>
8
+ </div>
9
+ </form>
@@ -0,0 +1,16 @@
1
+ <form method="post" class="rodauth form-horizontal" role="form" id="confirm-password-form">
2
+ #{rodauth.remember_confirm_additional_form_tags}
3
+ #{csrf_tag if respond_to?(:csrf_tag)}
4
+ <input type="hidden" name="confirm" value="t" />
5
+ <div class="form-group">
6
+ <label class="col-sm-2 control-label" for="password">#{rodauth.password_label}</label>
7
+ <div class="col-sm-10">
8
+ <input type="password" class="form-control#{' error' if @password_error}" name="#{rodauth.password_param}" id="password"/> #{@password_error}
9
+ </div>
10
+ </div>
11
+ <div class="form-group">
12
+ <div class="col-sm-offset-2 col-sm-10">
13
+ <input type="submit" class="btn btn-primary" value="#{rodauth.remember_confirm_button}"/>
14
+ </div>
15
+ </div>
16
+ </form>
@@ -0,0 +1,33 @@
1
+ <form method="post" class="rodauth form-horizontal" role="form" id="create-account-form">
2
+ #{rodauth.create_account_additional_form_tags}
3
+ #{csrf_tag if respond_to?(:csrf_tag)}
4
+ <div class="form-group">
5
+ <label class="col-sm-2 control-label" for="login">#{rodauth.login_label}</label>
6
+ <div class="col-sm-10">
7
+ <input type="text" class="form-control#{' error' if @login_error}" name="#{rodauth.login_param}" id="login" value="#{h request[rodauth.login_param]}"/> #{@login_error}
8
+ </div>
9
+ </div>
10
+ <div class="form-group">
11
+ <label class="col-sm-2 control-label" for="login-confirm">#{rodauth.login_confirm_label}</label>
12
+ <div class="col-sm-10">
13
+ <input type="text" class="form-control" name="login-confirm" id="#{rodauth.login_confirm_param}" value="#{h request[rodauth.login_confirm_param]}"/>
14
+ </div>
15
+ </div>
16
+ <div class="form-group">
17
+ <label class="col-sm-2 control-label" for="password">#{rodauth.password_label}</label>
18
+ <div class="col-sm-10">
19
+ <input type="password" class="form-control#{' error' if @password_error}" name="#{rodauth.password_param}" id="password"/> #{@password_error}
20
+ </div>
21
+ </div>
22
+ <div class="form-group">
23
+ <label class="col-sm-2 control-label" for="password-confirm">#{rodauth.password_confirm_label}</label>
24
+ <div class="col-sm-10">
25
+ <input type="password" class="form-control" name="#{rodauth.password_confirm_param}" id="password-confirm"/>
26
+ </div>
27
+ </div>
28
+ <div class="form-group">
29
+ <div class="col-sm-offset-2 col-sm-10">
30
+ <input type="submit" class="btn btn-primary" value="#{rodauth.create_account_button}"/>
31
+ </div>
32
+ </div>
33
+ </form>
@@ -0,0 +1,25 @@
1
+ #{@login_form_header}
2
+
3
+ <form method="post" class="rodauth form-horizontal" role="form" id="login-form">
4
+ #{rodauth.login_additional_form_tags}
5
+ #{csrf_tag if respond_to?(:csrf_tag)}
6
+ <div class="form-group">
7
+ <label class="col-sm-2 control-label" for="login">#{rodauth.login_label}</label>
8
+ <div class="col-sm-10">
9
+ <input type="text" class="form-control#{' error' if @login_error}" name="#{rodauth.login_param}" id="login" value="#{h request[rodauth.login_param]}"/> #{@login_error}
10
+ </div>
11
+ </div>
12
+ <div class="form-group">
13
+ <label class="col-sm-2 control-label" for="password">#{rodauth.password_label}</label>
14
+ <div class="col-sm-10">
15
+ <input type="password" class="form-control#{' error' if @password_error}" name="#{rodauth.password_param}" id="password"/> #{@password_error}
16
+ </div>
17
+ </div>
18
+ <div class="form-group">
19
+ <div class="col-sm-offset-2 col-sm-10">
20
+ <input type="submit" class="btn btn-primary" value="#{rodauth.login_button}"/>
21
+ </div>
22
+ </div>
23
+ </form>
24
+
25
+ #{rodauth.login_form_footer}
@@ -0,0 +1,9 @@
1
+ <form method="post" class="rodauth form-horizontal" role="form" id="logout-form">
2
+ #{rodauth.logout_additional_form_tags}
3
+ #{csrf_tag if respond_to?(:csrf_tag)}
4
+ <div class="form-group">
5
+ <div class="col-sm-offset-2 col-sm-10">
6
+ <input type="submit" class="btn btn-warning" value="#{rodauth.logout_button}"/>
7
+ </div>
8
+ </div>
9
+ </form>
@@ -0,0 +1,28 @@
1
+ <form method="post" class="rodauth form-horizontal" role="form" id="remember-form">
2
+ #{rodauth.remember_additional_form_tags}
3
+ #{csrf_tag if respond_to?(:csrf_tag)}
4
+ <div class="radio">
5
+ <label>
6
+ <input type="radio" name="remember" id="remember_remember" value="remember"/>
7
+ Remember Me
8
+ </label>
9
+ </div>
10
+ <div class="radio">
11
+ <label>
12
+ <input type="radio" name="remember" id="remember_forget" value="forget"/>
13
+ Forget Me
14
+ </label>
15
+ </div>
16
+ <div class="radio">
17
+ <label>
18
+ <input type="radio" name="remember" id="remember_disable" value="disable"/>
19
+ Disable Remember Me
20
+ </label>
21
+ </div>
22
+ <div class="form-group">
23
+ <div class="col-sm-offset-2 col-sm-10">
24
+ <input type="submit" class="btn btn-primary" value="#{rodauth.remember_button}"/>
25
+ </div>
26
+ </div>
27
+ </form>
28
+
@@ -0,0 +1,5 @@
1
+ Someone has requested a password reset for the account with this email
2
+ address. If you did not request a password reset, please ignore this
3
+ message. If you requested a password reset, please go to
4
+ #{rodauth.reset_password_email_link}
5
+ to reset the password for the account.
@@ -0,0 +1,7 @@
1
+ <form action="#{rodauth.prefix}/#{rodauth.reset_password_route}" method="post" class="rodauth form-horizontal" role="form" id="reset-password-request-form">
2
+ #{rodauth.reset_password_request_additional_form_tags}
3
+ <input type="hidden" name="#{rodauth.login_param}" value="#{h request[rodauth.login_param]}"/>
4
+ #{csrf_tag if respond_to?(:csrf_tag)}
5
+ If you have forgotten your password, you can request a password reset:
6
+ <input type="submit" class="btn btn-primary inline" value="#{rodauth.reset_password_request_button}"/>
7
+ </form>
@@ -0,0 +1,23 @@
1
+ <form method="post" class="rodauth form-horizontal" role="form" id="reset-password-form">
2
+ #{rodauth.reset_password_additional_form_tags}
3
+ <input type="hidden" name="#{rodauth.reset_password_key_param}" value="#{h request[rodauth.reset_password_key_param]}" />
4
+ #{csrf_tag if respond_to?(:csrf_tag)}
5
+ <div class="form-group">
6
+ <label class="col-sm-2 control-label" for="password">#{rodauth.password_label}</label>
7
+ <div class="col-sm-10">
8
+ <input type="password" class="form-control#{' error' if @password_error}" name="#{rodauth.password_param}" id="password"/> #{@password_error}
9
+ </div>
10
+ </div>
11
+ <div class="form-group">
12
+ <label class="col-sm-2 control-label" for="password-confirm">#{rodauth.password_confirm_label}</label>
13
+ <div class="col-sm-10">
14
+ <input type="password" class="form-control" name="#{rodauth.password_confirm_param}" id="password-confirm"/>
15
+ </div>
16
+ </div>
17
+ <div class="form-group">
18
+ <div class="col-sm-offset-2 col-sm-10">
19
+ <input type="submit" class="btn btn-primary" value="#{rodauth.reset_password_button}"/>
20
+ </div>
21
+ </div>
22
+ </form>
23
+
@@ -0,0 +1,5 @@
1
+ Someone has requested a that the account with this email be unlocked.
2
+ If you did not request the unlocking of this account, please ignore this
3
+ message. If you requested the unlocking of this account, please go to
4
+ #{rodauth.unlock_account_email_link}
5
+ to unlock this account.
@@ -0,0 +1,11 @@
1
+ <form action="#{rodauth.prefix}/#{rodauth.unlock_account_route}" method="post" class="rodauth form-horizontal" role="form" id="unlock-account-request-form">
2
+ #{rodauth.unlock_account_request_additional_form_tags}
3
+ #{csrf_tag if respond_to?(:csrf_tag)}
4
+ <input type="hidden" name="#{rodauth.login_param}" value="#{h request[rodauth.login_param]}"/>
5
+ This account is currently locked out. You can request that the account be unlocked:
6
+ <div class="form-group">
7
+ <div class="col-sm-offset-2 col-sm-10">
8
+ <input type="submit" class="btn btn-warning" value="#{rodauth.unlock_account_request_button}"/>
9
+ </div>
10
+ </div>
11
+ </form>
@@ -0,0 +1,11 @@
1
+ <form method="post" class="rodauth form-horizontal" role="form" id="unlock-account-form">
2
+ #{rodauth.unlock_account_additional_form_tags}
3
+ #{csrf_tag if respond_to?(:csrf_tag)}
4
+ <input type="hidden" name="#{rodauth.unlock_account_key_param}" value="#{h request[rodauth.unlock_account_key_param]}"/>
5
+ This account is currently locked out. You can unlock the account:
6
+ <div class="form-group">
7
+ <div class="col-sm-offset-2 col-sm-10">
8
+ <input type="submit" class="btn btn-warning" value="#{rodauth.unlock_account_button}"/>
9
+ </div>
10
+ </div>
11
+ </form>
@@ -0,0 +1,4 @@
1
+ Someone has created an account with this email address. If you did not create
2
+ this account, please ignore this message. If you created this account, please go to
3
+ #{rodauth.verify_account_email_link}
4
+ to verify the account.
@@ -0,0 +1,7 @@
1
+ <form action="#{rodauth.prefix}/#{rodauth.verify_account_route}" method="post" class="rodauth form-horizontal" role="form" id="verify-account-resend-form">
2
+ #{rodauth.verify_account_resend_additional_form_tags}
3
+ <input type="hidden" name="#{rodauth.login_param}" value="#{h request[rodauth.login_param]}"/>
4
+ #{csrf_tag if respond_to?(:csrf_tag)}
5
+ If you no longer have the email to verify the account, you can request that it be resent to you:
6
+ <input type="submit" class="btn btn-primary inline" value="#{rodauth.verify_account_resend_button}"/>
7
+ </form>
@@ -0,0 +1,11 @@
1
+ <form method="post" class="rodauth form-horizontal" role="form" id="verify-account-form">
2
+ #{rodauth.verify_account_additional_form_tags}
3
+ <input type="hidden" name="#{rodauth.verify_account_key_param}" value="#{h request[rodauth.verify_account_key_param]}" />
4
+ #{csrf_tag if respond_to?(:csrf_tag)}
5
+ <div class="form-group">
6
+ <div class="col-sm-offset-2 col-sm-10">
7
+ <input type="submit" class="btn btn-warning" value="#{rodauth.verify_account_button}"/>
8
+ </div>
9
+ </div>
10
+ </form>
11
+
metadata ADDED
@@ -0,0 +1,227 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rodauth
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Jeremy Evans
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-08-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sequel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: roda
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: tilt
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rack_csrf
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bcrypt
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mail
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: minitest
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 5.0.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 5.0.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: minitest-hooks
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 1.1.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 1.1.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: capybara
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 2.1.0
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: 2.1.0
139
+ description: |
140
+ Rodauth is an authentication framework using Roda, Sequel, and PostgreSQL.
141
+ It aims to provide strong security for password storage by utilizing
142
+ separate PostgreSQL database accounts. Configuration is done via
143
+ a DSL that makes it easy to override any part of the authentication
144
+ process.
145
+
146
+ Rodauth currently supports the following authentication-related
147
+ features: login, logout, change password, change login, reset
148
+ password, create account, close account, verify account, remember,
149
+ and lockout.
150
+ email: code@jeremyevans.net
151
+ executables: []
152
+ extensions: []
153
+ extra_rdoc_files:
154
+ - README.rdoc
155
+ - CHANGELOG
156
+ - MIT-LICENSE
157
+ files:
158
+ - CHANGELOG
159
+ - MIT-LICENSE
160
+ - README.rdoc
161
+ - Rakefile
162
+ - lib/roda/plugins/rodauth.rb
163
+ - lib/roda/plugins/rodauth/base.rb
164
+ - lib/roda/plugins/rodauth/change_login.rb
165
+ - lib/roda/plugins/rodauth/change_password.rb
166
+ - lib/roda/plugins/rodauth/close_account.rb
167
+ - lib/roda/plugins/rodauth/create_account.rb
168
+ - lib/roda/plugins/rodauth/lockout.rb
169
+ - lib/roda/plugins/rodauth/login.rb
170
+ - lib/roda/plugins/rodauth/logout.rb
171
+ - lib/roda/plugins/rodauth/remember.rb
172
+ - lib/roda/plugins/rodauth/reset_password.rb
173
+ - lib/roda/plugins/rodauth/verify_account.rb
174
+ - spec/migrate/001_tables.rb
175
+ - spec/migrate_password/001_tables.rb
176
+ - spec/rodauth_spec.rb
177
+ - spec/views/layout.str
178
+ - spec/views/login.str
179
+ - templates/change-login.str
180
+ - templates/change-password.str
181
+ - templates/close-account.str
182
+ - templates/confirm-password.str
183
+ - templates/create-account.str
184
+ - templates/login.str
185
+ - templates/logout.str
186
+ - templates/remember.str
187
+ - templates/reset-password-email.str
188
+ - templates/reset-password-request.str
189
+ - templates/reset-password.str
190
+ - templates/unlock-account-email.str
191
+ - templates/unlock-account-request.str
192
+ - templates/unlock-account.str
193
+ - templates/verify-account-email.str
194
+ - templates/verify-account-resend.str
195
+ - templates/verify-account.str
196
+ homepage: https://github.com/jeremyevans/rodauth
197
+ licenses:
198
+ - MIT
199
+ metadata: {}
200
+ post_install_message:
201
+ rdoc_options:
202
+ - "--quiet"
203
+ - "--line-numbers"
204
+ - "--inline-source"
205
+ - "--title"
206
+ - 'Rodauth: Authentication Framework for Roda/Sequel/PostgreSQL'
207
+ - "--main"
208
+ - README.rdoc
209
+ require_paths:
210
+ - lib
211
+ required_ruby_version: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ required_rubygems_version: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ requirements: []
222
+ rubyforge_project:
223
+ rubygems_version: 2.4.5
224
+ signing_key:
225
+ specification_version: 4
226
+ summary: Authentication Framework for Roda/Sequel/PostgreSQL
227
+ test_files: []