booth 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/LICENSE.md +1 -2
  4. data/README.md +37 -6
  5. data/app/assets/images/booth/browsers/README.md +1 -2
  6. data/app/assets/images/booth/browsers/chrome.svg +1 -1
  7. data/app/assets/images/booth/browsers/edge.svg +1 -1
  8. data/app/assets/images/booth/browsers/firefox.svg +1 -1
  9. data/app/assets/images/booth/browsers/opera.svg +1 -1
  10. data/app/assets/images/booth/browsers/safari.svg +1 -1
  11. data/app/assets/images/booth/fido/passkey_mark_a.svg +10 -0
  12. data/app/assets/images/booth/fido/passkey_mark_a_black.svg +32 -0
  13. data/app/assets/images/booth/fido/passkey_mark_a_reverse.svg +33 -0
  14. data/app/assets/images/booth/fido/passkey_mark_a_white.svg +32 -0
  15. data/app/assets/images/booth/fido/passkey_mark_b_black.svg +1 -0
  16. data/app/assets/images/booth/platforms/android.svg +1 -6
  17. data/app/assets/images/booth/platforms/apple.svg +1 -6
  18. data/app/assets/images/booth/platforms/linux.svg +1 -6
  19. data/app/assets/images/booth/platforms/windows.svg +1 -6
  20. data/app/assets/javascripts/booth/authentication.js +29 -0
  21. data/app/assets/javascripts/booth/authentication.js.map +1 -0
  22. data/app/assets/javascripts/booth/error.js +38 -0
  23. data/app/assets/javascripts/booth/error.js.map +1 -0
  24. data/app/assets/javascripts/booth/form.js +78 -0
  25. data/app/assets/javascripts/booth/form.js.map +1 -0
  26. data/app/assets/javascripts/booth/gui.js +53 -0
  27. data/app/assets/javascripts/booth/gui.js.map +1 -0
  28. data/app/assets/javascripts/booth/registration.js +29 -0
  29. data/app/assets/javascripts/booth/registration.js.map +1 -0
  30. data/app/assets/javascripts/booth/setup.js +14 -0
  31. data/app/assets/javascripts/booth/verification.js +49 -0
  32. data/app/assets/javascripts/booth/verification.js.map +1 -0
  33. data/app/assets/javascripts/declarations/authentication.d.ts +6 -0
  34. data/app/assets/javascripts/declarations/error.d.ts +36 -0
  35. data/app/assets/javascripts/declarations/form.d.ts +8 -0
  36. data/app/assets/javascripts/declarations/gui.d.ts +4 -0
  37. data/app/assets/javascripts/declarations/registration.d.ts +6 -0
  38. data/app/assets/javascripts/declarations/setup.d.ts +3 -0
  39. data/app/assets/javascripts/declarations/verification.d.ts +6 -0
  40. data/app/assets/javascripts/src/authentication.ts +41 -0
  41. data/app/assets/javascripts/src/error.ts +35 -0
  42. data/app/assets/javascripts/src/form.ts +90 -0
  43. data/app/assets/javascripts/src/gui.ts +59 -0
  44. data/app/assets/javascripts/src/registration.ts +44 -0
  45. data/app/assets/javascripts/src/verification.ts +61 -0
  46. data/app/assets/stylesheets/booth/booth.css +3 -0
  47. data/config/importmap.rb +11 -0
  48. data/config/locales/de.yml +14 -38
  49. data/config/locales/en.yml +17 -36
  50. data/data/combined_aaguid.json +1 -0
  51. data/lib/booth/adminland/credentials/create.rb +10 -12
  52. data/lib/booth/adminland/credentials/index.rb +31 -0
  53. data/lib/booth/adminland/onboardings/create.rb +24 -15
  54. data/lib/booth/adminland/onboardings/destroy.rb +8 -4
  55. data/lib/booth/adminland/onboardings/find.rb +52 -45
  56. data/lib/booth/adminland/onboardings/find_unconsumed.rb +61 -0
  57. data/lib/booth/adminland/onboardings/index.rb +6 -3
  58. data/lib/booth/adminland/periodic_cleanup.rb +7 -2
  59. data/lib/booth/adminland.rb +17 -18
  60. data/lib/booth/coercers/domain.rb +11 -0
  61. data/lib/booth/coercers/request.rb +51 -0
  62. data/lib/booth/coercers/scope.rb +11 -0
  63. data/lib/booth/comparisons/domain.rb +38 -0
  64. data/lib/booth/comparisons/scope.rb +38 -0
  65. data/lib/booth/concerns/action.rb +25 -13
  66. data/lib/booth/concerns/transition.rb +5 -2
  67. data/lib/booth/configuration.rb +14 -73
  68. data/lib/booth/configure.rb +3 -10
  69. data/lib/booth/{audits/register → core/audit}/completed_onboarding.rb +8 -6
  70. data/lib/booth/core/audit/credential_created.rb +24 -0
  71. data/lib/booth/core/audit/logout.rb +24 -0
  72. data/lib/booth/core/authenticators/confirm.rb +30 -0
  73. data/lib/booth/core/authenticators/step.rb +24 -0
  74. data/lib/booth/core/cooldowns/distance_of_time.rb +50 -0
  75. data/lib/booth/core/cooldowns/strategies/exponential.rb +88 -0
  76. data/lib/booth/core/cooldowns/strategies/global.rb +66 -0
  77. data/lib/booth/core/cooldowns/strategies/result.rb +27 -0
  78. data/lib/booth/core/credentials/create.rb +32 -0
  79. data/lib/booth/core/credentials/find_by_username.rb +63 -0
  80. data/lib/booth/core/credentials/index.rb +15 -0
  81. data/lib/booth/core/credentials/webauth_challenge.rb +37 -0
  82. data/lib/booth/core/geolocation.rb +25 -0
  83. data/lib/booth/core/onboardings/find.rb +92 -0
  84. data/lib/booth/core/onboardings/step.rb +19 -0
  85. data/lib/booth/core/remotes/get.rb +45 -0
  86. data/lib/booth/core/remotes/respond.rb +82 -0
  87. data/lib/booth/core/remotes/set_for_login.rb +31 -0
  88. data/lib/booth/core/sessions/create_and_login.rb +63 -0
  89. data/lib/booth/core/sessions/historical_locations.rb +22 -0
  90. data/lib/booth/core/sessions/index.rb +66 -0
  91. data/lib/booth/core/sessions/revoke.rb +59 -0
  92. data/lib/booth/core/sessions/revoke_all_others.rb +49 -0
  93. data/lib/booth/core/sessions/to_passport.rb +35 -0
  94. data/lib/booth/core/webauth/authentication_verification.rb +76 -0
  95. data/lib/booth/core/webauth/options_for_create.rb +56 -0
  96. data/lib/booth/core/webauth/options_for_get.rb +30 -0
  97. data/lib/booth/core/webauth/provider.rb +36 -0
  98. data/lib/booth/core/webauth/registration_verification.rb +100 -0
  99. data/lib/booth/credential.rb +35 -0
  100. data/lib/booth/engine.rb +15 -4
  101. data/lib/booth/errors.rb +2 -0
  102. data/lib/booth/hooks/after_fetch.rb +14 -6
  103. data/lib/booth/hooks/before_logout.rb +5 -3
  104. data/lib/booth/hooks/serialize_from_session.rb +13 -5
  105. data/lib/booth/hooks/serialize_into_session.rb +6 -3
  106. data/lib/booth/logging.rb +13 -42
  107. data/lib/booth/models/application_record.rb +3 -0
  108. data/lib/booth/models/audit.rb +10 -11
  109. data/lib/booth/models/authenticator.rb +6 -9
  110. data/lib/booth/models/credential.rb +17 -20
  111. data/lib/booth/models/onboarding.rb +16 -39
  112. data/lib/booth/models/{contest.rb → remote.rb} +13 -14
  113. data/lib/booth/models/remotes/scopes/recently_created.rb +26 -0
  114. data/lib/booth/models/remotes/scopes/recently_responded.rb +35 -0
  115. data/lib/booth/models/session.rb +15 -10
  116. data/lib/booth/models/user_agent.rb +2 -0
  117. data/lib/booth/request.rb +43 -22
  118. data/lib/booth/requests/agent.rb +3 -1
  119. data/lib/booth/requests/authentication.rb +15 -5
  120. data/lib/booth/requests/ip.rb +4 -2
  121. data/lib/booth/requests/return_path.rb +4 -2
  122. data/lib/booth/requests/session.rb +6 -4
  123. data/lib/booth/requests/storage.rb +5 -31
  124. data/lib/booth/requests/storages/login.rb +35 -29
  125. data/lib/booth/requests/storages/registration.rb +2 -0
  126. data/lib/booth/requests/storages/webauth.rb +3 -0
  127. data/lib/booth/requests/sudo.rb +6 -50
  128. data/lib/booth/routes/userland.rb +13 -59
  129. data/lib/booth/syntaxes/domain.rb +46 -0
  130. data/lib/booth/syntaxes/email.rb +11 -8
  131. data/lib/booth/syntaxes/ip.rb +6 -4
  132. data/lib/booth/syntaxes/remote_code.rb +60 -0
  133. data/lib/booth/syntaxes/scope.rb +7 -3
  134. data/lib/booth/syntaxes/secret_key.rb +8 -6
  135. data/lib/booth/syntaxes/username.rb +23 -10
  136. data/lib/booth/syntaxes/uuid.rb +3 -1
  137. data/lib/booth/test.rb +27 -22
  138. data/lib/booth/testing/incorporation_test_case.rb +29 -0
  139. data/lib/booth/testing/shortcuts.rb +77 -0
  140. data/lib/booth/testing/support/assert_all_partials_were_covered.rb +69 -0
  141. data/lib/booth/testing/support/assert_logged_in.rb +68 -0
  142. data/lib/booth/{test → testing}/support/assert_logged_out.rb +7 -4
  143. data/lib/booth/testing/support/assert_partial.rb +56 -0
  144. data/lib/booth/{test → testing}/support/force_login.rb +10 -4
  145. data/lib/booth/{test → testing}/support/get_session_value.rb +8 -6
  146. data/lib/booth/testing/support/scenario.rb +23 -0
  147. data/lib/booth/testing/support/shortcuts/create_and_onboard.rb +56 -0
  148. data/lib/booth/testing/support/shortcuts/login_with_passkey.rb +55 -0
  149. data/lib/booth/testing/support/shortcuts/register_new_passkey.rb +51 -0
  150. data/lib/booth/testing/support/soft_reset_session.rb +24 -0
  151. data/lib/booth/testing/support/virtual_authenticators/create.rb +34 -0
  152. data/lib/booth/testing/support/virtual_authenticators/destroy.rb +20 -0
  153. data/lib/booth/testing/support/virtual_authenticators/enable.rb +24 -0
  154. data/lib/booth/testing/support/virtual_authenticators/load.rb +38 -0
  155. data/lib/booth/testing/support/virtual_authenticators/manager.rb +124 -0
  156. data/lib/booth/testing/support/visit.rb +62 -0
  157. data/lib/booth/testing/userland/login_remotely.rb +100 -0
  158. data/lib/booth/testing/userland/onboarding_first_time.rb +81 -0
  159. data/lib/booth/testing/userland/onboarding_to_reset_passkeys.rb +129 -0
  160. data/lib/booth/testing/userland/registration_with_passkey.rb +93 -0
  161. data/lib/booth/testing/userland/registration_without_passkey.rb +101 -0
  162. data/lib/booth/testing/userland/sessions_manage_behavior.rb +68 -0
  163. data/lib/booth/testing/userland/sessions_revoke_all_others.rb +17 -0
  164. data/lib/booth/testing/userland/sessions_revoke_one.rb +17 -0
  165. data/lib/booth/testing/userland.rb +36 -0
  166. data/lib/booth/to_struct.rb +9 -2
  167. data/lib/booth/userland/extract_flash_messages.rb +10 -3
  168. data/lib/booth/userland/logins/create.rb +8 -6
  169. data/lib/booth/userland/logins/destroy.rb +23 -6
  170. data/lib/booth/userland/logins/new.rb +23 -25
  171. data/lib/booth/userland/logins/transitions/create/choose_username.rb +62 -27
  172. data/lib/booth/userland/logins/transitions/create/skip_remotes.rb +18 -14
  173. data/lib/booth/userland/logins/transitions/create/webauth_authentication_initiation.rb +54 -48
  174. data/lib/booth/userland/logins/transitions/create/webauth_authentication_verification.rb +62 -58
  175. data/lib/booth/userland/logins/transitions/new/already_logged_in.rb +4 -3
  176. data/lib/booth/userland/logins/transitions/new/fallible.rb +4 -0
  177. data/lib/booth/userland/logins/transitions/new/{mode_username_and_password.rb → missing_authenticators.rb} +5 -4
  178. data/lib/booth/userland/logins/transitions/new/mode_username_and_webauth.rb +6 -4
  179. data/lib/booth/userland/logins/transitions/new/no_username_chosen.rb +3 -1
  180. data/lib/booth/userland/logins/transitions/new/remote_session_available.rb +20 -13
  181. data/lib/booth/userland/logins/transitions/new/timed_out.rb +3 -1
  182. data/lib/booth/userland/onboardings/show.rb +65 -39
  183. data/lib/booth/userland/onboardings/update.rb +46 -38
  184. data/lib/booth/userland/registrations/create.rb +51 -20
  185. data/lib/booth/userland/registrations/new.rb +6 -7
  186. data/lib/booth/userland/remotes/show.rb +56 -0
  187. data/lib/booth/userland/{personal_contests → remotes}/update.rb +5 -3
  188. data/lib/booth/userland/sessions/destroy_one_or_other.rb +3 -16
  189. data/lib/booth/userland/sessions/index.rb +4 -2
  190. data/lib/booth/userland/sessions/show.rb +5 -6
  191. data/lib/booth/userland/sessions/transitions/destroy/enter_webauth.rb +8 -6
  192. data/lib/booth/userland/sessions/transitions/destroy/webauth_authentication_initiation.rb +8 -6
  193. data/lib/booth/userland/sessions/transitions/destroy/webauth_authentication_verification.rb +7 -5
  194. data/lib/booth/userland/sessions/transitions/show/enter_webauth.rb +8 -6
  195. data/lib/booth/userland/webauths/create.rb +20 -17
  196. data/lib/booth/userland/webauths/destroy.rb +6 -16
  197. data/lib/booth/userland/webauths/guards/sudo.rb +10 -5
  198. data/lib/booth/userland/webauths/index.rb +4 -2
  199. data/lib/booth/userland/webauths/new.rb +7 -22
  200. data/lib/booth/userland/webauths/sudo.rb +3 -1
  201. data/lib/booth/userland/webauths/transitions/create/authentication_initiation.rb +8 -11
  202. data/lib/booth/userland/webauths/transitions/create/authentication_verification.rb +11 -13
  203. data/lib/booth/userland/webauths/transitions/create/choose_nickname.rb +8 -5
  204. data/lib/booth/userland/webauths/transitions/create/registration_initiation.rb +15 -14
  205. data/lib/booth/userland/webauths/transitions/create/registration_verification.rb +34 -28
  206. data/lib/booth/userland/webauths/transitions/create/reset.rb +2 -0
  207. data/lib/booth/userland/webauths/transitions/new/step.rb +3 -1
  208. data/lib/booth/userland/webauths/transitions/sudo/authentication_initiation.rb +5 -10
  209. data/lib/booth/userland/webauths/transitions/sudo/authentication_verification.rb +4 -2
  210. data/lib/booth/userland.rb +53 -109
  211. data/lib/booth/version.rb +3 -1
  212. data/lib/booth.rb +6 -236
  213. data/lib/generators/booth/migration/migration_generator.rb +2 -1
  214. data/lib/generators/booth/migration/templates/add_credential_to_users.erb +6 -4
  215. data/lib/generators/booth/migration/templates/create_booth_tables.erb +61 -72
  216. metadata +124 -571
  217. data/app/assets/config/booth_manifest.js +0 -15
  218. data/app/assets/images/booth/browsers/internet_explorer.svg +0 -1
  219. data/app/assets/javascripts/booth/all.js +0 -162
  220. data/app/assets/javascripts/booth/all.js.map +0 -1
  221. data/app/assets/javascripts/booth/booth.ts +0 -194
  222. data/app/assets/javascripts/booth/webauthn-json.ts +0 -99
  223. data/lib/booth/adminland/recoveries/consume.rb +0 -70
  224. data/lib/booth/audits/register/added_otp.rb +0 -22
  225. data/lib/booth/audits/register/changed_otp.rb +0 -22
  226. data/lib/booth/audits/register/correct_otp.rb +0 -42
  227. data/lib/booth/audits/register/correct_password.rb +0 -43
  228. data/lib/booth/audits/register/logout.rb +0 -22
  229. data/lib/booth/audits/register/requested_password_reset.rb +0 -22
  230. data/lib/booth/audits/register/wrong_otp.rb +0 -22
  231. data/lib/booth/audits/register/wrong_password.rb +0 -25
  232. data/lib/booth/authenticators/confirm.rb +0 -34
  233. data/lib/booth/authenticators/credential_mode_after_confirmation.rb +0 -25
  234. data/lib/booth/authenticators/step.rb +0 -19
  235. data/lib/booth/contests/get.rb +0 -36
  236. data/lib/booth/contests/respond.rb +0 -78
  237. data/lib/booth/contests/set_for_login.rb +0 -28
  238. data/lib/booth/cooldowns/distance_of_time.rb +0 -46
  239. data/lib/booth/cooldowns/otp.rb +0 -22
  240. data/lib/booth/cooldowns/password.rb +0 -44
  241. data/lib/booth/cooldowns/password_reset.rb +0 -24
  242. data/lib/booth/cooldowns/strategies/exponential.rb +0 -82
  243. data/lib/booth/cooldowns/strategies/global.rb +0 -62
  244. data/lib/booth/cooldowns/strategies/result.rb +0 -22
  245. data/lib/booth/credentials/create.rb +0 -28
  246. data/lib/booth/credentials/create_with_onboarding.rb +0 -26
  247. data/lib/booth/credentials/find_by_username.rb +0 -45
  248. data/lib/booth/credentials/mode.rb +0 -69
  249. data/lib/booth/credentials/modes/otp_addable.rb +0 -23
  250. data/lib/booth/credentials/modes/otp_changeable.rb +0 -23
  251. data/lib/booth/credentials/modes/otp_manageable.rb +0 -17
  252. data/lib/booth/credentials/modes/otp_removable.rb +0 -23
  253. data/lib/booth/credentials/modes/password_addable.rb +0 -29
  254. data/lib/booth/credentials/modes/password_changeable.rb +0 -31
  255. data/lib/booth/credentials/modes/password_manageable.rb +0 -17
  256. data/lib/booth/credentials/modes/password_removable.rb +0 -24
  257. data/lib/booth/credentials/modes/password_removal_requires_user_verifiable_webauth.rb +0 -16
  258. data/lib/booth/credentials/modes/webauth_addable.rb +0 -26
  259. data/lib/booth/credentials/modes/webauth_manageable.rb +0 -16
  260. data/lib/booth/credentials/modes/webauth_removable.rb +0 -25
  261. data/lib/booth/credentials/otp_authentication.rb +0 -59
  262. data/lib/booth/credentials/password_authentication.rb +0 -72
  263. data/lib/booth/credentials/webauth_challenge.rb +0 -28
  264. data/lib/booth/geolocation.rb +0 -20
  265. data/lib/booth/logger.rb +0 -41
  266. data/lib/booth/method_object.rb +0 -73
  267. data/lib/booth/mode.rb +0 -22
  268. data/lib/booth/models/concerns/modeable.rb +0 -50
  269. data/lib/booth/models/concerns/otpable.rb +0 -37
  270. data/lib/booth/models/concerns/passwordable.rb +0 -58
  271. data/lib/booth/models/contests/scopes/recently_created.rb +0 -23
  272. data/lib/booth/models/contests/scopes/recently_responded.rb +0 -32
  273. data/lib/booth/models/password_reset.rb +0 -41
  274. data/lib/booth/models/recovery.rb +0 -32
  275. data/lib/booth/models/registration.rb +0 -10
  276. data/lib/booth/modes/base.rb +0 -25
  277. data/lib/booth/modes/username_and_password.rb +0 -7
  278. data/lib/booth/modes/username_and_webauth.rb +0 -7
  279. data/lib/booth/modes/username_password_and_otp.rb +0 -7
  280. data/lib/booth/modes/username_password_and_webauth.rb +0 -7
  281. data/lib/booth/onboardings/find.rb +0 -35
  282. data/lib/booth/onboardings/propagate_to_credential.rb +0 -63
  283. data/lib/booth/onboardings/step.rb +0 -68
  284. data/lib/booth/password_resets/create.rb +0 -57
  285. data/lib/booth/password_resets/find.rb +0 -36
  286. data/lib/booth/password_resets/propagate_to_credential.rb +0 -36
  287. data/lib/booth/password_resets/step.rb +0 -18
  288. data/lib/booth/recoveries/create.rb +0 -45
  289. data/lib/booth/requests/storages/otp.rb +0 -54
  290. data/lib/booth/requests/storages/password.rb +0 -49
  291. data/lib/booth/requests/storages/password_reset.rb +0 -35
  292. data/lib/booth/requests/storages/recovery.rb +0 -35
  293. data/lib/booth/sessions/create_and_login.rb +0 -46
  294. data/lib/booth/sessions/historical_locations.rb +0 -18
  295. data/lib/booth/sessions/index.rb +0 -59
  296. data/lib/booth/sessions/revoke.rb +0 -51
  297. data/lib/booth/sessions/revoke_all_others.rb +0 -43
  298. data/lib/booth/sessions/to_passport.rb +0 -51
  299. data/lib/booth/syntaxes/contest_code.rb +0 -58
  300. data/lib/booth/syntaxes/otp.rb +0 -57
  301. data/lib/booth/syntaxes/scope_comparison.rb +0 -28
  302. data/lib/booth/test/helpers.rb +0 -63
  303. data/lib/booth/test/support/assert_all_partials_were_covered.rb +0 -63
  304. data/lib/booth/test/support/assert_logged_in.rb +0 -49
  305. data/lib/booth/test/support/assert_partial.rb +0 -29
  306. data/lib/booth/test/support/otp_code_from_session.rb +0 -30
  307. data/lib/booth/test/support/soft_reset_session.rb +0 -22
  308. data/lib/booth/test/userland/logins/missing_authenticators.rb +0 -72
  309. data/lib/booth/test/userland/logins/missing_onboarding.rb +0 -35
  310. data/lib/booth/test/userland/logins/username_and_password.rb +0 -40
  311. data/lib/booth/test/userland/logins/username_and_webauth.rb +0 -75
  312. data/lib/booth/test/userland/logins/username_password_and_otp.rb +0 -45
  313. data/lib/booth/test/userland/logins/username_password_and_webauth.rb +0 -86
  314. data/lib/booth/test/userland/onboardings/already_logged_in.rb +0 -64
  315. data/lib/booth/test/userland/onboardings/otp.rb +0 -63
  316. data/lib/booth/test/userland/onboardings/password.rb +0 -49
  317. data/lib/booth/test/userland/onboardings/timeout.rb +0 -47
  318. data/lib/booth/test/userland/otps/manage.rb +0 -86
  319. data/lib/booth/test/userland/password_resets/reset.rb +0 -102
  320. data/lib/booth/test/userland.rb +0 -38
  321. data/lib/booth/test/webauthn/disable.rb +0 -17
  322. data/lib/booth/test/webauthn/enable.rb +0 -19
  323. data/lib/booth/test/webauthn/virtual_authenticators/create.rb +0 -38
  324. data/lib/booth/test/webauthn/virtual_authenticators/destroy.rb +0 -20
  325. data/lib/booth/userland/logins/transitions/create/enter_otp.rb +0 -70
  326. data/lib/booth/userland/logins/transitions/create/verify_password.rb +0 -70
  327. data/lib/booth/userland/logins/transitions/new/mode_first_time.rb +0 -20
  328. data/lib/booth/userland/logins/transitions/new/mode_username_password_and_otp.rb +0 -24
  329. data/lib/booth/userland/logins/transitions/new/mode_username_password_and_webauth.rb +0 -24
  330. data/lib/booth/userland/onboardings/transitions/update/choose_mode.rb +0 -58
  331. data/lib/booth/userland/onboardings/transitions/update/choose_password.rb +0 -41
  332. data/lib/booth/userland/onboardings/transitions/update/choose_webauth_nickname.rb +0 -50
  333. data/lib/booth/userland/onboardings/transitions/update/confirm_otp.rb +0 -58
  334. data/lib/booth/userland/onboardings/transitions/update/confirm_password.rb +0 -49
  335. data/lib/booth/userland/onboardings/transitions/update/register_otp.rb +0 -31
  336. data/lib/booth/userland/onboardings/transitions/update/reset_otp.rb +0 -40
  337. data/lib/booth/userland/onboardings/transitions/update/reset_password.rb +0 -35
  338. data/lib/booth/userland/onboardings/transitions/update/reset_webauth.rb +0 -46
  339. data/lib/booth/userland/onboardings/transitions/update/webauth_authentication_initiation.rb +0 -40
  340. data/lib/booth/userland/onboardings/transitions/update/webauth_authentication_verification.rb +0 -59
  341. data/lib/booth/userland/onboardings/transitions/update/webauth_registration_initiation.rb +0 -46
  342. data/lib/booth/userland/onboardings/transitions/update/webauth_registration_verification.rb +0 -56
  343. data/lib/booth/userland/otps/destroy.rb +0 -42
  344. data/lib/booth/userland/otps/edit.rb +0 -72
  345. data/lib/booth/userland/otps/guards/manageable.rb +0 -21
  346. data/lib/booth/userland/otps/guards/sudo.rb +0 -23
  347. data/lib/booth/userland/otps/show.rb +0 -36
  348. data/lib/booth/userland/otps/sudo.rb +0 -51
  349. data/lib/booth/userland/otps/transitions/update/confirm.rb +0 -84
  350. data/lib/booth/userland/otps/transitions/update/register.rb +0 -40
  351. data/lib/booth/userland/otps/transitions/update/reset.rb +0 -31
  352. data/lib/booth/userland/otps/update.rb +0 -34
  353. data/lib/booth/userland/password_resets/create.rb +0 -73
  354. data/lib/booth/userland/password_resets/guards/logged_out.rb +0 -21
  355. data/lib/booth/userland/password_resets/new.rb +0 -57
  356. data/lib/booth/userland/password_resets/show.rb +0 -77
  357. data/lib/booth/userland/password_resets/transitions/update/choose_password.rb +0 -48
  358. data/lib/booth/userland/password_resets/transitions/update/confirm_password.rb +0 -54
  359. data/lib/booth/userland/password_resets/transitions/update/reset_password.rb +0 -29
  360. data/lib/booth/userland/password_resets/update.rb +0 -65
  361. data/lib/booth/userland/passwords/destroy.rb +0 -41
  362. data/lib/booth/userland/passwords/edit.rb +0 -54
  363. data/lib/booth/userland/passwords/guards/manageable.rb +0 -21
  364. data/lib/booth/userland/passwords/guards/removable.rb +0 -21
  365. data/lib/booth/userland/passwords/guards/sudo.rb +0 -21
  366. data/lib/booth/userland/passwords/remove.rb +0 -34
  367. data/lib/booth/userland/passwords/show.rb +0 -32
  368. data/lib/booth/userland/passwords/sudo.rb +0 -55
  369. data/lib/booth/userland/passwords/transitions/remove/step.rb +0 -27
  370. data/lib/booth/userland/passwords/transitions/update/choose_password.rb +0 -62
  371. data/lib/booth/userland/passwords/transitions/update/confirm_password.rb +0 -82
  372. data/lib/booth/userland/passwords/update.rb +0 -33
  373. data/lib/booth/userland/personal_contests/show.rb +0 -60
  374. data/lib/booth/userland/recoveries/create.rb +0 -48
  375. data/lib/booth/userland/recoveries/new.rb +0 -35
  376. data/lib/booth/userland/sessions/transitions/destroy/enter_password.rb +0 -50
  377. data/lib/booth/userland/sessions/transitions/destroy/verify_password.rb +0 -83
  378. data/lib/booth/userland/webauths/guards/manageable.rb +0 -21
  379. data/lib/booth/webauth/authentication_verification.rb +0 -68
  380. data/lib/booth/webauth/demand_user_verification.rb +0 -29
  381. data/lib/booth/webauth/options_for_create.rb +0 -46
  382. data/lib/booth/webauth/options_for_get.rb +0 -29
  383. data/lib/generators/booth/migration/templates/create_booth_mode_types.erb +0 -20
