rodauth 0.10.0 → 1.0.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG +146 -0
- data/README.rdoc +644 -220
- data/Rakefile +99 -11
- data/doc/account_expiration.rdoc +55 -0
- data/doc/base.rdoc +104 -0
- data/doc/change_login.rdoc +29 -0
- data/doc/change_password.rdoc +26 -0
- data/doc/close_account.rdoc +31 -0
- data/doc/confirm_password.rdoc +22 -0
- data/doc/create_account.rdoc +34 -0
- data/doc/disallow_password_reuse.rdoc +37 -0
- data/doc/email_base.rdoc +19 -0
- data/doc/jwt.rdoc +35 -0
- data/doc/lockout.rdoc +83 -0
- data/doc/login.rdoc +27 -0
- data/doc/login_password_requirements_base.rdoc +50 -0
- data/doc/logout.rdoc +21 -0
- data/doc/otp.rdoc +100 -0
- data/doc/password_complexity.rdoc +50 -0
- data/doc/password_expiration.rdoc +52 -0
- data/doc/password_grace_period.rdoc +10 -0
- data/doc/recovery_codes.rdoc +60 -0
- data/doc/release_notes/1.0.0.txt +443 -0
- data/doc/remember.rdoc +82 -0
- data/doc/reset_password.rdoc +70 -0
- data/doc/session_expiration.rdoc +27 -0
- data/doc/single_session.rdoc +43 -0
- data/doc/sms_codes.rdoc +119 -0
- data/doc/two_factor_base.rdoc +27 -0
- data/doc/verify_account.rdoc +70 -0
- data/doc/verify_account_grace_period.rdoc +15 -0
- data/doc/verify_change_login.rdoc +9 -0
- data/lib/roda/plugins/rodauth.rb +3 -262
- data/lib/rodauth.rb +260 -0
- data/lib/rodauth/features/account_expiration.rb +108 -0
- data/lib/rodauth/features/base.rb +479 -0
- data/lib/rodauth/features/change_login.rb +77 -0
- data/lib/rodauth/features/change_password.rb +66 -0
- data/lib/rodauth/features/close_account.rb +82 -0
- data/lib/rodauth/features/confirm_password.rb +51 -0
- data/lib/rodauth/features/create_account.rb +128 -0
- data/lib/rodauth/features/disallow_password_reuse.rb +82 -0
- data/lib/rodauth/features/email_base.rb +63 -0
- data/lib/rodauth/features/jwt.rb +151 -0
- data/lib/rodauth/features/lockout.rb +262 -0
- data/lib/rodauth/features/login.rb +61 -0
- data/lib/rodauth/features/login_password_requirements_base.rb +123 -0
- data/lib/rodauth/features/logout.rb +37 -0
- data/lib/rodauth/features/otp.rb +338 -0
- data/lib/rodauth/features/password_complexity.rb +89 -0
- data/lib/rodauth/features/password_expiration.rb +111 -0
- data/lib/rodauth/features/password_grace_period.rb +46 -0
- data/lib/rodauth/features/recovery_codes.rb +240 -0
- data/lib/rodauth/features/remember.rb +200 -0
- data/lib/rodauth/features/reset_password.rb +207 -0
- data/lib/rodauth/features/session_expiration.rb +55 -0
- data/lib/rodauth/features/single_session.rb +87 -0
- data/lib/rodauth/features/sms_codes.rb +498 -0
- data/lib/rodauth/features/two_factor_base.rb +135 -0
- data/lib/rodauth/features/verify_account.rb +232 -0
- data/lib/rodauth/features/verify_account_grace_period.rb +76 -0
- data/lib/rodauth/features/verify_change_login.rb +20 -0
- data/lib/rodauth/migrations.rb +130 -0
- data/lib/rodauth/version.rb +9 -0
- data/spec/account_expiration_spec.rb +90 -0
- data/spec/all.rb +1 -0
- data/spec/change_login_spec.rb +149 -0
- data/spec/change_password_spec.rb +177 -0
- data/spec/close_account_spec.rb +162 -0
- data/spec/confirm_password_spec.rb +70 -0
- data/spec/create_account_spec.rb +127 -0
- data/spec/disallow_password_reuse_spec.rb +84 -0
- data/spec/lockout_spec.rb +228 -0
- data/spec/login_spec.rb +188 -0
- data/spec/migrate/001_tables.rb +103 -16
- data/spec/migrate/002_account_password_hash_column.rb +11 -0
- data/spec/migrate_password/001_tables.rb +60 -42
- data/spec/migrate_travis/001_tables.rb +116 -0
- data/spec/password_complexity_spec.rb +108 -0
- data/spec/password_expiration_spec.rb +243 -0
- data/spec/password_grace_period_spec.rb +93 -0
- data/spec/remember_spec.rb +424 -0
- data/spec/reset_password_spec.rb +185 -0
- data/spec/rodauth_spec.rb +57 -980
- data/spec/session_expiration_spec.rb +58 -0
- data/spec/single_session_spec.rb +107 -0
- data/spec/spec_helper.rb +202 -0
- data/spec/two_factor_spec.rb +1310 -0
- data/spec/verify_account_grace_period_spec.rb +135 -0
- data/spec/verify_account_spec.rb +142 -0
- data/spec/verify_change_login_spec.rb +46 -0
- data/spec/views/login.str +2 -2
- data/templates/add-recovery-codes.str +2 -0
- data/templates/button.str +5 -0
- data/templates/change-login.str +5 -18
- data/templates/change-password.str +6 -14
- data/templates/close-account.str +3 -6
- data/templates/confirm-password.str +4 -14
- data/templates/create-account.str +6 -30
- data/templates/login-confirm-field.str +6 -0
- data/templates/login-field.str +6 -0
- data/templates/login.str +5 -19
- data/templates/logout.str +2 -6
- data/templates/otp-auth-code-field.str +6 -0
- data/templates/otp-auth.str +8 -0
- data/templates/otp-disable.str +6 -0
- data/templates/otp-setup.str +21 -0
- data/templates/password-confirm-field.str +6 -0
- data/templates/password-field.str +6 -0
- data/templates/recovery-auth.str +12 -0
- data/templates/recovery-codes.str +6 -0
- data/templates/remember.str +8 -12
- data/templates/reset-password-request.str +2 -2
- data/templates/reset-password.str +4 -18
- data/templates/sms-auth.str +6 -0
- data/templates/sms-code-field.str +6 -0
- data/templates/sms-confirm.str +7 -0
- data/templates/sms-disable.str +7 -0
- data/templates/sms-request.str +5 -0
- data/templates/sms-setup.str +12 -0
- data/templates/unlock-account-request.str +3 -7
- data/templates/unlock-account.str +4 -7
- data/templates/verify-account-resend.str +2 -2
- data/templates/verify-account.str +2 -6
- metadata +191 -29
- data/lib/roda/plugins/rodauth/base.rb +0 -428
- data/lib/roda/plugins/rodauth/change_login.rb +0 -48
- data/lib/roda/plugins/rodauth/change_password.rb +0 -42
- data/lib/roda/plugins/rodauth/close_account.rb +0 -42
- data/lib/roda/plugins/rodauth/create_account.rb +0 -92
- data/lib/roda/plugins/rodauth/lockout.rb +0 -292
- data/lib/roda/plugins/rodauth/login.rb +0 -81
- data/lib/roda/plugins/rodauth/logout.rb +0 -36
- data/lib/roda/plugins/rodauth/remember.rb +0 -226
- data/lib/roda/plugins/rodauth/reset_password.rb +0 -205
- data/lib/roda/plugins/rodauth/verify_account.rb +0 -228
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<div class="form-group">
|
|
2
|
+
<label class="col-sm-2 control-label" for="login-confirm">#{rodauth.login_confirm_label}</label>
|
|
3
|
+
<div class="col-sm-10">
|
|
4
|
+
<input type="text" class="form-control" name="login-confirm" id="#{rodauth.login_confirm_param}" value="#{h request[rodauth.login_confirm_param]}"/>
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<div class="form-group">
|
|
2
|
+
<label class="col-sm-2 control-label" for="login">#{rodauth.login_label}</label>
|
|
3
|
+
<div class="col-sm-10">
|
|
4
|
+
<input type="text" class="form-control#{' error' if rodauth.field_error(rodauth.login_param)}" name="#{rodauth.login_param}" id="login" value="#{h request[rodauth.login_param]}"/> #{rodauth.field_error(rodauth.login_param)}
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
data/templates/login.str
CHANGED
|
@@ -1,25 +1,11 @@
|
|
|
1
|
-
#{
|
|
1
|
+
#{rodauth.login_form_header}
|
|
2
2
|
|
|
3
3
|
<form method="post" class="rodauth form-horizontal" role="form" id="login-form">
|
|
4
4
|
#{rodauth.login_additional_form_tags}
|
|
5
|
-
#{csrf_tag
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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>
|
|
5
|
+
#{rodauth.csrf_tag}
|
|
6
|
+
#{rodauth.render('login-field')}
|
|
7
|
+
#{rodauth.render('password-field')}
|
|
8
|
+
#{rodauth.button(rodauth.login_button)}
|
|
23
9
|
</form>
|
|
24
10
|
|
|
25
11
|
#{rodauth.login_form_footer}
|
data/templates/logout.str
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
<form method="post" class="rodauth form-horizontal" role="form" id="logout-form">
|
|
2
2
|
#{rodauth.logout_additional_form_tags}
|
|
3
|
-
#{csrf_tag
|
|
4
|
-
|
|
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>
|
|
3
|
+
#{rodauth.csrf_tag}
|
|
4
|
+
#{rodauth.button(rodauth.logout_button, :class=>'btn btn-warning')}
|
|
9
5
|
</form>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<div class="form-group">
|
|
2
|
+
<label class="col-sm-4 control-label" for="otp-auth-code">#{rodauth.otp_auth_label}</label>
|
|
3
|
+
<div class="col-sm-3">
|
|
4
|
+
<input type="text" class="form-control#{' error' if rodauth.field_error(rodauth.otp_auth_param)}" name="#{rodauth.otp_auth_param}" id="otp-auth-code" value=""/> #{rodauth.field_error(rodauth.otp_auth_param)}
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<form method="post" class="rodauth form-horizontal" role="form" id="otp-auth-form">
|
|
2
|
+
#{rodauth.otp_auth_additional_form_tags}
|
|
3
|
+
#{rodauth.csrf_tag}
|
|
4
|
+
#{rodauth.render('otp-auth-code-field')}
|
|
5
|
+
#{rodauth.button(rodauth.otp_auth_button)}
|
|
6
|
+
</form>
|
|
7
|
+
|
|
8
|
+
#{rodauth.otp_auth_form_footer}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<form method="post" class="rodauth form-horizontal" role="form" id="otp-disable-form">
|
|
2
|
+
#{rodauth.otp_disable_additional_form_tags}
|
|
3
|
+
#{rodauth.csrf_tag}
|
|
4
|
+
#{rodauth.render('password-field') if rodauth.two_factor_modifications_require_password?}
|
|
5
|
+
#{rodauth.button(rodauth.otp_disable_button, :class=>'btn btn-warning')}
|
|
6
|
+
</form>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<form method="post" class="rodauth form-horizontal" role="form" id="otp-setup-form">
|
|
2
|
+
#{rodauth.otp_setup_additional_form_tags}
|
|
3
|
+
<input type="hidden" id="otp-key" name="#{rodauth.otp_setup_param}" value="#{rodauth.otp_key}" />
|
|
4
|
+
#{rodauth.csrf_tag}
|
|
5
|
+
|
|
6
|
+
<div class="col-sm-6">
|
|
7
|
+
<div class="form-group">
|
|
8
|
+
<p>Secret: #{rodauth.otp_key}</p>
|
|
9
|
+
<p>Provisioning URL: #{rodauth.otp_provisioning_uri}</p>
|
|
10
|
+
</div>
|
|
11
|
+
#{rodauth.render('password-field') if rodauth.two_factor_modifications_require_password?}
|
|
12
|
+
#{rodauth.render('otp-auth-code-field')}
|
|
13
|
+
#{rodauth.button(rodauth.otp_setup_button)}
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div class="col-sm-6">
|
|
17
|
+
<div class="form-group">
|
|
18
|
+
<p>#{rodauth.otp_qr_code}</p>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</form>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<div class="form-group">
|
|
2
|
+
<label class="col-sm-2 control-label" for="password-confirm">#{rodauth.password_confirm_label}</label>
|
|
3
|
+
<div class="col-sm-10">
|
|
4
|
+
<input type="password" class="form-control" name="#{rodauth.password_confirm_param}" id="password-confirm"/>
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<div class="form-group">
|
|
2
|
+
<label class="col-sm-2 control-label" for="password">#{rodauth.password_label}</label>
|
|
3
|
+
<div class="col-sm-10">
|
|
4
|
+
<input type="password" class="form-control#{' error' if rodauth.field_error(rodauth.password_param)}" name="#{rodauth.password_param}" id="password"/> #{rodauth.field_error(rodauth.password_param)}
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<form method="post" class="rodauth form-horizontal" role="form" id="recovery-auth-form">
|
|
2
|
+
#{rodauth.recovery_auth_additional_form_tags}
|
|
3
|
+
#{rodauth.csrf_tag}
|
|
4
|
+
<div class="form-group">
|
|
5
|
+
<label class="col-sm-2 control-label" for="recovery_code">#{rodauth.recovery_codes_label}</label>
|
|
6
|
+
<div class="col-sm-10">
|
|
7
|
+
<input type="text" class="form-control#{' error' if rodauth.field_error(rodauth.recovery_codes_param)}" name="#{rodauth.recovery_codes_param}" id="recovery_code" value=""/> #{rodauth.field_error(rodauth.recovery_codes_param)}
|
|
8
|
+
</div>
|
|
9
|
+
</div>
|
|
10
|
+
#{rodauth.button(rodauth.recovery_auth_button)}
|
|
11
|
+
</form>
|
|
12
|
+
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<form method="post" class="rodauth form-horizontal" role="form" id="recovery-codes-form">
|
|
2
|
+
#{rodauth.recovery_codes_additional_form_tags}
|
|
3
|
+
#{rodauth.csrf_tag}
|
|
4
|
+
#{rodauth.render('password-field') if rodauth.two_factor_modifications_require_password?}
|
|
5
|
+
#{rodauth.button(rodauth.recovery_codes_button || rodauth.view_recovery_codes_button, :name=>(rodauth.add_recovery_codes_param if rodauth.recovery_codes_button))}
|
|
6
|
+
</form>
|
data/templates/remember.str
CHANGED
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
<form method="post" class="rodauth form-horizontal" role="form" id="remember-form">
|
|
2
2
|
#{rodauth.remember_additional_form_tags}
|
|
3
|
-
#{csrf_tag
|
|
3
|
+
#{rodauth.csrf_tag}
|
|
4
4
|
<div class="radio">
|
|
5
5
|
<label>
|
|
6
|
-
<input type="radio" name="
|
|
7
|
-
|
|
6
|
+
<input type="radio" name="#{rodauth.remember_param}" id="remember_remember" value="#{rodauth.remember_remember_param_value}"/>
|
|
7
|
+
#{rodauth.remember_remember_label}
|
|
8
8
|
</label>
|
|
9
9
|
</div>
|
|
10
10
|
<div class="radio">
|
|
11
11
|
<label>
|
|
12
|
-
<input type="radio" name="
|
|
13
|
-
|
|
12
|
+
<input type="radio" name="#{rodauth.remember_param}" id="remember_forget" value="#{rodauth.remember_forget_param_value}"/>
|
|
13
|
+
#{rodauth.remember_forget_label}
|
|
14
14
|
</label>
|
|
15
15
|
</div>
|
|
16
16
|
<div class="radio">
|
|
17
17
|
<label>
|
|
18
|
-
<input type="radio" name="
|
|
19
|
-
|
|
18
|
+
<input type="radio" name="#{rodauth.remember_param}" id="remember_disable" value="#{rodauth.remember_disable_param_value}"/>
|
|
19
|
+
#{rodauth.remember_disable_label}
|
|
20
20
|
</label>
|
|
21
21
|
</div>
|
|
22
|
-
|
|
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>
|
|
22
|
+
#{rodauth.button(rodauth.remember_button)}
|
|
27
23
|
</form>
|
|
28
24
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<form action="#{rodauth.prefix}/#{rodauth.
|
|
1
|
+
<form action="#{rodauth.prefix}/#{rodauth.reset_password_request_route}" method="post" class="rodauth form-horizontal" role="form" id="reset-password-request-form">
|
|
2
2
|
#{rodauth.reset_password_request_additional_form_tags}
|
|
3
3
|
<input type="hidden" name="#{rodauth.login_param}" value="#{h request[rodauth.login_param]}"/>
|
|
4
|
-
#{csrf_tag
|
|
4
|
+
#{rodauth.csrf_tag}
|
|
5
5
|
If you have forgotten your password, you can request a password reset:
|
|
6
6
|
<input type="submit" class="btn btn-primary inline" value="#{rodauth.reset_password_request_button}"/>
|
|
7
7
|
</form>
|
|
@@ -1,23 +1,9 @@
|
|
|
1
1
|
<form method="post" class="rodauth form-horizontal" role="form" id="reset-password-form">
|
|
2
2
|
#{rodauth.reset_password_additional_form_tags}
|
|
3
3
|
<input type="hidden" name="#{rodauth.reset_password_key_param}" value="#{h request[rodauth.reset_password_key_param]}" />
|
|
4
|
-
#{csrf_tag
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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>
|
|
4
|
+
#{rodauth.csrf_tag}
|
|
5
|
+
#{rodauth.render('password-field')}
|
|
6
|
+
#{rodauth.render('password-confirm-field') if rodauth.require_password_confirmation?}
|
|
7
|
+
#{rodauth.button(rodauth.reset_password_button)}
|
|
22
8
|
</form>
|
|
23
9
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<div class="form-group">
|
|
2
|
+
<label class="col-sm-3 control-label" for="sms-code">#{rodauth.sms_code_label}</label>
|
|
3
|
+
<div class="col-sm-3">
|
|
4
|
+
<input type="text" class="form-control#{' error' if rodauth.field_error(rodauth.sms_code_param)}" name="#{rodauth.sms_code_param}" id="sms-code" value=""/> #{rodauth.field_error(rodauth.sms_code_param)}
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<form method="post" class="rodauth form-horizontal" role="form" id="sms-disable-form">
|
|
2
|
+
#{rodauth.sms_disable_additional_form_tags}
|
|
3
|
+
#{rodauth.csrf_tag}
|
|
4
|
+
#{rodauth.render('password-field') if rodauth.two_factor_modifications_require_password?}
|
|
5
|
+
#{rodauth.button(rodauth.sms_disable_button)}
|
|
6
|
+
</form>
|
|
7
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<form method="post" class="rodauth form-horizontal" role="form" id="sms-setup-form">
|
|
2
|
+
#{rodauth.sms_setup_additional_form_tags}
|
|
3
|
+
#{rodauth.csrf_tag}
|
|
4
|
+
#{rodauth.render('password-field') if rodauth.two_factor_modifications_require_password?}
|
|
5
|
+
<div class="form-group">
|
|
6
|
+
<label class="col-sm-2 control-label" for="sms-phone">#{rodauth.sms_phone_label}</label>
|
|
7
|
+
<div class="col-sm-3">
|
|
8
|
+
<input type="text" class="form-control#{' error' if rodauth.field_error(rodauth.sms_phone_param)}" name="#{rodauth.sms_phone_param}" id="sms-phone" value="#{h request[rodauth.sms_phone_param]}"/> #{rodauth.field_error(rodauth.sms_phone_param)}
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
11
|
+
#{rodauth.button(rodauth.sms_setup_button)}
|
|
12
|
+
</form>
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
<form action="#{rodauth.prefix}/#{rodauth.
|
|
1
|
+
<form action="#{rodauth.prefix}/#{rodauth.unlock_account_request_route}" method="post" class="rodauth form-horizontal" role="form" id="unlock-account-request-form">
|
|
2
2
|
#{rodauth.unlock_account_request_additional_form_tags}
|
|
3
|
-
#{csrf_tag
|
|
3
|
+
#{rodauth.csrf_tag}
|
|
4
4
|
<input type="hidden" name="#{rodauth.login_param}" value="#{h request[rodauth.login_param]}"/>
|
|
5
5
|
This account is currently locked out. You can request that the account be unlocked:
|
|
6
|
-
<
|
|
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>
|
|
6
|
+
<input type="submit" class="btn btn-primary inline" value="#{rodauth.unlock_account_request_button}"/>
|
|
11
7
|
</form>
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
<form method="post" class="rodauth form-horizontal" role="form" id="unlock-account-form">
|
|
2
2
|
#{rodauth.unlock_account_additional_form_tags}
|
|
3
|
-
#{csrf_tag
|
|
3
|
+
#{rodauth.csrf_tag}
|
|
4
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
|
-
|
|
7
|
-
|
|
8
|
-
<input type="submit" class="btn btn-warning" value="#{rodauth.unlock_account_button}"/>
|
|
9
|
-
</div>
|
|
10
|
-
</div>
|
|
5
|
+
<p>This account is currently locked out. You can unlock the account.</p>
|
|
6
|
+
#{rodauth.render('password-field') if rodauth.unlock_account_requires_password?}
|
|
7
|
+
#{rodauth.button(rodauth.unlock_account_button)}
|
|
11
8
|
</form>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<form action="#{rodauth.prefix}/#{rodauth.
|
|
1
|
+
<form action="#{rodauth.prefix}/#{rodauth.verify_account_resend_route}" method="post" class="rodauth form-horizontal" role="form" id="verify-account-resend-form">
|
|
2
2
|
#{rodauth.verify_account_resend_additional_form_tags}
|
|
3
3
|
<input type="hidden" name="#{rodauth.login_param}" value="#{h request[rodauth.login_param]}"/>
|
|
4
|
-
#{csrf_tag
|
|
4
|
+
#{rodauth.csrf_tag}
|
|
5
5
|
If you no longer have the email to verify the account, you can request that it be resent to you:
|
|
6
6
|
<input type="submit" class="btn btn-primary inline" value="#{rodauth.verify_account_resend_button}"/>
|
|
7
7
|
</form>
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
<form method="post" class="rodauth form-horizontal" role="form" id="verify-account-form">
|
|
2
2
|
#{rodauth.verify_account_additional_form_tags}
|
|
3
3
|
<input type="hidden" name="#{rodauth.verify_account_key_param}" value="#{h request[rodauth.verify_account_key_param]}" />
|
|
4
|
-
#{csrf_tag
|
|
5
|
-
|
|
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>
|
|
4
|
+
#{rodauth.csrf_tag}
|
|
5
|
+
#{rodauth.button(rodauth.verify_account_button)}
|
|
10
6
|
</form>
|
|
11
7
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rodauth
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jeremy Evans
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-04-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: sequel
|
|
@@ -30,14 +30,14 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 2.6.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 2.6.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: tilt
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -45,7 +45,7 @@ dependencies:
|
|
|
45
45
|
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: '0'
|
|
48
|
-
type: :
|
|
48
|
+
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
@@ -59,7 +59,7 @@ dependencies:
|
|
|
59
59
|
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: '0'
|
|
62
|
-
type: :
|
|
62
|
+
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
@@ -73,7 +73,7 @@ dependencies:
|
|
|
73
73
|
- - ">="
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
75
|
version: '0'
|
|
76
|
-
type: :
|
|
76
|
+
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
@@ -87,7 +87,49 @@ dependencies:
|
|
|
87
87
|
- - ">="
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
89
|
version: '0'
|
|
90
|
-
type: :
|
|
90
|
+
type: :development
|
|
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: rotp
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: rqrcode
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ">="
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: jwt
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
type: :development
|
|
91
133
|
prerelease: false
|
|
92
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
135
|
requirements:
|
|
@@ -137,16 +179,16 @@ dependencies:
|
|
|
137
179
|
- !ruby/object:Gem::Version
|
|
138
180
|
version: 2.1.0
|
|
139
181
|
description: |
|
|
140
|
-
Rodauth is an authentication
|
|
141
|
-
It
|
|
142
|
-
|
|
182
|
+
Rodauth is an authentication and account management framework for
|
|
183
|
+
rack applications. It's built using Roda and Sequel, but it can
|
|
184
|
+
be used as middleware in front of web applications that use
|
|
185
|
+
other web frameworks and database libraries.
|
|
186
|
+
|
|
187
|
+
Rodauth aims to provide strong security for password storage by
|
|
188
|
+
utilizing separate database accounts if possible on PostgreSQL,
|
|
189
|
+
MySQL, and Microsoft SQL Server. Configuration is done via
|
|
143
190
|
a DSL that makes it easy to override any part of the authentication
|
|
144
191
|
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
192
|
email: code@jeremyevans.net
|
|
151
193
|
executables: []
|
|
152
194
|
extensions: []
|
|
@@ -154,39 +196,159 @@ extra_rdoc_files:
|
|
|
154
196
|
- README.rdoc
|
|
155
197
|
- CHANGELOG
|
|
156
198
|
- MIT-LICENSE
|
|
199
|
+
- doc/base.rdoc
|
|
200
|
+
- doc/login.rdoc
|
|
201
|
+
- doc/logout.rdoc
|
|
202
|
+
- doc/change_password.rdoc
|
|
203
|
+
- doc/reset_password.rdoc
|
|
204
|
+
- doc/remember.rdoc
|
|
205
|
+
- doc/create_account.rdoc
|
|
206
|
+
- doc/close_account.rdoc
|
|
207
|
+
- doc/verify_account.rdoc
|
|
208
|
+
- doc/lockout.rdoc
|
|
209
|
+
- doc/otp.rdoc
|
|
210
|
+
- doc/change_login.rdoc
|
|
211
|
+
- doc/password_complexity.rdoc
|
|
212
|
+
- doc/disallow_password_reuse.rdoc
|
|
213
|
+
- doc/password_expiration.rdoc
|
|
214
|
+
- doc/account_expiration.rdoc
|
|
215
|
+
- doc/single_session.rdoc
|
|
216
|
+
- doc/recovery_codes.rdoc
|
|
217
|
+
- doc/sms_codes.rdoc
|
|
218
|
+
- doc/email_base.rdoc
|
|
219
|
+
- doc/two_factor_base.rdoc
|
|
220
|
+
- doc/jwt.rdoc
|
|
221
|
+
- doc/password_grace_period.rdoc
|
|
222
|
+
- doc/session_expiration.rdoc
|
|
223
|
+
- doc/login_password_requirements_base.rdoc
|
|
224
|
+
- doc/verify_account_grace_period.rdoc
|
|
225
|
+
- doc/confirm_password.rdoc
|
|
226
|
+
- doc/verify_change_login.rdoc
|
|
227
|
+
- doc/release_notes/1.0.0.txt
|
|
157
228
|
files:
|
|
158
229
|
- CHANGELOG
|
|
159
230
|
- MIT-LICENSE
|
|
160
231
|
- README.rdoc
|
|
161
232
|
- Rakefile
|
|
233
|
+
- doc/account_expiration.rdoc
|
|
234
|
+
- doc/base.rdoc
|
|
235
|
+
- doc/change_login.rdoc
|
|
236
|
+
- doc/change_password.rdoc
|
|
237
|
+
- doc/close_account.rdoc
|
|
238
|
+
- doc/confirm_password.rdoc
|
|
239
|
+
- doc/create_account.rdoc
|
|
240
|
+
- doc/disallow_password_reuse.rdoc
|
|
241
|
+
- doc/email_base.rdoc
|
|
242
|
+
- doc/jwt.rdoc
|
|
243
|
+
- doc/lockout.rdoc
|
|
244
|
+
- doc/login.rdoc
|
|
245
|
+
- doc/login_password_requirements_base.rdoc
|
|
246
|
+
- doc/logout.rdoc
|
|
247
|
+
- doc/otp.rdoc
|
|
248
|
+
- doc/password_complexity.rdoc
|
|
249
|
+
- doc/password_expiration.rdoc
|
|
250
|
+
- doc/password_grace_period.rdoc
|
|
251
|
+
- doc/recovery_codes.rdoc
|
|
252
|
+
- doc/release_notes/1.0.0.txt
|
|
253
|
+
- doc/remember.rdoc
|
|
254
|
+
- doc/reset_password.rdoc
|
|
255
|
+
- doc/session_expiration.rdoc
|
|
256
|
+
- doc/single_session.rdoc
|
|
257
|
+
- doc/sms_codes.rdoc
|
|
258
|
+
- doc/two_factor_base.rdoc
|
|
259
|
+
- doc/verify_account.rdoc
|
|
260
|
+
- doc/verify_account_grace_period.rdoc
|
|
261
|
+
- doc/verify_change_login.rdoc
|
|
162
262
|
- lib/roda/plugins/rodauth.rb
|
|
163
|
-
- lib/
|
|
164
|
-
- lib/
|
|
165
|
-
- lib/
|
|
166
|
-
- lib/
|
|
167
|
-
- lib/
|
|
168
|
-
- lib/
|
|
169
|
-
- lib/
|
|
170
|
-
- lib/
|
|
171
|
-
- lib/
|
|
172
|
-
- lib/
|
|
173
|
-
- lib/
|
|
263
|
+
- lib/rodauth.rb
|
|
264
|
+
- lib/rodauth/features/account_expiration.rb
|
|
265
|
+
- lib/rodauth/features/base.rb
|
|
266
|
+
- lib/rodauth/features/change_login.rb
|
|
267
|
+
- lib/rodauth/features/change_password.rb
|
|
268
|
+
- lib/rodauth/features/close_account.rb
|
|
269
|
+
- lib/rodauth/features/confirm_password.rb
|
|
270
|
+
- lib/rodauth/features/create_account.rb
|
|
271
|
+
- lib/rodauth/features/disallow_password_reuse.rb
|
|
272
|
+
- lib/rodauth/features/email_base.rb
|
|
273
|
+
- lib/rodauth/features/jwt.rb
|
|
274
|
+
- lib/rodauth/features/lockout.rb
|
|
275
|
+
- lib/rodauth/features/login.rb
|
|
276
|
+
- lib/rodauth/features/login_password_requirements_base.rb
|
|
277
|
+
- lib/rodauth/features/logout.rb
|
|
278
|
+
- lib/rodauth/features/otp.rb
|
|
279
|
+
- lib/rodauth/features/password_complexity.rb
|
|
280
|
+
- lib/rodauth/features/password_expiration.rb
|
|
281
|
+
- lib/rodauth/features/password_grace_period.rb
|
|
282
|
+
- lib/rodauth/features/recovery_codes.rb
|
|
283
|
+
- lib/rodauth/features/remember.rb
|
|
284
|
+
- lib/rodauth/features/reset_password.rb
|
|
285
|
+
- lib/rodauth/features/session_expiration.rb
|
|
286
|
+
- lib/rodauth/features/single_session.rb
|
|
287
|
+
- lib/rodauth/features/sms_codes.rb
|
|
288
|
+
- lib/rodauth/features/two_factor_base.rb
|
|
289
|
+
- lib/rodauth/features/verify_account.rb
|
|
290
|
+
- lib/rodauth/features/verify_account_grace_period.rb
|
|
291
|
+
- lib/rodauth/features/verify_change_login.rb
|
|
292
|
+
- lib/rodauth/migrations.rb
|
|
293
|
+
- lib/rodauth/version.rb
|
|
294
|
+
- spec/account_expiration_spec.rb
|
|
295
|
+
- spec/all.rb
|
|
296
|
+
- spec/change_login_spec.rb
|
|
297
|
+
- spec/change_password_spec.rb
|
|
298
|
+
- spec/close_account_spec.rb
|
|
299
|
+
- spec/confirm_password_spec.rb
|
|
300
|
+
- spec/create_account_spec.rb
|
|
301
|
+
- spec/disallow_password_reuse_spec.rb
|
|
302
|
+
- spec/lockout_spec.rb
|
|
303
|
+
- spec/login_spec.rb
|
|
174
304
|
- spec/migrate/001_tables.rb
|
|
305
|
+
- spec/migrate/002_account_password_hash_column.rb
|
|
175
306
|
- spec/migrate_password/001_tables.rb
|
|
307
|
+
- spec/migrate_travis/001_tables.rb
|
|
308
|
+
- spec/password_complexity_spec.rb
|
|
309
|
+
- spec/password_expiration_spec.rb
|
|
310
|
+
- spec/password_grace_period_spec.rb
|
|
311
|
+
- spec/remember_spec.rb
|
|
312
|
+
- spec/reset_password_spec.rb
|
|
176
313
|
- spec/rodauth_spec.rb
|
|
314
|
+
- spec/session_expiration_spec.rb
|
|
315
|
+
- spec/single_session_spec.rb
|
|
316
|
+
- spec/spec_helper.rb
|
|
317
|
+
- spec/two_factor_spec.rb
|
|
318
|
+
- spec/verify_account_grace_period_spec.rb
|
|
319
|
+
- spec/verify_account_spec.rb
|
|
320
|
+
- spec/verify_change_login_spec.rb
|
|
177
321
|
- spec/views/layout.str
|
|
178
322
|
- spec/views/login.str
|
|
323
|
+
- templates/add-recovery-codes.str
|
|
324
|
+
- templates/button.str
|
|
179
325
|
- templates/change-login.str
|
|
180
326
|
- templates/change-password.str
|
|
181
327
|
- templates/close-account.str
|
|
182
328
|
- templates/confirm-password.str
|
|
183
329
|
- templates/create-account.str
|
|
330
|
+
- templates/login-confirm-field.str
|
|
331
|
+
- templates/login-field.str
|
|
184
332
|
- templates/login.str
|
|
185
333
|
- templates/logout.str
|
|
334
|
+
- templates/otp-auth-code-field.str
|
|
335
|
+
- templates/otp-auth.str
|
|
336
|
+
- templates/otp-disable.str
|
|
337
|
+
- templates/otp-setup.str
|
|
338
|
+
- templates/password-confirm-field.str
|
|
339
|
+
- templates/password-field.str
|
|
340
|
+
- templates/recovery-auth.str
|
|
341
|
+
- templates/recovery-codes.str
|
|
186
342
|
- templates/remember.str
|
|
187
343
|
- templates/reset-password-email.str
|
|
188
344
|
- templates/reset-password-request.str
|
|
189
345
|
- templates/reset-password.str
|
|
346
|
+
- templates/sms-auth.str
|
|
347
|
+
- templates/sms-code-field.str
|
|
348
|
+
- templates/sms-confirm.str
|
|
349
|
+
- templates/sms-disable.str
|
|
350
|
+
- templates/sms-request.str
|
|
351
|
+
- templates/sms-setup.str
|
|
190
352
|
- templates/unlock-account-email.str
|
|
191
353
|
- templates/unlock-account-request.str
|
|
192
354
|
- templates/unlock-account.str
|
|
@@ -203,7 +365,7 @@ rdoc_options:
|
|
|
203
365
|
- "--line-numbers"
|
|
204
366
|
- "--inline-source"
|
|
205
367
|
- "--title"
|
|
206
|
-
- 'Rodauth: Authentication Framework for
|
|
368
|
+
- 'Rodauth: Authentication and Account Management Framework for Rack Applications'
|
|
207
369
|
- "--main"
|
|
208
370
|
- README.rdoc
|
|
209
371
|
require_paths:
|
|
@@ -223,5 +385,5 @@ rubyforge_project:
|
|
|
223
385
|
rubygems_version: 2.5.1
|
|
224
386
|
signing_key:
|
|
225
387
|
specification_version: 4
|
|
226
|
-
summary: Authentication Framework for
|
|
388
|
+
summary: Authentication and Account Management Framework for Rack Applications
|
|
227
389
|
test_files: []
|