booth 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (285) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +4 -0
  3. data/LICENSE.md +22 -0
  4. data/README.md +372 -0
  5. data/app/assets/config/booth_manifest.js +15 -0
  6. data/app/assets/images/booth/browsers/README.md +2 -0
  7. data/app/assets/images/booth/browsers/chrome.svg +1 -0
  8. data/app/assets/images/booth/browsers/edge.svg +1 -0
  9. data/app/assets/images/booth/browsers/firefox.svg +1 -0
  10. data/app/assets/images/booth/browsers/internet_explorer.svg +1 -0
  11. data/app/assets/images/booth/browsers/opera.svg +1 -0
  12. data/app/assets/images/booth/browsers/safari.svg +1 -0
  13. data/app/assets/images/booth/browsers/unknown.svg +1 -0
  14. data/app/assets/images/booth/platforms/README.md +2 -0
  15. data/app/assets/images/booth/platforms/android.svg +6 -0
  16. data/app/assets/images/booth/platforms/apple.svg +6 -0
  17. data/app/assets/images/booth/platforms/linux.svg +6 -0
  18. data/app/assets/images/booth/platforms/unknown.svg +1 -0
  19. data/app/assets/images/booth/platforms/windows.svg +6 -0
  20. data/app/assets/javascripts/booth/all.js +162 -0
  21. data/app/assets/javascripts/booth/all.js.map +1 -0
  22. data/app/assets/javascripts/booth/booth.ts +194 -0
  23. data/app/assets/javascripts/booth/webauthn-json.ts +99 -0
  24. data/config/locales/de.yml +84 -0
  25. data/config/locales/en.yml +79 -0
  26. data/lib/booth/adminland/credentials/create.rb +30 -0
  27. data/lib/booth/adminland/onboardings/create.rb +63 -0
  28. data/lib/booth/adminland/onboardings/destroy.rb +50 -0
  29. data/lib/booth/adminland/onboardings/find.rb +93 -0
  30. data/lib/booth/adminland/onboardings/index.rb +23 -0
  31. data/lib/booth/adminland/periodic_cleanup.rb +11 -0
  32. data/lib/booth/adminland/recoveries/consume.rb +70 -0
  33. data/lib/booth/adminland.rb +48 -0
  34. data/lib/booth/audits/register/added_otp.rb +22 -0
  35. data/lib/booth/audits/register/changed_otp.rb +22 -0
  36. data/lib/booth/audits/register/completed_onboarding.rb +22 -0
  37. data/lib/booth/audits/register/correct_otp.rb +42 -0
  38. data/lib/booth/audits/register/correct_password.rb +43 -0
  39. data/lib/booth/audits/register/logout.rb +22 -0
  40. data/lib/booth/audits/register/requested_password_reset.rb +22 -0
  41. data/lib/booth/audits/register/wrong_otp.rb +22 -0
  42. data/lib/booth/audits/register/wrong_password.rb +25 -0
  43. data/lib/booth/authenticators/confirm.rb +34 -0
  44. data/lib/booth/authenticators/credential_mode_after_confirmation.rb +25 -0
  45. data/lib/booth/authenticators/step.rb +19 -0
  46. data/lib/booth/concerns/action.rb +58 -0
  47. data/lib/booth/concerns/transition.rb +17 -0
  48. data/lib/booth/configuration.rb +116 -0
  49. data/lib/booth/configure.rb +37 -0
  50. data/lib/booth/contests/get.rb +36 -0
  51. data/lib/booth/contests/respond.rb +78 -0
  52. data/lib/booth/contests/set_for_login.rb +28 -0
  53. data/lib/booth/cooldowns/distance_of_time.rb +46 -0
  54. data/lib/booth/cooldowns/otp.rb +22 -0
  55. data/lib/booth/cooldowns/password.rb +44 -0
  56. data/lib/booth/cooldowns/password_reset.rb +24 -0
  57. data/lib/booth/cooldowns/strategies/exponential.rb +82 -0
  58. data/lib/booth/cooldowns/strategies/global.rb +62 -0
  59. data/lib/booth/cooldowns/strategies/result.rb +22 -0
  60. data/lib/booth/credentials/create.rb +28 -0
  61. data/lib/booth/credentials/create_with_onboarding.rb +26 -0
  62. data/lib/booth/credentials/find_by_username.rb +45 -0
  63. data/lib/booth/credentials/mode.rb +69 -0
  64. data/lib/booth/credentials/modes/otp_addable.rb +23 -0
  65. data/lib/booth/credentials/modes/otp_changeable.rb +23 -0
  66. data/lib/booth/credentials/modes/otp_manageable.rb +17 -0
  67. data/lib/booth/credentials/modes/otp_removable.rb +23 -0
  68. data/lib/booth/credentials/modes/password_addable.rb +29 -0
  69. data/lib/booth/credentials/modes/password_changeable.rb +31 -0
  70. data/lib/booth/credentials/modes/password_manageable.rb +17 -0
  71. data/lib/booth/credentials/modes/password_removable.rb +24 -0
  72. data/lib/booth/credentials/modes/password_removal_requires_user_verifiable_webauth.rb +16 -0
  73. data/lib/booth/credentials/modes/webauth_addable.rb +26 -0
  74. data/lib/booth/credentials/modes/webauth_manageable.rb +16 -0
  75. data/lib/booth/credentials/modes/webauth_removable.rb +25 -0
  76. data/lib/booth/credentials/otp_authentication.rb +59 -0
  77. data/lib/booth/credentials/password_authentication.rb +72 -0
  78. data/lib/booth/credentials/webauth_challenge.rb +28 -0
  79. data/lib/booth/engine.rb +25 -0
  80. data/lib/booth/errors.rb +86 -0
  81. data/lib/booth/geolocation.rb +20 -0
  82. data/lib/booth/hooks/after_fetch.rb +54 -0
  83. data/lib/booth/hooks/before_logout.rb +29 -0
  84. data/lib/booth/hooks/serialize_from_session.rb +24 -0
  85. data/lib/booth/hooks/serialize_into_session.rb +14 -0
  86. data/lib/booth/logger.rb +41 -0
  87. data/lib/booth/logging.rb +59 -0
  88. data/lib/booth/method_object.rb +73 -0
  89. data/lib/booth/mode.rb +22 -0
  90. data/lib/booth/models/application_record.rb +7 -0
  91. data/lib/booth/models/audit.rb +24 -0
  92. data/lib/booth/models/authenticator.rb +45 -0
  93. data/lib/booth/models/concerns/modeable.rb +50 -0
  94. data/lib/booth/models/concerns/otpable.rb +37 -0
  95. data/lib/booth/models/concerns/passwordable.rb +58 -0
  96. data/lib/booth/models/contest.rb +55 -0
  97. data/lib/booth/models/contests/scopes/recently_created.rb +23 -0
  98. data/lib/booth/models/contests/scopes/recently_responded.rb +32 -0
  99. data/lib/booth/models/credential.rb +61 -0
  100. data/lib/booth/models/onboarding.rb +61 -0
  101. data/lib/booth/models/password_reset.rb +41 -0
  102. data/lib/booth/models/recovery.rb +32 -0
  103. data/lib/booth/models/registration.rb +10 -0
  104. data/lib/booth/models/session.rb +47 -0
  105. data/lib/booth/models/user_agent.rb +50 -0
  106. data/lib/booth/modes/base.rb +25 -0
  107. data/lib/booth/modes/username_and_password.rb +7 -0
  108. data/lib/booth/modes/username_and_webauth.rb +7 -0
  109. data/lib/booth/modes/username_password_and_otp.rb +7 -0
  110. data/lib/booth/modes/username_password_and_webauth.rb +7 -0
  111. data/lib/booth/onboardings/find.rb +35 -0
  112. data/lib/booth/onboardings/propagate_to_credential.rb +63 -0
  113. data/lib/booth/onboardings/step.rb +68 -0
  114. data/lib/booth/password_resets/create.rb +57 -0
  115. data/lib/booth/password_resets/find.rb +36 -0
  116. data/lib/booth/password_resets/propagate_to_credential.rb +36 -0
  117. data/lib/booth/password_resets/step.rb +18 -0
  118. data/lib/booth/recoveries/create.rb +45 -0
  119. data/lib/booth/request.rb +106 -0
  120. data/lib/booth/requests/agent.rb +14 -0
  121. data/lib/booth/requests/authentication.rb +47 -0
  122. data/lib/booth/requests/ip.rb +28 -0
  123. data/lib/booth/requests/return_path.rb +34 -0
  124. data/lib/booth/requests/session.rb +106 -0
  125. data/lib/booth/requests/storage.rb +62 -0
  126. data/lib/booth/requests/storages/login.rb +108 -0
  127. data/lib/booth/requests/storages/otp.rb +54 -0
  128. data/lib/booth/requests/storages/password.rb +49 -0
  129. data/lib/booth/requests/storages/password_reset.rb +35 -0
  130. data/lib/booth/requests/storages/recovery.rb +35 -0
  131. data/lib/booth/requests/storages/registration.rb +27 -0
  132. data/lib/booth/requests/storages/webauth.rb +38 -0
  133. data/lib/booth/requests/sudo.rb +110 -0
  134. data/lib/booth/routes/userland.rb +80 -0
  135. data/lib/booth/sessions/create_and_login.rb +46 -0
  136. data/lib/booth/sessions/historical_locations.rb +18 -0
  137. data/lib/booth/sessions/index.rb +59 -0
  138. data/lib/booth/sessions/revoke.rb +51 -0
  139. data/lib/booth/sessions/revoke_all_others.rb +43 -0
  140. data/lib/booth/sessions/to_passport.rb +51 -0
  141. data/lib/booth/syntaxes/contest_code.rb +58 -0
  142. data/lib/booth/syntaxes/email.rb +97 -0
  143. data/lib/booth/syntaxes/ip.rb +37 -0
  144. data/lib/booth/syntaxes/otp.rb +57 -0
  145. data/lib/booth/syntaxes/scope.rb +21 -0
  146. data/lib/booth/syntaxes/scope_comparison.rb +28 -0
  147. data/lib/booth/syntaxes/secret_key.rb +64 -0
  148. data/lib/booth/syntaxes/username.rb +85 -0
  149. data/lib/booth/syntaxes/uuid.rb +23 -0
  150. data/lib/booth/test/helpers.rb +63 -0
  151. data/lib/booth/test/support/assert_all_partials_were_covered.rb +63 -0
  152. data/lib/booth/test/support/assert_logged_in.rb +49 -0
  153. data/lib/booth/test/support/assert_logged_out.rb +30 -0
  154. data/lib/booth/test/support/assert_partial.rb +29 -0
  155. data/lib/booth/test/support/force_login.rb +26 -0
  156. data/lib/booth/test/support/get_session_value.rb +35 -0
  157. data/lib/booth/test/support/otp_code_from_session.rb +30 -0
  158. data/lib/booth/test/support/soft_reset_session.rb +22 -0
  159. data/lib/booth/test/userland/logins/missing_authenticators.rb +72 -0
  160. data/lib/booth/test/userland/logins/missing_onboarding.rb +35 -0
  161. data/lib/booth/test/userland/logins/username_and_password.rb +40 -0
  162. data/lib/booth/test/userland/logins/username_and_webauth.rb +75 -0
  163. data/lib/booth/test/userland/logins/username_password_and_otp.rb +45 -0
  164. data/lib/booth/test/userland/logins/username_password_and_webauth.rb +86 -0
  165. data/lib/booth/test/userland/onboardings/already_logged_in.rb +64 -0
  166. data/lib/booth/test/userland/onboardings/otp.rb +63 -0
  167. data/lib/booth/test/userland/onboardings/password.rb +49 -0
  168. data/lib/booth/test/userland/onboardings/timeout.rb +47 -0
  169. data/lib/booth/test/userland/otps/manage.rb +86 -0
  170. data/lib/booth/test/userland/password_resets/reset.rb +102 -0
  171. data/lib/booth/test/userland.rb +38 -0
  172. data/lib/booth/test/webauthn/disable.rb +17 -0
  173. data/lib/booth/test/webauthn/enable.rb +19 -0
  174. data/lib/booth/test/webauthn/virtual_authenticators/create.rb +38 -0
  175. data/lib/booth/test/webauthn/virtual_authenticators/destroy.rb +20 -0
  176. data/lib/booth/test.rb +53 -0
  177. data/lib/booth/to_struct.rb +11 -0
  178. data/lib/booth/userland/extract_flash_messages.rb +35 -0
  179. data/lib/booth/userland/logins/create.rb +28 -0
  180. data/lib/booth/userland/logins/destroy.rb +37 -0
  181. data/lib/booth/userland/logins/new.rb +70 -0
  182. data/lib/booth/userland/logins/transitions/create/choose_username.rb +41 -0
  183. data/lib/booth/userland/logins/transitions/create/enter_otp.rb +70 -0
  184. data/lib/booth/userland/logins/transitions/create/skip_remotes.rb +24 -0
  185. data/lib/booth/userland/logins/transitions/create/verify_password.rb +70 -0
  186. data/lib/booth/userland/logins/transitions/create/webauth_authentication_initiation.rb +55 -0
  187. data/lib/booth/userland/logins/transitions/create/webauth_authentication_verification.rb +80 -0
  188. data/lib/booth/userland/logins/transitions/new/already_logged_in.rb +21 -0
  189. data/lib/booth/userland/logins/transitions/new/fallible.rb +27 -0
  190. data/lib/booth/userland/logins/transitions/new/mode_first_time.rb +20 -0
  191. data/lib/booth/userland/logins/transitions/new/mode_username_and_password.rb +20 -0
  192. data/lib/booth/userland/logins/transitions/new/mode_username_and_webauth.rb +26 -0
  193. data/lib/booth/userland/logins/transitions/new/mode_username_password_and_otp.rb +24 -0
  194. data/lib/booth/userland/logins/transitions/new/mode_username_password_and_webauth.rb +24 -0
  195. data/lib/booth/userland/logins/transitions/new/no_username_chosen.rb +19 -0
  196. data/lib/booth/userland/logins/transitions/new/remote_session_available.rb +52 -0
  197. data/lib/booth/userland/logins/transitions/new/timed_out.rb +25 -0
  198. data/lib/booth/userland/onboardings/show.rb +74 -0
  199. data/lib/booth/userland/onboardings/transitions/update/choose_mode.rb +58 -0
  200. data/lib/booth/userland/onboardings/transitions/update/choose_password.rb +41 -0
  201. data/lib/booth/userland/onboardings/transitions/update/choose_webauth_nickname.rb +50 -0
  202. data/lib/booth/userland/onboardings/transitions/update/confirm_otp.rb +58 -0
  203. data/lib/booth/userland/onboardings/transitions/update/confirm_password.rb +49 -0
  204. data/lib/booth/userland/onboardings/transitions/update/register_otp.rb +31 -0
  205. data/lib/booth/userland/onboardings/transitions/update/reset_otp.rb +40 -0
  206. data/lib/booth/userland/onboardings/transitions/update/reset_password.rb +35 -0
  207. data/lib/booth/userland/onboardings/transitions/update/reset_webauth.rb +46 -0
  208. data/lib/booth/userland/onboardings/transitions/update/webauth_authentication_initiation.rb +40 -0
  209. data/lib/booth/userland/onboardings/transitions/update/webauth_authentication_verification.rb +59 -0
  210. data/lib/booth/userland/onboardings/transitions/update/webauth_registration_initiation.rb +46 -0
  211. data/lib/booth/userland/onboardings/transitions/update/webauth_registration_verification.rb +56 -0
  212. data/lib/booth/userland/onboardings/update.rb +68 -0
  213. data/lib/booth/userland/otps/destroy.rb +42 -0
  214. data/lib/booth/userland/otps/edit.rb +72 -0
  215. data/lib/booth/userland/otps/guards/manageable.rb +21 -0
  216. data/lib/booth/userland/otps/guards/sudo.rb +23 -0
  217. data/lib/booth/userland/otps/show.rb +36 -0
  218. data/lib/booth/userland/otps/sudo.rb +51 -0
  219. data/lib/booth/userland/otps/transitions/update/confirm.rb +84 -0
  220. data/lib/booth/userland/otps/transitions/update/register.rb +40 -0
  221. data/lib/booth/userland/otps/transitions/update/reset.rb +31 -0
  222. data/lib/booth/userland/otps/update.rb +34 -0
  223. data/lib/booth/userland/password_resets/create.rb +73 -0
  224. data/lib/booth/userland/password_resets/guards/logged_out.rb +21 -0
  225. data/lib/booth/userland/password_resets/new.rb +57 -0
  226. data/lib/booth/userland/password_resets/show.rb +77 -0
  227. data/lib/booth/userland/password_resets/transitions/update/choose_password.rb +48 -0
  228. data/lib/booth/userland/password_resets/transitions/update/confirm_password.rb +54 -0
  229. data/lib/booth/userland/password_resets/transitions/update/reset_password.rb +29 -0
  230. data/lib/booth/userland/password_resets/update.rb +65 -0
  231. data/lib/booth/userland/passwords/destroy.rb +41 -0
  232. data/lib/booth/userland/passwords/edit.rb +54 -0
  233. data/lib/booth/userland/passwords/guards/manageable.rb +21 -0
  234. data/lib/booth/userland/passwords/guards/removable.rb +21 -0
  235. data/lib/booth/userland/passwords/guards/sudo.rb +21 -0
  236. data/lib/booth/userland/passwords/remove.rb +34 -0
  237. data/lib/booth/userland/passwords/show.rb +32 -0
  238. data/lib/booth/userland/passwords/sudo.rb +55 -0
  239. data/lib/booth/userland/passwords/transitions/remove/step.rb +27 -0
  240. data/lib/booth/userland/passwords/transitions/update/choose_password.rb +62 -0
  241. data/lib/booth/userland/passwords/transitions/update/confirm_password.rb +82 -0
  242. data/lib/booth/userland/passwords/update.rb +33 -0
  243. data/lib/booth/userland/personal_contests/show.rb +60 -0
  244. data/lib/booth/userland/personal_contests/update.rb +37 -0
  245. data/lib/booth/userland/recoveries/create.rb +48 -0
  246. data/lib/booth/userland/recoveries/new.rb +35 -0
  247. data/lib/booth/userland/registrations/create.rb +56 -0
  248. data/lib/booth/userland/registrations/new.rb +39 -0
  249. data/lib/booth/userland/sessions/destroy_one_or_other.rb +41 -0
  250. data/lib/booth/userland/sessions/index.rb +27 -0
  251. data/lib/booth/userland/sessions/show.rb +31 -0
  252. data/lib/booth/userland/sessions/transitions/destroy/enter_password.rb +50 -0
  253. data/lib/booth/userland/sessions/transitions/destroy/enter_webauth.rb +56 -0
  254. data/lib/booth/userland/sessions/transitions/destroy/verify_password.rb +83 -0
  255. data/lib/booth/userland/sessions/transitions/destroy/webauth_authentication_initiation.rb +38 -0
  256. data/lib/booth/userland/sessions/transitions/destroy/webauth_authentication_verification.rb +61 -0
  257. data/lib/booth/userland/sessions/transitions/show/enter_webauth.rb +56 -0
  258. data/lib/booth/userland/webauths/create.rb +83 -0
  259. data/lib/booth/userland/webauths/destroy.rb +60 -0
  260. data/lib/booth/userland/webauths/guards/manageable.rb +21 -0
  261. data/lib/booth/userland/webauths/guards/sudo.rb +22 -0
  262. data/lib/booth/userland/webauths/index.rb +43 -0
  263. data/lib/booth/userland/webauths/new.rb +70 -0
  264. data/lib/booth/userland/webauths/sudo.rb +25 -0
  265. data/lib/booth/userland/webauths/transitions/create/authentication_initiation.rb +52 -0
  266. data/lib/booth/userland/webauths/transitions/create/authentication_verification.rb +64 -0
  267. data/lib/booth/userland/webauths/transitions/create/choose_nickname.rb +50 -0
  268. data/lib/booth/userland/webauths/transitions/create/registration_initiation.rb +61 -0
  269. data/lib/booth/userland/webauths/transitions/create/registration_verification.rb +68 -0
  270. data/lib/booth/userland/webauths/transitions/create/reset.rb +36 -0
  271. data/lib/booth/userland/webauths/transitions/new/step.rb +23 -0
  272. data/lib/booth/userland/webauths/transitions/sudo/authentication_initiation.rb +47 -0
  273. data/lib/booth/userland/webauths/transitions/sudo/authentication_verification.rb +34 -0
  274. data/lib/booth/userland.rb +192 -0
  275. data/lib/booth/version.rb +3 -0
  276. data/lib/booth/webauth/authentication_verification.rb +68 -0
  277. data/lib/booth/webauth/demand_user_verification.rb +29 -0
  278. data/lib/booth/webauth/options_for_create.rb +46 -0
  279. data/lib/booth/webauth/options_for_get.rb +29 -0
  280. data/lib/booth.rb +267 -0
  281. data/lib/generators/booth/migration/migration_generator.rb +25 -0
  282. data/lib/generators/booth/migration/templates/add_credential_to_users.erb +18 -0
  283. data/lib/generators/booth/migration/templates/create_booth_mode_types.erb +20 -0
  284. data/lib/generators/booth/migration/templates/create_booth_tables.erb +135 -0
  285. metadata +861 -0