metadata CHANGED
@@ -1,73 +1,58 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: booth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - halo
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2022-10-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  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
12
  - !ruby/object:Gem::Dependency
28
13
  name: activerecord
29
14
  requirement: !ruby/object:Gem::Requirement
30
15
  requirements:
31
16
  - - ">="
32
17
  - !ruby/object:Gem::Version
33
- version: '6'
18
+ version: '8'
34
19
  type: :runtime
35
20
  prerelease: false
36
21
  version_requirements: !ruby/object:Gem::Requirement
37
22
  requirements:
38
23
  - - ">="
39
24
  - !ruby/object:Gem::Version
40
- version: '6'
25
+ version: '8'
41
26
  - !ruby/object:Gem::Dependency
42
27
  name: activesupport
43
28
  requirement: !ruby/object:Gem::Requirement
44
29
  requirements:
45
30
  - - ">="
46
31
  - !ruby/object:Gem::Version
47
- version: '6'
32
+ version: '8'
48
33
  type: :runtime
49
34
  prerelease: false
50
35
  version_requirements: !ruby/object:Gem::Requirement
51
36
  requirements:
52
37
  - - ">="
53
38
  - !ruby/object:Gem::Version
54
- version: '6'
39
+ version: '8'
55
40
  - !ruby/object:Gem::Dependency
