Commit Graph
100 Commits
Author SHA1 Message Date
David Taylor 0dd717e641 Revert "FIX: Sanitize tags before creation"
This reverts commit 18ae8de9e5.
2018-10-19 15:49:05 +01:00
David Taylor 18ae8de9e5 FIX: Sanitize tags before creation 2018-10-19 15:43:31 +01:00
David Taylor 7166d7de9a FIX: Prevent duplicate tags in tag-choosers (#6512)
* FIX: Prevent duplicate tags in tag-choosers

This reverts 5685b45, which fixes the duplicate tags problem.
The fix introduced by 5685b45 is re-implemented on the server.
2018-10-19 13:44:43 +01:00
David Taylor 065bf0762c FEATURE: New plugin outlets for user card customization 2018-10-17 14:15:48 +01:00
David Taylor 501ac4dfa6 DEV: Cleanup properly after user_serializer test 2018-10-17 10:54:22 +01:00
David Taylor c6f364224e FEATURE: Allow plugins to whitelist user custom fields for public display (#6499)
This works exactly the same as `whitelist_staff_user_custom_fields`, but is not limited to staff
2018-10-17 10:33:27 +01:00
David Taylor 7ac08f936e FEATURE: Upload tags from CSV (#6484) 2018-10-15 09:12:54 +01:00
David Taylor 1b0fbc4d30 FIX: Allow theme edit route name to be overridden
This is required for the theme-creator plugin, this change won't have
any effect on regular Discourse installations
2018-10-11 13:20:04 +01:00
David Taylor 98211f945f FIX: 'none' tag page would not load 2018-10-10 16:00:33 +01:00
David Taylor ac89a728f8 DEV: Remove autospec hacks for social auth providers
This was causing erratic test failures. Autospec continues to work after
removing, so this 5-year-old code is no longer needed.
2018-10-09 12:42:57 +01:00
David Taylor cbb8f6f0fe UX: Use 'trash' icon instead of 'times' for deleting small actions 2018-10-05 22:31:56 +01:00
David Taylor 75488257c5 FIX: Redirect users to top when latest is the homepage 2018-10-05 12:14:57 +01:00
David Taylor 9bf522f227 FEATURE: Mixed case tagging (#6454)
- By default, behaviour is not changed: tags are made lowercase upon creation and edit.

- If force_lowercase_tags is disabled, then mixed case tags are allowed.

- Tags must remain case-insensitively unique. This is enforced by ActiveRecord and Postgres.

- A migration is added to provide a `UNIQUE` index on `lower(name)`. Migration includes a safety to correct any current tags that do not meet the criteria.

- A `where_name` scope is added to `models/tag.rb`, to allow easy case-insensitive lookups. This is used instead of `Tag.where(name: "blah")`.

- URLs remain lowercase. Mixed case URLs are functional, but have the lowercase equivalent as the canonical.
2018-10-05 10:23:52 +01:00
David Taylor 9554d657c5 DEV: Remove underscore from tags-test 2018-10-04 21:14:52 +01:00
David Taylor 5b56a8cd09 DEV: Merge multiple discourse_tagging_spec files 2018-10-04 15:44:29 +01:00
David Taylor 3c2608d41c FIX: Correctly censor strings starting or ending with non-word characters (#6445) 2018-10-04 15:15:10 +01:00
David Taylor 2a8ce0cb04 UX: Improve shared_drafts_category description 2018-09-27 22:39:10 +01:00
David Taylor 0b2b617483 FIX: Corrected copy on post_edit_time_limit site setting 2018-09-26 18:49:10 +01:00
David Taylor 19c9a6699a FIX: Validate auto_close_hours category setting
This prevents server errors when the value is set too high
2018-09-26 16:04:49 +01:00
David Taylor 84f5448a92 FEATURE: Display trust level descriptions in site settings (#6421) 2018-09-21 15:10:38 +01:00
David Taylor b8c0e77908 DEV: apply plugin migrations when testing in Travis and Docker
In `RAILS_ENV=test`, plugins are not loaded by default. Therefore we need to explicitly specify `LOAD_PLUGINS=1` when we want to apply plugin migrations.
2018-09-13 12:39:54 +01:00
David Taylor 9461c99210 DEV: Add travis_fold to termination stage 2018-09-12 18:59:48 +01:00
David Taylor 26bd67a865 DEV: Add travis_fold statements to docker_test 2018-09-12 17:52:58 +01:00
David Taylor 84fc7abb73 FIX: Allow rake destroy:topics to delete topics in sub-categories 2018-09-10 12:52:14 +01:00
David Taylor 4382fb5fac DEV: Allow plugins to whitelist specific user custom_fields for editing (#6358) 2018-09-04 20:45:36 +10:00
David Taylor 103509b9dd SECURITY: Prevent users from modifying custom fields 2018-08-30 12:59:36 +01:00
David Taylor f0abb4d09a FIX: Allow user actions to be saved even if the post has nil user
This issue made it impossible to delete users if they had flagged a post with nil user
2018-08-30 01:03:32 +01:00
David Taylor e7e8f4ef4c Add plugin API for handling uploads with specific file extensions 2018-08-17 16:08:47 +01:00
David Taylor 7b089f7af4 FIX: Don't throw exception if welcome topic cannot be found 2018-08-15 15:50:55 +01:00
David Taylor d3a9596d08 Remove unused import 2018-08-08 10:46:43 +01:00
David Taylor d4d5088324 FIX: Don't require device capabilities when calculating login methods 2018-08-08 10:37:25 +01:00
David Taylor 575d9e0b1a FIX: Include parameters in function call 2018-08-08 10:09:22 +01:00
David Taylor aa9a9a5a72 FIX: Include auth_providers for anonymous users when login_required 2018-08-07 09:24:16 +01:00
David Taylor 3ffe084384 Merge pull request #6238 from LeoMcA/fix-fsl
FIX: don't require auth providers to set full_screen_login_setting
2018-08-06 10:29:22 +01:00
David Taylor 812add18bd REFACTOR: Serve auth provider information in the site serializer.
At the moment core providers are hard-coded in Javascript, and plugin providers get added to the JS payload at compile time. This refactor means that we only ship enabled providers to the client.
2018-08-06 09:25:48 +01:00
David Taylor 6566b2f11a FEATURE: Allow revoke and connect for Instagram logins 2018-07-30 14:38:53 +01:00
David Taylor 8d1acbd4c2 DEV: Include specific authenticator name in warning message 2018-07-30 11:33:48 +01:00
David Taylor e9856522dc UX: Add 'when' to autobump messages 2018-07-30 11:06:14 +01:00
David Taylor 5f1fd0019b FEATURE: Allow revoke and connect for GitHub logins 2018-07-27 17:18:53 +01:00
David Taylor 6296f63804 FEATURE: Revoke and connect for Yahoo logins 2018-07-27 16:20:47 +01:00
David Taylor 9c72c00206 FEATURE: Revoke and reconnect for Twitter logins 2018-07-27 12:28:51 +01:00
David Taylor 467c529920 FIX: Remove return statement from inside block 2018-07-26 15:52:39 +01:00
David Taylor 88241f57a3 FEATURE: allow auth plugins to have a site setting for full screen login 2018-07-26 11:11:16 +01:00
David Taylor 63e15aa41a Add missing semicolon 2018-07-26 10:30:10 +01:00
David Taylor 0d0d78841b FIX: Remove plugin.enabled? checks at initialization time (#6166)
Checking `plugin.enabled?` while initializing plugins causes issues in two ways:
  - An application restart is required for changes to take effect. A load-balanced multi-server environment could behave very weirdly if containers restart at different times.
  - In a multisite environment, it takes the `enabled?` setting from the default site. Changes on that site affect all other sites in the cluster.

Instead, `plugin.enabled?` should be checked at runtime, in the context of a request. This commit removes `plugin.enabled?` from many `instance.rb` methods.

I have added a working `plugin.enabled?` implementation for methods that actually affect security/functionality:
  - `post_custom_fields_whitelist`
  - `whitelist_staff_user_custom_field`
  - `add_permitted_post_create_param`
2018-07-25 16:44:09 +01:00
David Taylor f38942d121 FIX: Destroy session between omniauth callbacks controller tests 2018-07-25 16:33:42 +01:00
David Taylor fa399ce1c5 FEATURE: Add revoke and reconnect functionality for google logins 2018-07-25 16:03:14 +01:00
David Taylor 776fd0de66 FIX: Filter open-id logins by identifier 2018-07-25 11:47:09 +01:00
David Taylor abddb48260 Rubocop fix 2018-07-24 10:49:20 +01:00
David Taylor 20a21b1240 Move into MiniSQLMultisiteConnection, and add test for rollback 2018-07-24 09:41:55 +01:00
David Taylor eda1462b3b FEATURE: List, revoke and reconnect associated accounts. Phase 1 (#6099)
Listing connections is supported for all built-in auth providers. Revoke and reconnect is currently only implemented for Facebook.
2018-07-23 16:51:57 +01:00
David Taylor d7b5a374c2 Fix indentation 2018-07-23 10:42:15 +01:00
David Taylor 5b4b632358 Correct typo 2018-07-18 22:27:55 +01:00
David Taylor 32db976156 FIX: Stop race condition when topic notification jobs are scheduled during a database transaction
This was not picked up by tests because scheduled jobs are run immediately
and in the current thread (and therefore the current database transaction).

This particular case sometimes occurs inside multiple nested transactions,
so simply moving the offending line outside of the transaction is not enough.

Implemented TransactionHelper, which allows us to use `TransactionHelper.after_commit`
to define code to be run after the current transaction has been committed.
2018-07-18 22:04:43 +01:00
David Taylor 2dc3a50dac FIX: Do not update last seen time for suspended users 2018-07-18 16:04:57 +01:00
David Taylor f4c902b434 FIX: set default on theme.key, if it has not yet been dropped (#6095) 2018-07-17 08:40:35 +10:00
David Taylor 81f9500f5c FIX: Change megatopic threshold to 10,000 posts 2018-07-12 22:00:53 +01:00
David Taylor 9a813210b9 SECURITY: Do not allow authentication with disabled plugin-supplied a… (#6071)
Do not allow authentication with disabled plugin-supplied auth providers
2018-07-09 14:25:58 +10:00
David Taylor c168639be2 Add plugin outlet in admin theme list (#5837)
This will be used by discourse-theme-creator to add avatars next to each theme.
2018-05-18 10:09:21 +02:00
David Taylor ad7f2b7dc6 Allow import and keyGen URLs to be overridden in import modal 2018-04-09 16:42:47 +10:00
David Taylor a17cb11dc3 Allow adminCustomizeThemes.edit route name to be overridden in themes-show 2018-04-09 16:42:47 +10:00
David Taylor 37fe1c76b9 Allow FIELDS_IDS to be overridden 2018-04-09 16:42:47 +10:00
David Taylor 70e60f4afe Allow adminCustomizeThemes.edit route name to be overridden 2018-04-09 16:42:47 +10:00
David Taylor 7426e63c30 Allow theme asset upload url to be overridden 2018-04-09 16:42:47 +10:00
David Taylor f1f2ae594c Remove wrapper <span> from user nav plugin outlet (#5455) 2017-12-27 16:51:39 +11:00
David Taylor 28073413eb FIX: Presence bug (#5329)
* Add failing test case

* FIX: new activity was not triggering cleanup
2017-11-20 15:24:59 +01:00
David Taylor 8825581d98 Discourse-presence improvements
- Added guardian checks to endpoint
- Added security to messagebus publishing
- Added specs for security measures
- Moved all logic into component
- Stop sending ‘keepAlive’ messages if the user stops editing for more then 2 minutes

- Enable plugin by default
2017-09-08 14:32:13 -07:00
David Taylor 1def49cf6c SECURITY: Only publish PM reply messagebus notifications to allowed users 2017-09-08 14:12:15 -07:00
David Taylor feef5491a2 Simplify copy & add transifex config 2017-09-08 00:47:35 +01:00
David Taylor 7d350d0d75 Revert plugin js changes (#5139)
* Revert "Add disabled_plugins to preloadstore for login_required anonymous users (#5134)"

This reverts commit b840170f8d.

* Revert "Do not load javascripts for disabled plugins (#5103)"

This reverts commit a14ab48829.
2017-09-07 15:15:29 +02:00
David Taylor c9912fcc37 Add discourse-presence as a core plugin (#5137)
* Add discourse-presence as a core plugin

* Default enabled
2017-09-07 09:40:18 +02:00
David Taylor b840170f8d Add disabled_plugins to preloadstore for login_required anonymous users (#5134) 2017-09-06 12:18:58 +02:00
David Taylor a14ab48829 Do not load javascripts for disabled plugins (#5103)
* Do not load javascript for disabled plugins

* Appease rubocop
2017-09-06 10:06:47 +02:00
David Taylor ce2250d7aa Add avatar-flair plugin outlet for user card (#5104) 2017-08-28 12:26:42 -04:00
David Taylor ed6e1c3825 Combine docker:lint and docker:test into one command 2017-08-22 13:47:29 +01:00
David Taylor 6e7488178f Add documentation to docker_test.rb 2017-08-19 11:10:17 +01:00
David Taylor a3f5878ec9 Use if, not unless 2017-08-18 22:12:20 +01:00
David Taylor 7704e8246b Allow SINGLE_PLUGIN environment variable to be used 2017-08-18 22:04:35 +01:00
David Taylor ea43f50f6d Add documentation for new ENV variables 2017-08-18 22:03:09 +01:00
David Taylor d65570a8a1 Preparation for using chrome for qunit in docker images (#5062)
Move use_chrome option to ENV variable
Rewrite script to work with node 6 (current LTS version used in discourse_docker)
Add node stuff to gitignore
2017-08-18 14:08:58 -04:00
David Taylor c981edfa20 Add option to run qunit tests in headless chrome (#5054) 2017-08-16 07:42:42 -04:00
David Taylor 37300d6777 SECURITY: Do not show latest/top topics on 404 for login_required sites 2017-08-13 19:02:44 +03:00
David Taylor ea032d8372 Improve source code linting for continuous integration (#5017)
* Add rubocop linting to docker:test rake task

* Add eslint JS listing to plugin files, and add SKIP_LINT variable

* Fix failing ‘polls’ plugin eslint

Using eslint-disable-line, as is done in core qunit tests such as `acceptance/group-logs-test.js.es6`

* Add plugin test eslint to travis config

* Merge some eslint lines
2017-08-02 11:33:29 +09:00
David Taylor 4b00fdbc5b Exclude bundle directory when running rubocop (#5016)
* Exclude bundle directory when running rubocop

* Include the default excludes as well
2017-08-01 12:47:09 -04:00
David Taylor 2c6ed64ebe Spawn a new rake process to run tests, so that LOAD_PLUGINS gets re-checked (#5001) 2017-07-26 12:54:56 -04:00
David Taylor 27539e15e1 Allow whitespace around % scaler in markdown image syntax (#5000) 2017-07-26 10:54:20 -04:00
David Taylor febd7621ea Qunit plugin rake tasks (#4985)
* Allow running specific plugin tests using ENV variables

* Add a `rake plugin:qunit` task to match the existing `rake plugin:spec` task

* Improve docker.rake to allow running specific plugin qunit tests

* Purge cache before and after qunit tests

* Stop module auto-loader trying to auto-load tests

* Use URL query parameters to pass config into Qunit, avoiding caching issues

* Oops, searchParams doesn’t work in phantomJS. Parse the URL manually.

* Escape ampersands before passing URL to phantomJS, otherwise multiple parameters go wrong
2017-07-26 09:07:46 -04:00
David Taylor 4ad864892b Improve “server warmup” check for qunit rake task 2017-07-25 16:31:30 +01:00
David Taylor 2ddf365e3a Fix user stats colour for dark themes 2017-07-22 23:48:31 +01:00
David Taylor 62604e9297 Allow docker test rake task to be used for single plugins (#4973)
* Allow docker test rake task to be used for single plugins
2017-07-21 09:59:54 +09:00
David Taylor 2808e3f63e Fix for the last broken discourse-details qunit test 2017-07-11 22:43:33 +01:00
David Taylor 1091d101ef Load plugins for qunit travis tests 2017-07-11 21:50:16 +01:00
David Taylor c8e9f4bd3a Fix failing discourse-details plugin qunit tests 2017-07-11 17:25:53 +01:00
David Taylor 0b222493f6 For rake plugin:spec, only load ruby files ending in _spec.rb
This matches the default behaviour of rspec
2017-07-10 12:06:37 +01:00
David Taylor 9294826f31 Allow inclusion of elided text from emails when sending to a category… (#4844)
* Allow inclusion of elided text from emails when sending to a category address
2017-06-29 13:03:14 +09:00
David Taylor 058cde1fc5 Use bundle exec for docker_dev rake 2017-05-16 17:18:45 +01:00
David Taylor 96f2335c09 FIX: Corrects typo to avoid error 500 on theme change 2017-04-15 01:21:53 +01:00
David Taylor 03373a0e84 Add a user_seen DiscourseEvent for plugins to hook into 2017-03-31 23:30:59 +01:00
David Taylor 89d41ecb39 Add support for oneboxing twitter videos 2017-03-17 20:49:29 +00:00
David Taylor ea45cc1293 Request full tweets, since twitter has increased the allowed length 2017-03-17 20:36:53 +00:00