* factor out GetSubpathFromConfig
* mv web/subpath.go to utils/subpath.go
* serve up web, api and ws on /subpath if configured
* pass config to utils.RenderWeb(App)?Error
This allows the methods to extract the configured subpath and redirect
to the appropriate `/subpath/error` handler.
* ensure GetSubpathFromConfig returns trailing slashes deterministically
* fix error 404 handling
* redirect /subpath to /subpath/
This is necessary for the static handler to match, otherwise none of the
registered routes find anything. This also makes it no longer necessary
to add trailing slashes in the root router.
* MM-6992 Added highlighting to elasticsearch results
* Added a unique type for post search matches
* Fixed Elasticsearch matches not being sent through API
* MM-8701 Limit the number of client config fields sent before user logs in
* Fixed missing client config field
* Reduced duplication between limited and regular client config
* Prototype for CBA
* Fixing gofmt issues
* Do not require password if logging in with certificate
* Fixing issues from feedback
* Adding unit tests
* Fixing feedback
* Add missing diagnostics (#8911)
* Update diagnostics.go
* Update diagnostics.go
* Fix push notification styling backwards compatibility (#8913)
* MM-10803: remove premature user sanitization on deactivation (#8926)
* remove unused UpdateNonSSOUserActive
* MM-10803: stop prematurely sanitizing users on deactivate
This change was preceded by the removal of UpdateNonSSOUserActive to
ensure there are no APIs relying on the sanitized return value.
* MM-10803: test websocket events after UpdateUserActive
* MM-10264: Adds system scheme to permissions import/export. (#8924)
* MM-10264: Adds system scheme to permissions import/export.
* MM-10264: Switches to more likely unique name.
* MM-10264: Changed collision prevention string.
* MM-10264: Rolls back created schemes in all error cases.
* MM-10264: Test fix for more rollback cases.
* MM-10264: Adds system scheme to permissions import/export.
* MM-10264: Switches to more likely unique name.
* MM-10264: Changed collision prevention string.
* MM-10264: Rolls back created schemes in all error cases.
* MM-10264: Test fix for more rollback cases.
* remove unused UpdateNonSSOUserActive
* MM-10803: stop prematurely sanitizing users on deactivate
This change was preceded by the removal of UpdateNonSSOUserActive to
ensure there are no APIs relying on the sanitized return value.
* MM-10803: test websocket events after UpdateUserActive
* Get the count of the all system users at endpoint /users/stats
* Added GetTotalUsersStats test in api4
* Changed pluralization and added the test back.
* send websocket event whenever the channel has changed it's type (public|private)
* updated per comment
Signed-off-by: Saturnino Abril <saturnino.abril@gmail.com>
* add channel_converted websocket event
Signed-off-by: Saturnino Abril <saturnino.abril@gmail.com>
* only send channel_id via websocket message for "channel_converted" event
Signed-off-by: Saturnino Abril <saturnino.abril@gmail.com>
* allow `Wait()`ing on the supervisor
In the event the plugin supervisor shuts down a plugin for crashing too
many times, the new `Wait()` interface allows the `ActivatePlugin` to
accept a callback function to trigger when `supervisor.Wait()` returns.
If the supervisor shuts down normally, this callback is invoked with
a nil error, otherwise any error reported by the supervisor is passed
along.
* improve plugin activation/deactivation logic
Avoid triggering activation of previously failed-to-start plugins just
becase something in the configuration changed. Now, intelligently
compare the global enable bit as well as the each individual plugin's
enabled bit.
* expose store to manipulate PluginStatuses
* expose API to fetch plugin statuses
* keep track of whether or not plugin sandboxing is supported
* transition plugin statuses
* restore error on plugin activation if already active
* don't initialize test plugins until successfully loaded
* emit websocket events when plugin statuses change
* skip pruning if already initialized
* MM-8622: maintain plugin statuses in memory
Switch away from persisting plugin statuses to the database, and
maintain in memory instead. This will be followed by a cluster interface
to query the in-memory status of plugin statuses from all cluster nodes.
At the same time, rename `cluster_discovery_id` on the `PluginStatus`
model object to `cluster_id`.
* MM-8622: aggregate plugin statuses across cluster
* fetch cluster plugin statuses when emitting websocket notification
* address unit test fixes after rebasing
* relax (poor) racey unit test re: supervisor.Wait()
* make store-mocks