56
- name: bcrypt
41
+ name: i18n
57
42
  requirement: !ruby/object:Gem::Requirement
58
43
  requirements:
59
44
  - - ">="
60
45
  - !ruby/object:Gem::Version
61
- version: 3.1.7
46
+ version: '0'
62
47
  type: :runtime
63
48
  prerelease: false
64
49
  version_requirements: !ruby/object:Gem::Requirement
65
50
  requirements:
66
51
  - - ">="
67
52
  - !ruby/object:Gem::Version
68
- version: 3.1.7
53
+ version: '0'
69
54
  - !ruby/object:Gem::Dependency
70
- name: i18n
55
+ name: importmap-rails
71
56
  requirement: !ruby/object:Gem::Requirement
72
57
  requirements:
73
58
  - - ">="
@@ -95,7 +80,7 @@ dependencies:
95
80
  - !ruby/object:Gem::Version
96
81
  version: '0'
97
82
  - !ruby/object:Gem::Dependency
98
- name: dry-initializer
83
+ name: calls
99
84
  requirement: !ruby/object:Gem::Requirement
100
85
  requirements:
101
86
  - - ">="
@@ -109,7 +94,7 @@ dependencies:
109
94
  - !ruby/object:Gem::Version
110
95
  version: '0'
111
96
  - !ruby/object:Gem::Dependency