metadata ADDED
@@ -0,0 +1,861 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: booth
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - halo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-10-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: active_model_otp
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '6'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bcrypt
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 3.1.7
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 3.1.7
69
+ - !ruby/object:Gem::Dependency
70
+ name: i18n
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: browser
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: dry-initializer
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
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: pwned
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
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: rqrcode
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: tron
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '1'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '1'
153
+ - !ruby/object:Gem::Dependency
154
+ name: warden
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: webauthn
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: capybara
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: capybara-email
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: capybara-lockstep
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: capybara-selenium
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: database_cleaner
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: dotenv-rails
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: factory_bot_rails
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ - !ruby/object:Gem::Dependency
280
+ name: listen
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :development
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ - !ruby/object:Gem::Dependency
294
+ name: pastel
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ type: :development
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ - !ruby/object:Gem::Dependency
308
+ name: pg
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ type: :development
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0'
321
+ - !ruby/object:Gem::Dependency
322
+ name: pgreset
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - ">="
326
+ - !ruby/object:Gem::Version
327
+ version: '0'
328
+ type: :development
329
+ prerelease: false
330
+ version_requirements: !ruby/object:Gem::Requirement
331
+ requirements:
332
+ - - ">="
333
+ - !ruby/object:Gem::Version
334
+ version: '0'
335
+ - !ruby/object:Gem::Dependency
336
+ name: pry
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - ">="
340
+ - !ruby/object:Gem::Version
341
+ version: '0'
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - ">="
347
+ - !ruby/object:Gem::Version
348
+ version: '0'
349
+ - !ruby/object:Gem::Dependency
350
+ name: puma
351
+ requirement: !ruby/object:Gem::Requirement
352
+ requirements:
353
+ - - ">="
354
+ - !ruby/object:Gem::Version
355
+ version: '0'
356
+ type: :development
357
+ prerelease: false
358
+ version_requirements: !ruby/object:Gem::Requirement
359
+ requirements:
360
+ - - ">="
361
+ - !ruby/object:Gem::Version
362
+ version: '0'
363
+ - !ruby/object:Gem::Dependency
364
+ name: rack_session_access
365
+ requirement: !ruby/object:Gem::Requirement
366
+ requirements:
367
+ - - ">="
368
+ - !ruby/object:Gem::Version
369
+ version: '0'
370
+ type: :development
371
+ prerelease: false
372
+ version_requirements: !ruby/object:Gem::Requirement
373
+ requirements:
374
+ - - ">="
375
+ - !ruby/object:Gem::Version
376
+ version: '0'
377
+ - !ruby/object:Gem::Dependency
378
+ name: rails
379
+ requirement: !ruby/object:Gem::Requirement
380
+ requirements:
381
+ - - ">="
382
+ - !ruby/object:Gem::Version
383
+ version: '7'
384
+ type: :development
385
+ prerelease: false
386
+ version_requirements: !ruby/object:Gem::Requirement
387
+ requirements:
388
+ - - ">="
389
+ - !ruby/object:Gem::Version
390
+ version: '7'
391
+ - !ruby/object:Gem::Dependency
392
+ name: rubocop
393
+ requirement: !ruby/object:Gem::Requirement
394
+ requirements:
395
+ - - ">="
396
+ - !ruby/object:Gem::Version
397
+ version: '0'
398
+ type: :development
399
+ prerelease: false
400
+ version_requirements: !ruby/object:Gem::Requirement
401
+ requirements:
402
+ - - ">="
403
+ - !ruby/object:Gem::Version
404
+ version: '0'
405
+ - !ruby/object:Gem::Dependency
406
+ name: rubocop-rails
407
+ requirement: !ruby/object:Gem::Requirement
408
+ requirements:
409
+ - - ">="
410
+ - !ruby/object:Gem::Version
411
+ version: '0'
412
+ type: :development
413
+ prerelease: false
414
+ version_requirements: !ruby/object:Gem::Requirement
415
+ requirements:
416
+ - - ">="
417
+ - !ruby/object:Gem::Version
418
+ version: '0'
419
+ - !ruby/object:Gem::Dependency
420
+ name: sassc-rails
421
+ requirement: !ruby/object:Gem::Requirement
422
+ requirements:
423
+ - - ">="
424
+ - !ruby/object:Gem::Version
425
+ version: '0'
426
+ type: :development
427
+ prerelease: false
428
+ version_requirements: !ruby/object:Gem::Requirement
429
+ requirements:
430
+ - - ">="
431
+ - !ruby/object:Gem::Version
432
+ version: '0'
433
+ - !ruby/object:Gem::Dependency
434
+ name: selenium-devtools
435
+ requirement: !ruby/object:Gem::Requirement
436
+ requirements:
437
+ - - ">="
438
+ - !ruby/object:Gem::Version
439
+ version: '0'
440
+ type: :development
441
+ prerelease: false
442
+ version_requirements: !ruby/object:Gem::Requirement
443
+ requirements:
444
+ - - ">="
445
+ - !ruby/object:Gem::Version
446
+ version: '0'
447
+ - !ruby/object:Gem::Dependency
448
+ name: simplecov
449
+ requirement: !ruby/object:Gem::Requirement
450
+ requirements:
451
+ - - ">="
452
+ - !ruby/object:Gem::Version
453
+ version: '0'
454
+ type: :development
455
+ prerelease: false
456
+ version_requirements: !ruby/object:Gem::Requirement
457
+ requirements:
458
+ - - ">="
459
+ - !ruby/object:Gem::Version
460
+ version: '0'
461
+ - !ruby/object:Gem::Dependency
462
+ name: slim-rails
463
+ requirement: !ruby/object:Gem::Requirement
464
+ requirements:
465
+ - - ">="
466
+ - !ruby/object:Gem::Version
467
+ version: '0'
468
+ type: :development
469
+ prerelease: false
470
+ version_requirements: !ruby/object:Gem::Requirement
471
+ requirements:
472
+ - - ">="
473
+ - !ruby/object:Gem::Version
474
+ version: '0'
475
+ - !ruby/object:Gem::Dependency
476
+ name: timecop
477
+ requirement: !ruby/object:Gem::Requirement
478
+ requirements:
479
+ - - ">="
480
+ - !ruby/object:Gem::Version
481
+ version: '0'
482
+ type: :development
483
+ prerelease: false
484
+ version_requirements: !ruby/object:Gem::Requirement
485
+ requirements:
486
+ - - ">="
487
+ - !ruby/object:Gem::Version
488
+ version: '0'
489
+ - !ruby/object:Gem::Dependency
490
+ name: tty-command
491
+ requirement: !ruby/object:Gem::Requirement
492
+ requirements:
493
+ - - ">="
494
+ - !ruby/object:Gem::Version
495
+ version: '0'
496
+ type: :development
497
+ prerelease: false
498
+ version_requirements: !ruby/object:Gem::Requirement
499
+ requirements:
500
+ - - ">="
501
+ - !ruby/object:Gem::Version
502
+ version: '0'
503
+ - !ruby/object:Gem::Dependency
504
+ name: tty-prompt
505
+ requirement: !ruby/object:Gem::Requirement
506
+ requirements:
507
+ - - ">="
508
+ - !ruby/object:Gem::Version
509
+ version: '0'
510
+ type: :development
511
+ prerelease: false
512
+ version_requirements: !ruby/object:Gem::Requirement
513
+ requirements:
514
+ - - ">="
515
+ - !ruby/object:Gem::Version
516
+ version: '0'
517
+ - !ruby/object:Gem::Dependency
518
+ name: tty-spinner
519
+ requirement: !ruby/object:Gem::Requirement
520
+ requirements:
521
+ - - ">="
522
+ - !ruby/object:Gem::Version
523
+ version: '0'
524
+ type: :development
525
+ prerelease: false
526
+ version_requirements: !ruby/object:Gem::Requirement
527
+ requirements:
528
+ - - ">="
529
+ - !ruby/object:Gem::Version
530
+ version: '0'
531
+ - !ruby/object:Gem::Dependency
532
+ name: webdrivers
533
+ requirement: !ruby/object:Gem::Requirement
534
+ requirements:
535
+ - - ">="
536
+ - !ruby/object:Gem::Version
537
+ version: '0'
538
+ type: :development
539
+ prerelease: false
540
+ version_requirements: !ruby/object:Gem::Requirement
541
+ requirements:
542
+ - - ">="
543
+ - !ruby/object:Gem::Version
544
+ version: '0'
545
+ description: In Devise you own controllers, models and views. With Booth you don't
546
+ own the models (much like ActiveStorage). The Controllers you do own, but the implementation
547
+ is pretty much just calling Booth helpers. The views you own completely, just as
548
+ in Devise.
549
+ email: ''
550
+ executables: []
551
+ extensions: []
552
+ extra_rdoc_files: []
553
+ files:
554
+ - CHANGELOG.md
555
+ - LICENSE.md
556
+ - README.md
557
+ - app/assets/config/booth_manifest.js
558
+ - app/assets/images/booth/browsers/README.md
559
+ - app/assets/images/booth/browsers/chrome.svg
560
+ - app/assets/images/booth/browsers/edge.svg
561
+ - app/assets/images/booth/browsers/firefox.svg
562
+ - app/assets/images/booth/browsers/internet_explorer.svg
563
+ - app/assets/images/booth/browsers/opera.svg
564
+ - app/assets/images/booth/browsers/safari.svg
565
+ - app/assets/images/booth/browsers/unknown.svg
566
+ - app/assets/images/booth/platforms/README.md
567
+ - app/assets/images/booth/platforms/android.svg
568
+ - app/assets/images/booth/platforms/apple.svg
569
+ - app/assets/images/booth/platforms/linux.svg
570
+ - app/assets/images/booth/platforms/unknown.svg
571
+ - app/assets/images/booth/platforms/windows.svg
572
+ - app/assets/javascripts/booth/all.js
573
+ - app/assets/javascripts/booth/all.js.map
574
+ - app/assets/javascripts/booth/booth.ts
575
+ - app/assets/javascripts/booth/webauthn-json.ts
576
+ - config/locales/de.yml
577
+ - config/locales/en.yml
578
+ - lib/booth.rb
579
+ - lib/booth/adminland.rb
580
+ - lib/booth/adminland/credentials/create.rb
581
+ - lib/booth/adminland/onboardings/create.rb
582
+ - lib/booth/adminland/onboardings/destroy.rb
583
+ - lib/booth/adminland/onboardings/find.rb
584
+ - lib/booth/adminland/onboardings/index.rb
585
+ - lib/booth/adminland/periodic_cleanup.rb
586
+ - lib/booth/adminland/recoveries/consume.rb
587
+ - lib/booth/audits/register/added_otp.rb
588
+ - lib/booth/audits/register/changed_otp.rb
589
+ - lib/booth/audits/register/completed_onboarding.rb
590
+ - lib/booth/audits/register/correct_otp.rb
591
+ - lib/booth/audits/register/correct_password.rb
592
+ - lib/booth/audits/register/logout.rb
593
+ - lib/booth/audits/register/requested_password_reset.rb
594
+ - lib/booth/audits/register/wrong_otp.rb
595
+ - lib/booth/audits/register/wrong_password.rb
596
+ - lib/booth/authenticators/confirm.rb
597
+ - lib/booth/authenticators/credential_mode_after_confirmation.rb
598
+ - lib/booth/authenticators/step.rb
599
+ - lib/booth/concerns/action.rb
600
+ - lib/booth/concerns/transition.rb
601
+ - lib/booth/configuration.rb
602
+ - lib/booth/configure.rb
603
+ - lib/booth/contests/get.rb
604
+ - lib/booth/contests/respond.rb
605
+ - lib/booth/contests/set_for_login.rb
606
+ - lib/booth/cooldowns/distance_of_time.rb
607
+ - lib/booth/cooldowns/otp.rb
608
+ - lib/booth/cooldowns/password.rb
609
+ - lib/booth/cooldowns/password_reset.rb
610
+ - lib/booth/cooldowns/strategies/exponential.rb
611
+ - lib/booth/cooldowns/strategies/global.rb
612
+ - lib/booth/cooldowns/strategies/result.rb
613
+ - lib/booth/credentials/create.rb
614
+ - lib/booth/credentials/create_with_onboarding.rb
615
+ - lib/booth/credentials/find_by_username.rb
616
+ - lib/booth/credentials/mode.rb
617
+ - lib/booth/credentials/modes/otp_addable.rb
618
+ - lib/booth/credentials/modes/otp_changeable.rb
619
+ - lib/booth/credentials/modes/otp_manageable.rb
620
+ - lib/booth/credentials/modes/otp_removable.rb
621
+ - lib/booth/credentials/modes/password_addable.rb
622
+ - lib/booth/credentials/modes/password_changeable.rb
623
+ - lib/booth/credentials/modes/password_manageable.rb
624
+ - lib/booth/credentials/modes/password_removable.rb
625
+ - lib/booth/credentials/modes/password_removal_requires_user_verifiable_webauth.rb
626
+ - lib/booth/credentials/modes/webauth_addable.rb
627
+ - lib/booth/credentials/modes/webauth_manageable.rb
628
+ - lib/booth/credentials/modes/webauth_removable.rb
629
+ - lib/booth/credentials/otp_authentication.rb
630
+ - lib/booth/credentials/password_authentication.rb
631
+ - lib/booth/credentials/webauth_challenge.rb
632
+ - lib/booth/engine.rb
633
+ - lib/booth/errors.rb
634
+ - lib/booth/geolocation.rb
635
+ - lib/booth/hooks/after_fetch.rb
636
+ - lib/booth/hooks/before_logout.rb
637
+ - lib/booth/hooks/serialize_from_session.rb
638
+ - lib/booth/hooks/serialize_into_session.rb
639
+ - lib/booth/logger.rb
640
+ - lib/booth/logging.rb
641
+ - lib/booth/method_object.rb
642
+ - lib/booth/mode.rb
643
+ - lib/booth/models/application_record.rb
644
+ - lib/booth/models/audit.rb
645
+ - lib/booth/models/authenticator.rb
646
+ - lib/booth/models/concerns/modeable.rb
647
+ - lib/booth/models/concerns/otpable.rb
648
+ - lib/booth/models/concerns/passwordable.rb
649
+ - lib/booth/models/contest.rb
650
+ - lib/booth/models/contests/scopes/recently_created.rb
651
+ - lib/booth/models/contests/scopes/recently_responded.rb
652
+ - lib/booth/models/credential.rb
653
+ - lib/booth/models/onboarding.rb
654
+ - lib/booth/models/password_reset.rb
655
+ - lib/booth/models/recovery.rb
656
+ - lib/booth/models/registration.rb
657
+ - lib/booth/models/session.rb
658
+ - lib/booth/models/user_agent.rb
659
+ - lib/booth/modes/base.rb
660
+ - lib/booth/modes/username_and_password.rb
661
+ - lib/booth/modes/username_and_webauth.rb
662
+ - lib/booth/modes/username_password_and_otp.rb
663
+ - lib/booth/modes/username_password_and_webauth.rb
664
+ - lib/booth/onboardings/find.rb
665
+ - lib/booth/onboardings/propagate_to_credential.rb
666
+ - lib/booth/onboardings/step.rb
667
+ - lib/booth/password_resets/create.rb
668
+ - lib/booth/password_resets/find.rb
669
+ - lib/booth/password_resets/propagate_to_credential.rb
670
+ - lib/booth/password_resets/step.rb
671
+ - lib/booth/recoveries/create.rb
672
+ - lib/booth/request.rb
673
+ - lib/booth/requests/agent.rb
674
+ - lib/booth/requests/authentication.rb
675
+ - lib/booth/requests/ip.rb
676
+ - lib/booth/requests/return_path.rb
677
+ - lib/booth/requests/session.rb
678
+ - lib/booth/requests/storage.rb
679
+ - lib/booth/requests/storages/login.rb
680
+ - lib/booth/requests/storages/otp.rb
681
+ - lib/booth/requests/storages/password.rb
682
+ - lib/booth/requests/storages/password_reset.rb
683
+ - lib/booth/requests/storages/recovery.rb
684
+ - lib/booth/requests/storages/registration.rb
685
+ - lib/booth/requests/storages/webauth.rb
686
+ - lib/booth/requests/sudo.rb
687
+ - lib/booth/routes/userland.rb
688
+ - lib/booth/sessions/create_and_login.rb
689
+ - lib/booth/sessions/historical_locations.rb
690
+ - lib/booth/sessions/index.rb
691
+ - lib/booth/sessions/revoke.rb
692
+ - lib/booth/sessions/revoke_all_others.rb
693
+ - lib/booth/sessions/to_passport.rb
694
+ - lib/booth/syntaxes/contest_code.rb
695
+ - lib/booth/syntaxes/email.rb
696
+ - lib/booth/syntaxes/ip.rb
697
+ - lib/booth/syntaxes/otp.rb
698
+ - lib/booth/syntaxes/scope.rb
699
+ - lib/booth/syntaxes/scope_comparison.rb
700
+ - lib/booth/syntaxes/secret_key.rb
701
+ - lib/booth/syntaxes/username.rb
702
+ - lib/booth/syntaxes/uuid.rb
703
+ - lib/booth/test.rb
704
+ - lib/booth/test/helpers.rb
705
+ - lib/booth/test/support/assert_all_partials_were_covered.rb
706
+ - lib/booth/test/support/assert_logged_in.rb
707
+ - lib/booth/test/support/assert_logged_out.rb
708
+ - lib/booth/test/support/assert_partial.rb
709
+ - lib/booth/test/support/force_login.rb
710
+ - lib/booth/test/support/get_session_value.rb
711
+ - lib/booth/test/support/otp_code_from_session.rb
712
+ - lib/booth/test/support/soft_reset_session.rb
713
+ - lib/booth/test/userland.rb
714
+ - lib/booth/test/userland/logins/missing_authenticators.rb
715
+ - lib/booth/test/userland/logins/missing_onboarding.rb
716
+ - lib/booth/test/userland/logins/username_and_password.rb
717
+ - lib/booth/test/userland/logins/username_and_webauth.rb
718
+ - lib/booth/test/userland/logins/username_password_and_otp.rb
719
+ - lib/booth/test/userland/logins/username_password_and_webauth.rb
720
+ - lib/booth/test/userland/onboardings/already_logged_in.rb
721
+ - lib/booth/test/userland/onboardings/otp.rb
722
+ - lib/booth/test/userland/onboardings/password.rb
723
+ - lib/booth/test/userland/onboardings/timeout.rb
724
+ - lib/booth/test/userland/otps/manage.rb
725
+ - lib/booth/test/userland/password_resets/reset.rb
726
+ - lib/booth/test/webauthn/disable.rb
727
+ - lib/booth/test/webauthn/enable.rb
728
+ - lib/booth/test/webauthn/virtual_authenticators/create.rb
729
+ - lib/booth/test/webauthn/virtual_authenticators/destroy.rb
730
+ - lib/booth/to_struct.rb
731
+ - lib/booth/userland.rb
732
+ - lib/booth/userland/extract_flash_messages.rb
733
+ - lib/booth/userland/logins/create.rb
734
+ - lib/booth/userland/logins/destroy.rb
735
+ - lib/booth/userland/logins/new.rb
736
+ - lib/booth/userland/logins/transitions/create/choose_username.rb
737
+ - lib/booth/userland/logins/transitions/create/enter_otp.rb
738
+ - lib/booth/userland/logins/transitions/create/skip_remotes.rb
739
+ - lib/booth/userland/logins/transitions/create/verify_password.rb
740
+ - lib/booth/userland/logins/transitions/create/webauth_authentication_initiation.rb
741
+ - lib/booth/userland/logins/transitions/create/webauth_authentication_verification.rb
742
+ - lib/booth/userland/logins/transitions/new/already_logged_in.rb
743
+ - lib/booth/userland/logins/transitions/new/fallible.rb
744
+ - lib/booth/userland/logins/transitions/new/mode_first_time.rb
745
+ - lib/booth/userland/logins/transitions/new/mode_username_and_password.rb
746
+ - lib/booth/userland/logins/transitions/new/mode_username_and_webauth.rb
747
+ - lib/booth/userland/logins/transitions/new/mode_username_password_and_otp.rb
748
+ - lib/booth/userland/logins/transitions/new/mode_username_password_and_webauth.rb
749
+ - lib/booth/userland/logins/transitions/new/no_username_chosen.rb
750
+ - lib/booth/userland/logins/transitions/new/remote_session_available.rb
751
+ - lib/booth/userland/logins/transitions/new/timed_out.rb
752
+ - lib/booth/userland/onboardings/show.rb
753
+ - lib/booth/userland/onboardings/transitions/update/choose_mode.rb
754
+ - lib/booth/userland/onboardings/transitions/update/choose_password.rb
755
+ - lib/booth/userland/onboardings/transitions/update/choose_webauth_nickname.rb
756
+ - lib/booth/userland/onboardings/transitions/update/confirm_otp.rb
757
+ - lib/booth/userland/onboardings/transitions/update/confirm_password.rb
758
+ - lib/booth/userland/onboardings/transitions/update/register_otp.rb
759
+ - lib/booth/userland/onboardings/transitions/update/reset_otp.rb
760
+ - lib/booth/userland/onboardings/transitions/update/reset_password.rb
761
+ - lib/booth/userland/onboardings/transitions/update/reset_webauth.rb
762
+ - lib/booth/userland/onboardings/transitions/update/webauth_authentication_initiation.rb
763
+ - lib/booth/userland/onboardings/transitions/update/webauth_authentication_verification.rb
764
+ - lib/booth/userland/onboardings/transitions/update/webauth_registration_initiation.rb
765
+ - lib/booth/userland/onboardings/transitions/update/webauth_registration_verification.rb
766
+ - lib/booth/userland/onboardings/update.rb
767
+ - lib/booth/userland/otps/destroy.rb
768
+ - lib/booth/userland/otps/edit.rb
769
+ - lib/booth/userland/otps/guards/manageable.rb
770
+ - lib/booth/userland/otps/guards/sudo.rb
771
+ - lib/booth/userland/otps/show.rb
772
+ - lib/booth/userland/otps/sudo.rb
773
+ - lib/booth/userland/otps/transitions/update/confirm.rb
774
+ - lib/booth/userland/otps/transitions/update/register.rb
775
+ - lib/booth/userland/otps/transitions/update/reset.rb
776
+ - lib/booth/userland/otps/update.rb
777
+ - lib/booth/userland/password_resets/create.rb
778
+ - lib/booth/userland/password_resets/guards/logged_out.rb
779
+ - lib/booth/userland/password_resets/new.rb
780
+ - lib/booth/userland/password_resets/show.rb
781
+ - lib/booth/userland/password_resets/transitions/update/choose_password.rb
782
+ - lib/booth/userland/password_resets/transitions/update/confirm_password.rb
783
+ - lib/booth/userland/password_resets/transitions/update/reset_password.rb
784
+ - lib/booth/userland/password_resets/update.rb
785
+ - lib/booth/userland/passwords/destroy.rb
786
+ - lib/booth/userland/passwords/edit.rb
787
+ - lib/booth/userland/passwords/guards/manageable.rb
788
+ - lib/booth/userland/passwords/guards/removable.rb
789
+ - lib/booth/userland/passwords/guards/sudo.rb
790
+ - lib/booth/userland/passwords/remove.rb
791
+ - lib/booth/userland/passwords/show.rb
792
+ - lib/booth/userland/passwords/sudo.rb
793
+ - lib/booth/userland/passwords/transitions/remove/step.rb
794
+ - lib/booth/userland/passwords/transitions/update/choose_password.rb
795
+ - lib/booth/userland/passwords/transitions/update/confirm_password.rb
796
+ - lib/booth/userland/passwords/update.rb
797
+ - lib/booth/userland/personal_contests/show.rb
798
+ - lib/booth/userland/personal_contests/update.rb
799
+ - lib/booth/userland/recoveries/create.rb
800
+ - lib/booth/userland/recoveries/new.rb
801
+ - lib/booth/userland/registrations/create.rb
802
+ - lib/booth/userland/registrations/new.rb
803
+ - lib/booth/userland/sessions/destroy_one_or_other.rb
804
+ - lib/booth/userland/sessions/index.rb
805
+ - lib/booth/userland/sessions/show.rb
806
+ - lib/booth/userland/sessions/transitions/destroy/enter_password.rb
807
+ - lib/booth/userland/sessions/transitions/destroy/enter_webauth.rb
808
+ - lib/booth/userland/sessions/transitions/destroy/verify_password.rb
809
+ - lib/booth/userland/sessions/transitions/destroy/webauth_authentication_initiation.rb
810
+ - lib/booth/userland/sessions/transitions/destroy/webauth_authentication_verification.rb
811
+ - lib/booth/userland/sessions/transitions/show/enter_webauth.rb
812
+ - lib/booth/userland/webauths/create.rb
813
+ - lib/booth/userland/webauths/destroy.rb
814
+ - lib/booth/userland/webauths/guards/manageable.rb
815
+ - lib/booth/userland/webauths/guards/sudo.rb
816
+ - lib/booth/userland/webauths/index.rb
817
+ - lib/booth/userland/webauths/new.rb
818
+ - lib/booth/userland/webauths/sudo.rb
819
+ - lib/booth/userland/webauths/transitions/create/authentication_initiation.rb
820
+ - lib/booth/userland/webauths/transitions/create/authentication_verification.rb
821
+ - lib/booth/userland/webauths/transitions/create/choose_nickname.rb
822
+ - lib/booth/userland/webauths/transitions/create/registration_initiation.rb
823
+ - lib/booth/userland/webauths/transitions/create/registration_verification.rb
824
+ - lib/booth/userland/webauths/transitions/create/reset.rb
825
+ - lib/booth/userland/webauths/transitions/new/step.rb
826
+ - lib/booth/userland/webauths/transitions/sudo/authentication_initiation.rb
827
+ - lib/booth/userland/webauths/transitions/sudo/authentication_verification.rb
828
+ - lib/booth/version.rb
829
+ - lib/booth/webauth/authentication_verification.rb
830
+ - lib/booth/webauth/demand_user_verification.rb
831
+ - lib/booth/webauth/options_for_create.rb
832
+ - lib/booth/webauth/options_for_get.rb
833
+ - lib/generators/booth/migration/migration_generator.rb
834
+ - lib/generators/booth/migration/templates/add_credential_to_users.erb
835
+ - lib/generators/booth/migration/templates/create_booth_mode_types.erb
836
+ - lib/generators/booth/migration/templates/create_booth_tables.erb
837
+ homepage: https://github.com/halo/booth
838
+ licenses:
839
+ - MIT
840
+ metadata:
841
+ rubygems_mfa_required: 'true'
842
+ post_install_message:
843
+ rdoc_options: []
844
+ require_paths:
845
+ - lib
846
+ required_ruby_version: !ruby/object:Gem::Requirement
847
+ requirements:
848
+ - - ">="
849
+ - !ruby/object:Gem::Version
850
+ version: '3.1'
851
+ required_rubygems_version: !ruby/object:Gem::Requirement
852
+ requirements:
853
+ - - ">="
854
+ - !ruby/object:Gem::Version
855
+ version: '0'
856
+ requirements: []
857
+ rubygems_version: 3.3.7
858
+ signing_key:
859
+ specification_version: 4
860
+ summary: Opinionated authentication framework for Rails
861
+ test_files: []