* add optional fields to user
- this provides the back-end implementation for #2365
* fix mistakes in schema.rb
* renamed OptionalField to userOptionalField
* rename field column in user_optional_fields to label
* add uniqueness validation on user_optional_field labels
* scope flag uniqueness to user_id
* add indexing on label in user_optional_fields
* add optional fields to user
- this provides the back-end implementation for #2365
* fix mistakes in schema.rb
* add index on user_id for user_optional_fields
* Remove duplicate model
* Fix schema
* Re-add past indexes
* Remove old index
* Remove another old index
* add `null:false` to columns in optional fields
* add `null: false` to the migration
- Updated test to account for the null constraint
* add null:false to user_id on user_optional_tables
Co-authored-by: rhymes <rhymesete@gmail.com>
Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
* 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
* Create Articles entity and refactor articles_controller
* Add safe operator into action new from articles_controller
* Renaming files for better understanding
* Move some logic from the articles controller to articles builder
* Add method normalized text into articles builder
* rails patch to fix expires_in for increment method
* fixup! rails patch to fix expires_in for increment method
correct test case
* fix redundant file name & class name
* add comment to explain monkey patch for RedisCacheStore#increment
* refactor: set the email_from to use in teh defaults
* chore: remove some new lines
* feat: add a mail link helper that can be used in the views
* feat: returns the default if it doesn't understand the parameter
* feat: Quick replacement of links
* feat: allow subject to be passed through
* chore: update all hrefs
* chore: remove rel attribute
* chore: mail link
* update spec
* chore: space
* chore: update some whitespaces and emails
* style
* chore: PR mail_link to email_link and the comment
* feat: PR suggestions for encoding
* feat: use mail_to
* 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
* Wrap user/identity coupled logic in a transaction
Creating a user and then setting an identiy should occur as an all-or-nothing step.
Wrapping this in an ActiveRecord::Transaction ensures that we don't update an identity
unless we succesfully create/update the user first in the same database transaction.
* Allow errors from authenticator service to bubble up
* Address some issues with logic in ActiveRecord::Base.transaction
* Pull out calls to DataDog from transaction.
* Add additional DataDog call in case something goes wrong in the transaction.
* Rename some methods, add some specs.
* Re-raise errors after notifying DataDog
* Add error message to DataDog tags in Authenticator