112
- name: pwned
97
+ name: paint
113
98
  requirement: !ruby/object:Gem::Requirement
114
99
  requirements:
115
100
  - - ">="
@@ -142,14 +127,14 @@ dependencies:
142
127
  requirements:
143
128
  - - ">="
144
129
  - !ruby/object:Gem::Version
145
- version: '1'
130
+ version: '0'
146
131
  type: :runtime
147
132
  prerelease: false
148
133
  version_requirements: !ruby/object:Gem::Requirement
149
134
  requirements:
150
135
  - - ">="
151
136
  - !ruby/object:Gem::Version
152
- version: '1'
137
+ version: '0'
153
138
  - !ruby/object:Gem::Dependency
154
139
  name: warden
155
140
  requirement: !ruby/object:Gem::Requirement
@@ -178,370 +163,6 @@ dependencies:
178
163
  - - ">="
179
164
  - !ruby/object:Gem::Version
180
165
  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
166
  description: In Devise you own controllers, models and views. With Booth you don't
546
167
  own the models (much like ActiveStorage). The Controllers you do own, but the implementation
547
168
  is pretty much just calling Booth helpers. The views you own completely, just as
@@ -554,121 +175,122 @@ files:
554
175
  - CHANGELOG.md
555
176
  - LICENSE.md
