You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mastodon/db/migrate
santiagorodriguez96 e8d41bc2fe
Add WebAuthn as an alternative 2FA method (#14466)
* feat: add possibility of adding WebAuthn security keys to use as 2FA

This adds a basic UI for enabling WebAuthn 2FA. We did a little refactor
to the Settings page for editing the 2FA methods – now it will list the
methods that are available to the user (TOTP and WebAuthn) and from
there they'll be able to add or remove any of them.
Also, it's worth mentioning that for enabling WebAuthn it's required to
have TOTP enabled, so the first time that you go to the 2FA Settings
page, you'll be asked to set it up.
This work was inspired by the one donde by Github in their platform, and
despite it could be approached in different ways, we decided to go with
this one given that we feel that this gives a great UX.

Co-authored-by: Facundo Padula <facundo.padula@cedarcode.com>

* feat: add request for WebAuthn as second factor at login if enabled

This commits adds the feature for using WebAuthn as a second factor for
login when enabled.
If users have WebAuthn enabled, now a page requesting for the use of a
WebAuthn credential for log in will appear, although a link redirecting
to the old page for logging in using a two-factor code will also be
present.

Co-authored-by: Facundo Padula <facundo.padula@cedarcode.com>

* feat: add possibility of deleting WebAuthn Credentials

Co-authored-by: Facundo Padula <facundo.padula@cedarcode.com>

* feat: disable WebAuthn when an Admin disables 2FA for a user

Co-authored-by: Facundo Padula <facundo.padula@cedarcode.com>

* feat: remove ability to disable TOTP leaving only WebAuthn as 2FA

Following examples form other platforms like Github, we decided to make
Webauthn 2FA secondary to 2FA with TOTP, so that we removed the
possibility of removing TOTP authentication only, leaving users with
just WEbAuthn as 2FA. Instead, users will have to click on 'Disable 2FA'
in order to remove second factor auth.
The reason for WebAuthn being secondary to TOPT is that in that way,
users will still be able to log in using their code from their phone's
application if they don't have their security keys with them – or maybe
even lost them.

* We had to change a little the flow for setting up TOTP, given that now
  it's possible to setting up again if you already had TOTP, in order to
  let users modify their authenticator app – given that now it's not
  possible for them to disable TOTP and set it up again with another
  authenticator app.
  So, basically, now instead of storing the new `otp_secret` in the
  user, we store it in the session until the process of set up is
  finished.
  This was because, as it was before, when users clicked on 'Edit' in
  the new two-factor methods lists page, but then went back without
  finishing the flow, their `otp_secret` had been changed therefore
  invalidating their previous authenticator app, making them unable to
  log in again using TOTP.

Co-authored-by: Facundo Padula <facundo.padula@cedarcode.com>

* refactor: fix eslint errors

The PR build was failing given that linting returning some errors.
This commit attempts to fix them.

* refactor: normalize i18n translations

The build was failing given that i18n translations files were not
normalized.
This commits fixes that.

* refactor: avoid having the webauthn gem locked to a specific version

* refactor: use symbols for routes without '/'

* refactor: avoid sending webauthn disabled email when 2FA is disabled

When an admins disable 2FA for users, we were sending two mails
to them, one notifying that 2FA was disabled and the other to notify
that WebAuthn was disabled.
As the second one is redundant since the first email includes it, we can
remove it and send just one email to users.

* refactor: avoid creating new env variable for webauthn_origin config

* refactor: improve flash error messages for webauthn pages

Co-authored-by: Facundo Padula <facundo.padula@cedarcode.com>
5 years ago
..
20160220174730_create_accounts.rb
20160220211917_create_statuses.rb
20160221003140_create_users.rb
20160221003621_create_follows.rb
20160222122600_create_stream_entries.rb
20160222143943_add_profile_fields_to_accounts.rb
20160223162837_add_metadata_to_statuses.rb
20160223164502_make_uris_nullable_in_statuses.rb
20160223165723_add_url_to_statuses.rb
20160223165855_add_url_to_accounts.rb
20160223171800_create_favourites.rb
20160224223247_create_mentions.rb
20160227230233_add_attachment_avatar_to_accounts.rb
20160305115639_add_devise_to_users.rb
20160306172223_create_doorkeeper_tables.rb
20160312193225_add_attachment_header_to_accounts.rb
20160314164231_add_owner_to_application.rb
20160316103650_add_missing_indices.rb
20160322193748_add_avatar_remote_url_to_accounts.rb
20160325130944_add_admin_to_users.rb
20160826155805_add_superapp_to_oauth_applications.rb
20160905150353_create_media_attachments.rb
20160919221059_add_subscription_expires_at_to_accounts.rb
20160920003904_remove_verify_token_from_accounts.rb
20160926213048_remove_owner_from_application.rb
20161003142332_add_confirmable_to_users.rb
20161003145426_create_blocks.rb
20161006213403_rails_settings_migration.rb
20161009120834_create_domain_blocks.rb
20161027172456_add_silenced_to_accounts.rb
20161104173623_create_tags.rb
20161105130633_create_statuses_tags_join_table.rb
20161116162355_add_locale_to_users.rb
20161119211120_create_notifications.rb
20161122163057_remove_unneeded_indexes.rb
20161123093447_add_sensitive_to_statuses.rb
20161128103007_create_subscriptions.rb
20161130142058_add_last_successful_delivery_at_to_subscriptions.rb
20161130185319_add_visibility_to_statuses.rb
20161202132159_add_in_reply_to_account_id_to_statuses.rb Fix older migrations not working due to new default scope (#11983) 5 years ago
20161203164520_add_from_account_id_to_notifications.rb
20161205214545_add_suspended_to_accounts.rb
20161221152630_add_hidden_to_stream_entries.rb
20161222201034_add_locked_to_accounts.rb
20161222204147_create_follow_requests.rb
20170105224407_add_shortcode_to_media_attachments.rb
20170109120109_create_web_settings.rb
20170112154826_migrate_settings.rb
20170114194937_add_application_to_statuses.rb
20170114203041_add_website_to_oauth_application.rb
20170119214911_create_preview_cards.rb
20170123162658_add_severity_to_domain_blocks.rb
20170123203248_add_reject_media_to_domain_blocks.rb
20170125145934_add_spoiler_text_to_statuses.rb
20170127165745_add_devise_two_factor_to_users.rb
20170205175257_remove_devices.rb Add E2EE API (#13820) 5 years ago
20170209184350_add_reply_to_statuses.rb Fix older migrations not working due to new default scope (#11983) 5 years ago
20170214110202_create_reports.rb
20170217012631_add_reblog_of_id_foreign_key_to_statuses.rb
20170301222600_create_mutes.rb
20170303212857_add_last_emailed_at_to_users.rb
20170304202101_add_type_to_media_attachments.rb
20170317193015_add_search_index_to_accounts.rb
20170318214217_add_header_remote_url_to_accounts.rb
20170322021028_add_lowercase_index_to_accounts.rb
20170322143850_change_primary_key_to_bigint_on_statuses.rb
20170322162804_add_search_index_to_tags.rb
20170330021336_add_counter_caches.rb
20170330163835_create_imports.rb
20170330164118_add_attachment_data_to_imports.rb
20170403172249_add_action_taken_by_account_id_to_reports.rb
20170405112956_add_index_on_mentions_status_id.rb
20170406215816_add_notifications_and_favourites_indices.rb
20170409170753_add_last_webfingered_at_to_accounts.rb
20170414080609_add_devise_two_factor_backupable_to_users.rb
20170414132105_add_language_to_statuses.rb
20170418160728_add_indexes_to_reports_for_accounts.rb
20170423005413_add_allowed_languages_to_user.rb
20170424003227_create_account_domain_blocks.rb
20170424112722_add_status_id_index_to_statuses_tags.rb
20170425131920_add_media_attachment_meta.rb
20170425202925_add_oembed_to_preview_cards.rb
20170427011934_re_add_owner_to_application.rb
20170506235850_create_conversations.rb
20170507000211_add_conversation_id_to_statuses.rb
20170507141759_optimize_index_subscriptions.rb
20170508230434_create_conversation_mutes.rb
20170516072309_add_index_accounts_on_uri.rb
20170520145338_change_language_filter_to_opt_out.rb
20170601210557_add_index_on_media_attachments_account_id.rb
20170604144747_add_foreign_keys_for_accounts.rb
20170606113804_change_tag_search_index_to_btree.rb
20170609145826_remove_default_language_from_statuses.rb
20170610000000_add_statuses_index_on_account_id_id.rb
20170623152212_create_session_activations.rb
20170624134742_add_description_to_session_activations.rb
20170625140443_add_access_token_id_to_session_activations.rb
20170711225116_fix_null_booleans.rb Fix old migrations failing because of strong_migrations update (#12692) 5 years ago
20170713112503_make_tag_search_case_insensitive.rb
20170713175513_create_web_push_subscriptions.rb
20170713190709_add_web_push_subscription_to_session_activations.rb
20170714184731_add_domain_to_subscriptions.rb
20170716191202_add_hide_notifications_to_mute.rb
20170718211102_add_activitypub_to_accounts.rb
20170720000000_add_index_favourites_on_account_id_and_id.rb
20170823162448_create_status_pins.rb
20170824103029_add_timestamps_to_status_pins.rb
20170829215220_remove_status_pins_account_index.rb
20170901141119_truncate_preview_cards.rb
20170901142658_create_join_table_preview_cards_statuses.rb
20170905044538_add_index_id_account_id_activity_type_on_notifications.rb
20170905165803_add_local_to_statuses.rb
20170913000752_create_site_uploads.rb
20170917153509_create_custom_emojis.rb
20170918125918_ids_to_bigints.rb Fix interactive delays in database migrations with no TTY (#12969) 5 years ago
20170920024819_status_ids_to_timestamp_ids.rb
20170920032311_fix_reblogs_in_feeds.rb
20170924022025_ids_to_bigints2.rb
20170927215609_add_description_to_media_attachments.rb
20170928082043_create_email_domain_blocks.rb
20171005102658_create_account_moderation_notes.rb Fix old migrations failing because of new version of `strong_migrations` (#10904) 6 years ago
20171005171936_add_disabled_to_custom_emojis.rb
20171006142024_add_uri_to_custom_emojis.rb
20171010023049_add_foreign_key_to_account_moderation_notes.rb Fix old migrations failing because of new version of `strong_migrations` (#10904) 6 years ago
20171010025614_change_accounts_nonnullable_in_account_moderation_notes.rb Fix old migrations failing because of strong_migrations update (#12692) 5 years ago
20171020084748_add_visible_in_picker_to_custom_emoji.rb
20171028221157_add_reblogs_to_follows.rb
20171107143332_add_memorial_to_accounts.rb
20171107143624_add_disabled_to_users.rb
20171109012327_add_moderator_to_accounts.rb
20171114080328_add_index_domain_to_email_domain_blocks.rb
20171114231651_create_lists.rb
20171116161857_create_list_accounts.rb
20171118012443_add_moved_to_account_id_to_accounts.rb Fix old migrations failing because of new version of `strong_migrations` (#10904) 6 years ago
20171119172437_create_admin_action_logs.rb
20171122120436_add_index_account_and_reblog_of_id_to_statuses.rb
20171125024930_create_invites.rb
20171125031751_add_invite_id_to_users.rb Fix migrations failing due to strong-migrations update (#13680) 5 years ago
20171125185353_add_index_reblog_of_id_and_account_to_statuses.rb
20171125190735_remove_old_reblog_index_on_statuses.rb
20171129172043_add_index_on_stream_entries.rb
20171130000000_add_embed_url_to_preview_cards.rb
20171201000000_change_account_id_nonnullable_in_lists.rb Fix old migrations failing because of strong_migrations update (#12692) 5 years ago
20171212195226_remove_duplicate_indexes_in_lists.rb
20171226094803_more_faster_index_on_notifications.rb
20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb
20180109143959_add_remember_token_to_users.rb
20180204034416_create_identities.rb
20180206000000_change_user_id_nonnullable.rb Fix old migrations failing because of strong_migrations update (#12787) 5 years ago
20180211015820_create_backups.rb
20180304013859_add_featured_collection_url_to_accounts.rb
20180310000000_change_columns_in_notifications_nonnullable.rb Fix old migrations failing because of strong_migrations update (#12692) 5 years ago
20180402031200_add_assigned_account_id_to_reports.rb Fix migrations failing due to strong-migrations update (#13680) 5 years ago
20180402040909_create_report_notes.rb Fix old migrations failing because of new version of `strong_migrations` (#11018) 6 years ago
20180410204633_add_fields_to_accounts.rb
20180416210259_add_uri_to_relationships.rb
20180506221944_add_actor_type_to_accounts.rb
20180510214435_add_access_token_id_to_web_push_subscriptions.rb Fix migrations failing due to strong-migrations update (#13680) 5 years ago
20180510230049_migrate_web_push_subscriptions.rb
20180514130000_improve_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb
20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb
20180528141303_fix_accounts_unique_index.rb Fix interactive delays in database migrations with no TTY (#12969) 5 years ago
20180608213548_reject_following_blocked_users.rb
20180609104432_migrate_web_push_subscriptions2.rb
20180615122121_add_autofollow_to_invites.rb
20180616192031_add_chosen_languages_to_users.rb
20180617162849_remove_unused_indexes.rb
20180628181026_create_custom_filters.rb
20180707154237_add_whole_word_to_custom_filter.rb
20180711152640_create_relays.rb
20180808175627_create_account_pins.rb
20180812123222_change_relays_enabled.rb
20180812162710_create_status_stats.rb
20180812173710_copy_status_stats.rb
20180814171349_add_confidential_to_doorkeeper_application.rb
20180820232245_add_foreign_key_indices.rb
20180831171112_create_bookmarks.rb Add bookmarks (#7107) 5 years ago
20180929222014_create_account_conversations.rb
20181007025445_create_pghero_space_stats.rb
20181010141500_add_silent_to_mentions.rb
20181017170937_add_reject_reports_to_domain_blocks.rb
20181018205649_add_unread_to_account_conversations.rb
20181024224956_migrate_account_conversations.rb Fix interactive delays in database migrations with no TTY (#12969) 5 years ago
20181026034033_remove_faux_remote_account_duplicates.rb
20181116165755_create_account_stats.rb
20181116173541_copy_account_stats.rb Fix slow fallback of CopyAccountStats migration setting stats to 0 (#9930) 6 years ago
20181127130500_identity_id_to_bigint.rb
20181203003808_create_accounts_tags_join_table.rb
20181203021853_add_discoverable_to_accounts.rb
20181204193439_add_last_status_at_to_account_stats.rb
20181204215309_create_account_tag_stats.rb
20181207011115_downcase_custom_emoji_domains.rb Fix regression in custom emoji migration (#9742) 6 years ago
20181213184704_create_account_warnings.rb
20181213185533_create_account_warning_presets.rb
20181219235220_add_created_by_application_id_to_users.rb Fix migrations failing due to strong-migrations update (#13680) 5 years ago
20181226021420_add_also_known_as_to_accounts.rb Add handler for Move activity (#9629) 6 years ago
20190103124649_create_scheduled_statuses.rb Add scheduled statuses (#9706) 6 years ago
20190103124754_add_scheduled_status_id_to_media_attachments.rb Fix migrations failing due to strong-migrations update (#13680) 5 years ago
20190117114553_create_tombstones.rb Add tombstones for remote statuses (#9830) 6 years ago
20190201012802_add_overwrite_to_imports.rb Add option to overwrite imported data (#9962) 6 years ago
20190203180359_create_featured_tags.rb Add featured hashtags to profiles (#9755) 6 years ago
20190225031541_create_polls.rb Add polls (#10111) 6 years ago
20190225031625_create_poll_votes.rb Add polls (#10111) 6 years ago
20190226003449_add_poll_id_to_statuses.rb Add polls (#10111) 6 years ago
20190304152020_add_uri_to_poll_votes.rb Store remote votes URI (#10158) 6 years ago
20190306145741_add_lock_version_to_polls.rb Fix AddLockVersionToPolls migration (#10200) 6 years ago
20190307234537_add_approved_to_users.rb Admission-based registrations mode (#10250) 6 years ago
20190314181829_migrate_open_registrations_setting.rb Migrate existing `open_registrations` setting to the new `registrations_mode` (#10269) 6 years ago
20190316190352_create_account_identity_proofs.rb Add Keybase integration (#10297) 6 years ago
20190317135723_add_uri_to_reports.rb Set and store report URIs (#10303) 6 years ago
20190403141604_add_comment_to_invites.rb Add invite comments (#10465) 6 years ago
20190409054914_create_user_invite_requests.rb Add "why do you want to join" field to invite requests (#10524) 6 years ago
20190420025523_add_blurhash_to_media_attachments.rb Add blurhash (#10630) 6 years ago
20190509164208_add_by_moderator_to_tombstone.rb Record deleted(by mod) status to prevent re-appear (#10732) 6 years ago
20190511134027_add_silenced_at_suspended_at_to_accounts.rb Record account suspend/silence time and keep track of domain blocks (#10660) 6 years ago
20190529143559_preserve_old_layout_for_existing_users.rb Change default to single column UI (#10847) 6 years ago
20190627222225_create_custom_emoji_categories.rb Add categories for custom emojis (#11196) 6 years ago
20190627222826_add_category_id_to_custom_emojis.rb Add categories for custom emojis (#11196) 6 years ago
20190701022101_add_trust_level_to_accounts.rb Add a spam check (#11217) 6 years ago
20190705002136_create_domain_allows.rb Add whitelist mode (#11291) 6 years ago
20190715164535_add_instance_actor.rb Add ActivityPub actor representing the entire server (#11321) 6 years ago
20190726175042_add_case_insensitive_index_to_tags.rb Fix tag normalization and migration not removing duplicate tags (#11441) 6 years ago
20190729185330_add_score_to_tags.rb Add hashtag score for better sorting of autosuggestions (#11427) 6 years ago
20190805123746_add_capabilities_to_tags.rb Change admin UI for hashtags and add back whitelisted trends (#11490) 6 years ago
20190807135426_add_comments_to_domain_blocks.rb Add domain block notes (#11515) 6 years ago
20190815225426_add_last_status_at_to_tags.rb Add more accurate hashtag search (#11579) 6 years ago
20190819134503_add_deleted_at_to_statuses.rb Add soft delete for statuses for instant deletes through API (#11623) 6 years ago
20190820003045_update_statuses_index.rb Add soft delete for statuses for instant deletes through API (#11623) 6 years ago
20190823221802_add_local_index_to_statuses.rb Fix slow local timeline query (#11648) 6 years ago
20190901035623_add_max_score_to_tags.rb Change trending hashtags to not disappear instantly after midnight (#11712) 6 years ago
20190904222339_create_markers.rb Add timeline read markers API (#11762) 6 years ago
20190914202517_create_account_migrations.rb Add account migration UI (#11846) 6 years ago
20190915194355_create_account_aliases.rb Add account migration UI (#11846) 6 years ago
20190917213523_add_remember_token_index.rb Add users remember_token index (#11881) 6 years ago
20190927232842_add_voters_count_to_polls.rb Add voters count support (#11917) 5 years ago
20191001213028_add_lock_version_to_account_stats.rb Fix account counters being overwritten by parallel writes (#12045) 5 years ago
20191007013357_update_pt_locales.rb Fix existing user records with now-renamed `pt` locale (#12092) 5 years ago
20191031163205_change_list_account_follow_nullable.rb Fix old migrations failing because of strong_migrations update (#12787) 5 years ago
20191212003415_increase_backup_size.rb Fix unsafe column type change in migration (#12653) 5 years ago
20191212163405_add_hide_collections_to_accounts.rb Add federation support for the "hide network" preference (#11673) 5 years ago
20191218153258_create_announcements.rb Add announcements (#12662) 5 years ago
20200113125135_create_announcement_mutes.rb Add announcements (#12662) 5 years ago
20200114113335_create_announcement_reactions.rb Add announcements (#12662) 5 years ago
20200119112504_add_public_index_to_statuses.rb Fix slow query of federated timeline (#12886) 5 years ago
20200126203551_add_published_at_to_announcements.rb Fix expired announcements being re-published (#12964) 5 years ago
20200306035625_add_processing_to_media_attachments.rb Change local media attachments to perform heavy processing asynchronously (#13210) 5 years ago
20200312144258_add_title_to_account_warning_presets.rb Add titles to warning presets in admin UI (#13252) 5 years ago
20200312162302_add_status_ids_to_announcements.rb Fix PostgreSQL load when linking in announcements (#13250) 5 years ago
20200312185443_add_parent_id_to_email_domain_blocks.rb Fix migrations failing due to strong-migrations update (#13680) 5 years ago
20200407201300_create_unavailable_domains.rb Change delivery failure tracking to work with hostnames instead of URLs (#13437) 5 years ago
20200407202420_migrate_unavailable_inboxes.rb Fix migration 20200407202420_migrate_unavailable_inboxes (#13481) 5 years ago
20200417125749_add_storage_schema_version.rb Add separate cache directory for non-local uploads (#12821) 5 years ago
20200508212852_reset_unique_jobs_locks.rb Fix old unique jobs digests not having been cleaned up (#13683) 5 years ago
20200510110808_reset_web_app_secret.rb Reset secret of web app that could have been exposed by Doorkeeper (#13688) 5 years ago
20200510181721_remove_duplicated_indexes_pghero.rb Fix RemoveDuplicatedIndexesPghero to check for the existence of the index (#14259) 5 years ago
20200516180352_create_devices.rb Add E2EE API (#13820) 5 years ago
20200516183822_create_one_time_keys.rb Add E2EE API (#13820) 5 years ago
20200518083523_create_encrypted_messages.rb Add E2EE API (#13820) 5 years ago
20200521180606_encrypted_message_ids_to_timestamp_ids.rb Add E2EE API (#13820) 5 years ago
20200529214050_add_devices_url_to_accounts.rb Add E2EE API (#13820) 5 years ago
20200601222558_create_system_keys.rb Add E2EE API (#13820) 5 years ago
20200605155027_add_blurhash_to_preview_cards.rb Add blurhash to preview cards (#13984) 5 years ago
20200608113046_add_sign_in_token_to_users.rb Add e-mail-based sign in challenge for users with disabled 2FA (#14013) 5 years ago
20200620164023_add_fixed_lowercase_index_to_accounts.rb Fix unique username constraint for local users not being enforced in database (#14099) 5 years ago
20200622213645_media_attachment_ids_to_timestamp_ids.rb Fix media attachments enumeration (#14254) 5 years ago
20200627125810_add_thumbnail_columns_to_media_attachments.rb Add customizable thumbnails for audio and video attachments (#14145) 5 years ago
20200628133322_create_account_notes.rb Add user notes on accounts (#14148) 5 years ago
20200630190240_create_webauthn_credentials.rb Add WebAuthn as an alternative 2FA method (#14466) 5 years ago
20200630190544_add_webauthn_id_to_users.rb Add WebAuthn as an alternative 2FA method (#14466) 5 years ago