* Add automated email ownership emails
This is task Michael does manually a lot. There are a lot of cases where
we need to validate that an individual has access to the email address
associated with their DEV account. This automates a singificant portion
of that, and hopefully we can use it in a lot of places.
* Refactor user_show_spec to check for exact JSON-LD data to improve testing
* Extracts data out into factory objects to shorten # of lines in test
* Extracts JSON-LD into a parsed object for more precise testing
* Shortens test to be within the 15 line rubocop limit
* Resolves rubocop multi-line errors
* Refactor user.update_columns to be a single method
* Add :with_all_info trait to users factory
* Adds trait that holds all necessary info for user JSON-LD
* Removes user.update_columns method from the user_show_spec
* Adds the :with_all_info trait to the user in the spec
* Wrap test in rubocop:disable to resolve ExampleLength errors
* Removes let blocks that once held extracted code
* Adds code back to the data structure as inline code
* Resolves even more rubocop errors... hopefully
* Allow admins to suggest default users to follow during onboarding
Allows the onboarding "follow users" slide to be configured by admins.
Closes https://github.com/thepracticaldev/dev.to/issues/7106.
* Remove redundant safety checks, refactor specs
* Add explicit note about how suggested users are used in onboarding
* Some configs_controller cleanup and fix copypasta in configs/show template
* Fetch SiteConfig.suggested_users via before_action
* Use presence instead of empty?
* Remove unnecessary .downcases from methods in Stories::Controller
* Removes .downcase from methods using params[:username]
* Removes .downcase from handle_user_or_organization_or_podcast_or_page_index
* Removes .downcase from handle_user_index
* Add shared_examples for lowercase routing to stories_index_spec.rb
* Replace create with build in stories_index_spec.rb
* Move onboarding-related configs into new onboarding section
* Extract mascot-related configs into a mascot section
* Update order of fields in SiteConfig model to match order in view
* Update ordering of specs for onboarding/mascot config changes
* Rename remove_association to remove_identity and future proof its tests
* Use the signin_path everywhere
* Generalize account settings
* Use delegation
* Add route_downcaser gem to Gemfile to make routes case-insensitive
* Ensures paths are downcased and redirects to lowercase routes
* Resolves SEO issue where uppercase routes do not redirect to lowercase
* Add before_action to redirect to lowercase user routes
* Adds a before_action for the index only
* Redirects lowercase usernames and article titles
* Comments out route_downcaser gem in Gemfile for now
* Redirect to lowercase usernames in StoriesController#show for uppercase usernames
* Redirects in before_action for the index method only
* Adds nil check in #redirect_to_lowercase_username
* Adjusts stories_index_spec.rb to be more concise
* Removes old and unnecessary code from StoriesController and spec
* Add additional testing around lowercase name redirects and aggregate_failures
* Replace hardcoded URL with URL helper in Stories::Controller and stories_index_spec
* Fix GET request in stories_index_spec.rb
* Use upper in place of A-Z in regex in redirect_to_lowercase_username
* Revert URL helper changes and use params instead in Stories::Controller and stories_index_spec
* Use Devise registry to list available providers
* Cleanups following Devise+Omniauth docs
* More cleanups
* Use helpers
* More cleanups
* Oops, forgot to remove these specs
* Added configurable meta keywords
* Replaced hardcoded meta-keywords with the configurable ones
* Added tests for configurable meta_keywords
* Improve info for configuring meta-keywords
* feat: add base site config
* chore: rename developer/developers
* feat: update to use community_member_label
* chore: amend text
* chore: update spec
* chore: extra space
* feat: add placeholders for some routes
* about_listings_url
* feat: tag-moderation
* chore: about_listings_url test
* chore: use post a job url
* chore: add pages methods
* chore: just reordered stuff
* oops forgot to save - oh man
* chore: change to single quotes
* chore: hopefully retrigger cc
* chore: update tests
* feat: PR suggestions:)
* chore: spec
* Add correct rate limit exception to Articles::Updater
* Send Retry-After with HTTP 429 back to the client
* Update API specs for error 429
* Test build
* Fix spec
* Add retry after to ImageUploadsController and fix specs
* Generalize a bit
* Add seo_optimized_images method to article_json_ld
* Add inline documentation for images in method
* Add to stories_controller.rb with other JSON-LD
* Fix inconsistencies in stories_show_spec.rb tests
* feat: update the email addresses in the site config
* chore: update the default email address everywhere
* feat: update the template for the config
* chore: remove default_site_mail as an allowed parameter
* feat: change biz@dev.to to teh business email address and with a subject
* feat: update partners@dev.to to use SiteConfig.email_addresses[:business]
* feta: update to business email address
* feat: update members@dev.to to use the site config
* feat: update privacy email
* chore: Anna's suggestion to loop through object instead of keys