556
177
  - README.md
557
- - app/assets/config/booth_manifest.js
558
178
  - app/assets/images/booth/browsers/README.md
559
179
  - app/assets/images/booth/browsers/chrome.svg
560
180
  - app/assets/images/booth/browsers/edge.svg
561
181
  - app/assets/images/booth/browsers/firefox.svg
562
- - app/assets/images/booth/browsers/internet_explorer.svg
563
182
  - app/assets/images/booth/browsers/opera.svg
564
183
  - app/assets/images/booth/browsers/safari.svg
565
184
  - app/assets/images/booth/browsers/unknown.svg
185
+ - app/assets/images/booth/fido/passkey_mark_a.svg
186
+ - app/assets/images/booth/fido/passkey_mark_a_black.svg
187
+ - app/assets/images/booth/fido/passkey_mark_a_reverse.svg
188
+ - app/assets/images/booth/fido/passkey_mark_a_white.svg
189
+ - app/assets/images/booth/fido/passkey_mark_b_black.svg
566
190
  - app/assets/images/booth/platforms/README.md
567
191
  - app/assets/images/booth/platforms/android.svg
568
192
  - app/assets/images/booth/platforms/apple.svg
569
193
  - app/assets/images/booth/platforms/linux.svg
570
194
  - app/assets/images/booth/platforms/unknown.svg
571
195
  - 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
196
+ - app/assets/javascripts/booth/authentication.js
197
+ - app/assets/javascripts/booth/authentication.js.map
198
+ - app/assets/javascripts/booth/error.js
199
+ - app/assets/javascripts/booth/error.js.map
200
+ - app/assets/javascripts/booth/form.js
201
+ - app/assets/javascripts/booth/form.js.map
202
+ - app/assets/javascripts/booth/gui.js
203
+ - app/assets/javascripts/booth/gui.js.map
204
+ - app/assets/javascripts/booth/registration.js
205
+ - app/assets/javascripts/booth/registration.js.map
206
+ - app/assets/javascripts/booth/setup.js
207
+ - app/assets/javascripts/booth/verification.js
208
+ - app/assets/javascripts/booth/verification.js.map
209
+ - app/assets/javascripts/declarations/authentication.d.ts
210
+ - app/assets/javascripts/declarations/error.d.ts
211
+ - app/assets/javascripts/declarations/form.d.ts
212
+ - app/assets/javascripts/declarations/gui.d.ts
213
+ - app/assets/javascripts/declarations/registration.d.ts
214
+ - app/assets/javascripts/declarations/setup.d.ts
215
+ - app/assets/javascripts/declarations/verification.d.ts
216
+ - app/assets/javascripts/src/authentication.ts
217
+ - app/assets/javascripts/src/error.ts
218
+ - app/assets/javascripts/src/form.ts
219
+ - app/assets/javascripts/src/gui.ts
220
+ - app/assets/javascripts/src/registration.ts
221
+ - app/assets/javascripts/src/verification.ts
222
+ - app/assets/stylesheets/booth/booth.css
223
+ - config/importmap.rb
576
224
  - config/locales/de.yml
577
225
  - config/locales/en.yml
226
+ - data/combined_aaguid.json
578
227
  - lib/booth.rb
579
228
  - lib/booth/adminland.rb
580
229
  - lib/booth/adminland/credentials/create.rb
230
+ - lib/booth/adminland/credentials/index.rb
581
231
  - lib/booth/adminland/onboardings/create.rb
582
232
  - lib/booth/adminland/onboardings/destroy.rb
583
233
  - lib/booth/adminland/onboardings/find.rb
234
+ - lib/booth/adminland/onboardings/find_unconsumed.rb
584
235
  - lib/booth/adminland/onboardings/index.rb
585
236
  - 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
237
+ - lib/booth/coercers/domain.rb
238
+ - lib/booth/coercers/request.rb
239
+ - lib/booth/coercers/scope.rb
240
+ - lib/booth/comparisons/domain.rb
241
+ - lib/booth/comparisons/scope.rb
599
242
  - lib/booth/concerns/action.rb
600
243
  - lib/booth/concerns/transition.rb
601
244
  - lib/booth/configuration.rb
602
245
  - 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
246
+ - lib/booth/core/audit/completed_onboarding.rb
247
+ - lib/booth/core/audit/credential_created.rb
248
+ - lib/booth/core/audit/logout.rb
249
+ - lib/booth/core/authenticators/confirm.rb
250
+ - lib/booth/core/authenticators/step.rb
251
+ - lib/booth/core/cooldowns/distance_of_time.rb
252
+ - lib/booth/core/cooldowns/strategies/exponential.rb
253
+ - lib/booth/core/cooldowns/strategies/global.rb
254
+ - lib/booth/core/cooldowns/strategies/result.rb
255
+ - lib/booth/core/credentials/create.rb
256
+ - lib/booth/core/credentials/find_by_username.rb
257
+ - lib/booth/core/credentials/index.rb
258
+ - lib/booth/core/credentials/webauth_challenge.rb
259
+ - lib/booth/core/geolocation.rb
260
+ - lib/booth/core/onboardings/find.rb
261
+ - lib/booth/core/onboardings/step.rb
262
+ - lib/booth/core/remotes/get.rb
263
+ - lib/booth/core/remotes/respond.rb
264
+ - lib/booth/core/remotes/set_for_login.rb
265
+ - lib/booth/core/sessions/create_and_login.rb
266
+ - lib/booth/core/sessions/historical_locations.rb
267
+ - lib/booth/core/sessions/index.rb
268
+ - lib/booth/core/sessions/revoke.rb
269
+ - lib/booth/core/sessions/revoke_all_others.rb
270
+ - lib/booth/core/sessions/to_passport.rb
271
+ - lib/booth/core/webauth/authentication_verification.rb
272
+ - lib/booth/core/webauth/options_for_create.rb
273
+ - lib/booth/core/webauth/options_for_get.rb
274
+ - lib/booth/core/webauth/provider.rb
275
+ - lib/booth/core/webauth/registration_verification.rb
276
+ - lib/booth/credential.rb
632
277
  - lib/booth/engine.rb
633
278
  - lib/booth/errors.rb
634
- - lib/booth/geolocation.rb
635
279
  - lib/booth/hooks/after_fetch.rb
636
280
  - lib/booth/hooks/before_logout.rb
637
281
  - lib/booth/hooks/serialize_from_session.rb
638
282
  - lib/booth/hooks/serialize_into_session.rb
639
- - lib/booth/logger.rb
640
283
  - lib/booth/logging.rb
641
- - lib/booth/method_object.rb
642
- - lib/booth/mode.rb
643
284
  - lib/booth/models/application_record.rb
644
285
  - lib/booth/models/audit.rb
645
286
  - 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
287
  - lib/booth/models/credential.rb
653
288
  - lib/booth/models/onboarding.rb
654
- - lib/booth/models/password_reset.rb
655
- - lib/booth/models/recovery.rb
656
- - lib/booth/models/registration.rb
289
+ - lib/booth/models/remote.rb
290
+ - lib/booth/models/remotes/scopes/recently_created.rb
291
+ - lib/booth/models/remotes/scopes/recently_responded.rb
657
292
  - lib/booth/models/session.rb
658
293
  - 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
294
  - lib/booth/request.rb
673
295
  - lib/booth/requests/agent.rb
674
296
  - lib/booth/requests/authentication.rb
@@ -677,56 +299,47 @@ files:
677
299
  - lib/booth/requests/session.rb
678
300
  - lib/booth/requests/storage.rb
679
301
  - 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
302
  - lib/booth/requests/storages/registration.rb
685
303
  - lib/booth/requests/storages/webauth.rb
686
304
  - lib/booth/requests/sudo.rb
687
305
  - 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
306
+ - lib/booth/syntaxes/domain.rb
695
307
  - lib/booth/syntaxes/email.rb
696
308
  - lib/booth/syntaxes/ip.rb
697
- - lib/booth/syntaxes/otp.rb
309
+ - lib/booth/syntaxes/remote_code.rb
698
310
  - lib/booth/syntaxes/scope.rb
699
- - lib/booth/syntaxes/scope_comparison.rb
700
311
  - lib/booth/syntaxes/secret_key.rb
701
312
  - lib/booth/syntaxes/username.rb
702
313
  - lib/booth/syntaxes/uuid.rb
703
314
  - 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
315
+ - lib/booth/testing/incorporation_test_case.rb
316
+ - lib/booth/testing/shortcuts.rb
317
+ - lib/booth/testing/support/assert_all_partials_were_covered.rb
318
+ - lib/booth/testing/support/assert_logged_in.rb
319
+ - lib/booth/testing/support/assert_logged_out.rb
320
+ - lib/booth/testing/support/assert_partial.rb
321
+ - lib/booth/testing/support/force_login.rb
322
+ - lib/booth/testing/support/get_session_value.rb
323
+ - lib/booth/testing/support/scenario.rb
324
+ - lib/booth/testing/support/shortcuts/create_and_onboard.rb
325
+ - lib/booth/testing/support/shortcuts/login_with_passkey.rb
326
+ - lib/booth/testing/support/shortcuts/register_new_passkey.rb
327
+ - lib/booth/testing/support/soft_reset_session.rb
328
+ - lib/booth/testing/support/virtual_authenticators/create.rb
329
+ - lib/booth/testing/support/virtual_authenticators/destroy.rb
330
+ - lib/booth/testing/support/virtual_authenticators/enable.rb
331
+ - lib/booth/testing/support/virtual_authenticators/load.rb
332
+ - lib/booth/testing/support/virtual_authenticators/manager.rb
333
+ - lib/booth/testing/support/visit.rb
334
+ - lib/booth/testing/userland.rb
335
+ - lib/booth/testing/userland/login_remotely.rb
336
+ - lib/booth/testing/userland/onboarding_first_time.rb
337
+ - lib/booth/testing/userland/onboarding_to_reset_passkeys.rb
338
+ - lib/booth/testing/userland/registration_with_passkey.rb
339
+ - lib/booth/testing/userland/registration_without_passkey.rb
340
+ - lib/booth/testing/userland/sessions_manage_behavior.rb
341
+ - lib/booth/testing/userland/sessions_revoke_all_others.rb
342
+ - lib/booth/testing/userland/sessions_revoke_one.rb
730
343
  - lib/booth/to_struct.rb
731
344
  - lib/booth/userland.rb
732
345
  - lib/booth/userland/extract_flash_messages.rb
@@ -734,84 +347,31 @@ files:
734
347
  - lib/booth/userland/logins/destroy.rb
735
348
  - lib/booth/userland/logins/new.rb
736
349
  - lib/booth/userland/logins/transitions/create/choose_username.rb
737
- - lib/booth/userland/logins/transitions/create/enter_otp.rb
738
350
  - lib/booth/userland/logins/transitions/create/skip_remotes.rb
739
- - lib/booth/userland/logins/transitions/create/verify_password.rb
740
351
  - lib/booth/userland/logins/transitions/create/webauth_authentication_initiation.rb
741
352
  - lib/booth/userland/logins/transitions/create/webauth_authentication_verification.rb
742
353
  - lib/booth/userland/logins/transitions/new/already_logged_in.rb
743
354
  - 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
355
+ - lib/booth/userland/logins/transitions/new/missing_authenticators.rb
746
356
  - 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
357
  - lib/booth/userland/logins/transitions/new/no_username_chosen.rb
750
358
  - lib/booth/userland/logins/transitions/new/remote_session_available.rb
751
359
  - lib/booth/userland/logins/transitions/new/timed_out.rb
752
360
  - 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
361
  - 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
362
  - lib/booth/userland/registrations/create.rb
802
363
  - lib/booth/userland/registrations/new.rb
364
+ - lib/booth/userland/remotes/show.rb
365
+ - lib/booth/userland/remotes/update.rb
803
366
  - lib/booth/userland/sessions/destroy_one_or_other.rb
804
367
  - lib/booth/userland/sessions/index.rb
805
368
  - lib/booth/userland/sessions/show.rb
806
- - lib/booth/userland/sessions/transitions/destroy/enter_password.rb
807
369
  - lib/booth/userland/sessions/transitions/destroy/enter_webauth.rb
808
- - lib/booth/userland/sessions/transitions/destroy/verify_password.rb
809
370
  - lib/booth/userland/sessions/transitions/destroy/webauth_authentication_initiation.rb
810
371
  - lib/booth/userland/sessions/transitions/destroy/webauth_authentication_verification.rb
811
372
  - lib/booth/userland/sessions/transitions/show/enter_webauth.rb
812
373
  - lib/booth/userland/webauths/create.rb
813
374
  - lib/booth/userland/webauths/destroy.rb
814
- - lib/booth/userland/webauths/guards/manageable.rb
815
375
  - lib/booth/userland/webauths/guards/sudo.rb
816
376
  - lib/booth/userland/webauths/index.rb
817
377
  - lib/booth/userland/webauths/new.rb
@@ -826,20 +386,14 @@ files:
826
386
  - lib/booth/userland/webauths/transitions/sudo/authentication_initiation.rb
827
387
  - lib/booth/userland/webauths/transitions/sudo/authentication_verification.rb
828
388
  - 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
389
  - lib/generators/booth/migration/migration_generator.rb
834
390
  - lib/generators/booth/migration/templates/add_credential_to_users.erb
835
- - lib/generators/booth/migration/templates/create_booth_mode_types.erb
836
391
  - lib/generators/booth/migration/templates/create_booth_tables.erb
837
392
  homepage: https://github.com/halo/booth
838
393
  licenses:
839
394
  - MIT
840
395
  metadata:
841
396
  rubygems_mfa_required: 'true'
842
- post_install_message:
843
397
  rdoc_options: []
844
398
  require_paths:
845
399
  - lib
@@ -847,15 +401,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
847
401
  requirements:
848
402
  - - ">="
849
403
  - !ruby/object:Gem::Version
850
- version: '3.1'
404
+ version: '3.4'
851
405
  required_rubygems_version: !ruby/object:Gem::Requirement
852
406
  requirements:
853
407
  - - ">="
854
408
  - !ruby/object:Gem::Version
855
409
  version: '0'
856
410
  requirements: []
857
- rubygems_version: 3.3.7
858
- signing_key:
411
+ rubygems_version: 4.0.1
859
412
  specification_version: 4
860
413
  summary: Opinionated authentication framework for Rails
861
414
  test_files: []