* Added handling of duplicate key conflicts
* Added a test
* Add value checks and fix username for the test
Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
* fix: no implicit (synthetic) memberships for guest
* fix: only check if guest if no explicit member
* refactor: join() to select() non-guest users
* style: golant lint
* fix: search as guest only returns explicit boards
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* retrieve all team members for specific lists
* retrieve all team members for specific lists
* final fixes
* update to use enum
* unit test fixes
* lint fixes
* fix integration test
* fixup integration test
* fix issues with making board private
* update to make webapp and server enums match
* fix to add member in correct role
* remove unnecessary property, check Open/Private board
* cleanup confirm for non admin
* some final cleanup
* move default to webapp
* only allow greater roles in drop down, change property name to minimumRole
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Check on GetBoardsForUserAndTeam if the board result list is incomplete and continue if that's the case
* Remove template filter and correctly check for not founds
* Update board store to return inserted / patched values without querying the DB after modifying them
* Remove redundant condition check after error refactoring
* Refactor error usage from the store level up and add API helpers
* Complete API tests
* Fix merge errorResponse calls
* Remove ensure helpers to allow for custom messages on permission errors
* Fix bad import and call
* Remove bad user check on auth that was added as part of the main merge
* Fix empty list test
* Replace deprecated proxy calls to ioutil.ReadAll with io.ReadAll
* Add information to the NotFound errors
* Add context to all remaining errors and address review comments
* Fix linter
* Adapt the new card API endpoints to the error refactor
* Remove almost all customErrorResponse calls
* Add request entity too large to errorResponse and remove customErrorResponse
* Fix linter
* fix: filter out bots for sharing and @mention-ing
* feat: add `?exclude_bots` to `getTeamUsers` API
* chore: `make swagger`
* chore: `make generate`
* fix: plugin store test function implementation
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* cards apis wip
* create card API
* validate cards when creating
* create card fixes
* patch card wip
* wip
* unit test for createCard; CardPatch2BlockPatch
* unit test for PatchCard
* more APIs
* unit tests for GetCardByID
* register GetCard API
* Set FOCALBOARD_UNIT_TESTING for integration tests
* integration tests for CreateCard
* more integration tests for CreateCard
* integtration tests for PatchCard
* fix integration tests for PatchCard
* integration tests for GetCard
* GetCards API wip
* fix merge conflict
* GetCards API and unit tests
* fix linter issues
* fix flaky unit test for mySQL
* Update server/api/api.go
Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>
* Update server/api/api.go
Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>
* address review comments
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>
* Refactor schema table migration mechanism
The old schema table migration code was initializing the migration
engine before changing the migrations table and was mixing queries on
two different database connections (the `s.db` connection and the
migrations `db` connection).
The changes on this commit take care of changing the migrations table
before the morph migration engine is initialized and they use the same
connection for all operations, better isolating the schema table
migration process.
* Update migrate function to take the cluster mutex first thing
* Split migration code and orchestration on different functions
* Wrap custom errors on data migrations
* Rename private migration method
* Update server/services/store/sqlstore/migrate.go
Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
* Added tab;le creation migration
* WIP
* Finished base impl
* Added MySQL migration
* WIP
* Added personal server store methods
* WIP
* Fixed webapp tests
* Updated server tests
* generated code
* generated code
* generated code
* used raw queries instead of plugin methods to avoid updating productapi package
* Added API doc
* Added sqlite migratins
* used plugin APIs again s=instead of raw queries
* WIP
* Added missed case of SQL migration where personal server can run on Postgres and MySQL
* CI
* Removed unsupported POSL operator
* Low on caffine. Making silly mistakes
* json handling
* int test
* hope tests pass
* Fix incorrect column size
* Webapp lint fixes
* remived debug code
* Updated moigration version
* Review fixes
* Adds a check that errors on store start if MariaDB is detected
* Fix linter
* Update error message
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Adds data migration to clean badly assigned boards
This data migration fetches all boards whose owner has a deleted
membership on the board's team and fixes them by processing them
again, this time with the fix applied to the `getBestTeamForBoard`
function that skips deleted teams and team memberships
* Do not create a transaction if there are no offending boards found
* Fix linter
* Converted synthetic membership to natuaral if needed
* Creating duplicated board to same category as parent board
* fixed tests
* fixed an incorrect API path in client
* Added logic to prevent jumping of new board between categories
* fixed lint error
* Update teamless boards migration to check for deleted entities
After this changes, the `TeamLessBoardsMigration` will check the team
and the team membership of the users to discard deleted entities when
cosidering what team to assign a board to
* Fix linter
* Uncomment team insights test
* Add checks to make sure insights endpoints work only in plugin mode
* adding constant for my insights
Co-authored-by: Benjamin Cooke <benjamincooke@Benjamins-MacBook-Pro.local>
* Add boilerplate functions and handlers for boards insights
* Fix function signatures to add 'duration' parameter, fix where clauses in db queries
* Fix where clause to include boards of which userId in parameter is a member
* Modify queries to work with sqlite, postgres, mysql
* Integration tests, and results of make generate
* Lint Fixes
* Add icons to board insights
* Lint fixes
* Format insights queries without squirrel to fix parameterization issues
* Add tests for sqlstore utility functions
* Improve team insights tests by creating 2 boards
* Refactor endpoints/app to adhere to developments in 7.0 release
* Refactor queries to use squirrel
* Lint fixes
* Fix client, integration tests
* Remove old integration tests
* Add storetests, refactor functions to handle authorized board_ids
* Make queries compatible with mysql, sqlite
* Add app tests
* Fix lint errors
* Revert makefile changes, fix docstring in api
* Lint fixes and doc correction suggested by @wiggin77
* Fix mock store call count error
* adding client code
* Make the following changes
- use serviceAPI to get user.Timezone
- rename licenseAndGuestUserCheck to insightPermissionGate, and handle returned error better
- validate page, perPage parameters aren't < 0
* Lint fix
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Benjamin Cooke <benjamincooke@Benjamins-MacBook-Pro.local>
* fix panic caused by returning nil,nil in GetMemberForBoard
* lint fix
* lint fix- need updated variable name
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
* Translated using Weblate (Malayalam)
Currently translated at 100.0% (303 of 303 strings)
Translation: Focalboard/webapp
Translate-URL: https://translate.mattermost.com/projects/focalboard/webapp/ml/
* Update translation files
Updated by "Cleanup translation files" hook in Weblate.
Translation: Focalboard/webapp
Translate-URL: https://translate.mattermost.com/projects/focalboard/webapp/
Update translation files
Updated by "Cleanup translation files" hook in Weblate.
Translation: Focalboard/webapp
Translate-URL: https://translate.mattermost.com/projects/focalboard/webapp/
Update translation files
Updated by "Cleanup translation files" hook in Weblate.
Translation: Focalboard/webapp
Translate-URL: https://translate.mattermost.com/projects/focalboard/webapp/
* Translated using Weblate (German)
Currently translated at 100.0% (312 of 312 strings)
Translation: Focalboard/webapp
Translate-URL: https://translate.mattermost.com/projects/focalboard/webapp/de/
* Added code for fetching all the users at one time.
* Added the code for personal server users
* Update-code
* Linter fixes
* Test cases updated, some minor changes
* Update the code according to review comments
* Cypress test fix
* Update server/services/store/mattermostauthlayer/mattermostauthlayer.go
Co-authored-by: Varghese Jose <varghese.jose@tutanota.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: jprusch <rs@schaeferbarthold.de>
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
* Converted synthetic membership to natuaral if needed
* Added unit tests for AddMemberToBoard
* Update server/app/boards_test.go
Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
* Fix test
Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Handled err in acse of lack of user-channel membership
* Used errors.As instead of type check
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
- provides support for compiling Boards directly into the Mattermost suite server
- a ServicesAPI interface replaces the PluginAPI to allow for implementations coming from pluginAPI and suite server.
- a new product package provides a place to register Boards as a suite product and handles life-cycle events
- a new boards package replaces much of the mattermost-plugin logic, allowing this to be shared between plugin and product
- Boards now uses module workspaces; run make setup-go-work
* skeleton lifecycle
* bare minimum to satisfy mm-server import
* added boards_imports.go
* move boards_imports.go to correct package
* bump mmserver version; remove replace in go.mod; use module workspaces; remove logger service
* rename product.go --> boards.go
* add FileInfoStore and Cloud services for product; create minimal pluginAPI interfaces for all packages
* rename Boards -> BoardsProduct
* compile success
* remove hooks service; guard for nil BoardsApp
* update to latest mmserver ver
* upgrade mmserver to master tip
* upgrade mmserver to master tip
* bump plugin-api to master tip
* fix users service
* fix OnActivate crash; normalize AppError returns
* fileBackend interface for server/app
* feature flag
* bump mmserver version
* fix linter errors
* make go.work when linting
* fix go.work creation for CI
* add execute flag for script
* fix more linter errors
* always create a go.work
* fix ci go.work
* OS agnostic go.work generator
* fix path
* fix path again
* partially disable cypress test
* fix case Id --> ID
* bump mmserver version
* include in go.work for dev
* addressed review comments.
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Refactor websockets state and lifecycle
This PR moves the state of the authentication and subscriptions to the
websockets client, allowing for multiple components to communicate
with it and request subscriptions independently. With this change, the
lifecycle of the websockets client is now managed on a component, and
a hook is provided for easy access to it from individual components.
* Fix linter
* Integrating the new websockets in channels integration with the RHS and board selector
* Some small fixes around boards-channels relationship
* Make the boards unfurl to always use the current team
* Fixing weird behaviors in websockets and other small data related bugs in channel-board relationship
* Only warn if withWebSockets is used without a base connection
* Fix tests
* Fix linter
* Update snapshot
* Fixing plugin tests
Co-authored-by: Jesús Espino <jespinog@gmail.com>
* Initial Boards+Channels implementation
* Adding draft code to list the boards in a channel
* Adding the hability to link/unlink channels (fake channel for now)
* Simplify slight the migrations
* WIP
* More changes to improve the implementation
* Adding partial implementation of linking channel from board
* Allow linking in both directions
* Removing unused file
* More work on channel binding
* some refactoring
* Improving code quality and interface
* More improvements
* Changing the API to search channels
* Adding a limit of 10 channels in search
* Add confirmation on linking public channels
* Improve a bit the styling of the confirmation modal
* Showing the current linked channel
* Adding link board confirmation to channel interface
* Fixing tests and linter errors
* Fixing backend tests
* Adding permissions tests
* Fixing linter errors
* Fixing small things
* Fixing some typescript errors
* Adding new boardSelectorItem tests
* Improving a bit tests
* Adding jest unit tests
* Remove duplicated implementation (from merge, I guess)
* Adding missed files
* Addressing some of the PR review comments
* Removing unneeded new wrapIntl implementation
* Moving NotSupportedError to the store package to be share between all the store implementations or layers
* Fixing one of the pendings ToDo
* Creating a constructor for the NotSupportedError
* Fixing linter error
* Added template ID to templates
* Removed debug log statements
* Removed debug log statements
* Fixed tests
* Generated template tracking ID on runtime
* MD5 is okay
* Fixed webapp tests
* Fixed webapp tests
* Fixed a big and tracked only in-built templates
* Fixed test
* Ported view limits to main
* lint fix
* Added tests
* Added tests
* Fixed a server test
* fixed webapp test
* fixed webapp test
* fixing some tests
* implement check when duplicating views
* Fixed webapp tests
* Fixed webapp tests
* Fixed webapp tests
* Trying without race test
* Lets race again
* Made error descriptive
* Minor improvements
* Updates snapshots for changed alt text
* Updates snapshots for changed alt text
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
* remove check for blocks on patch, a delete may not have blocks
* remove no longer necessary tests
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Updated go version
* Generated mocks
* lint fix
* lint fix
* lint fix
* backported fileinfo limits
* backported fileinfo limits
* added tests
* synced with main
* Server lint fix
* used a better name
* Added Tests for NewServer() in webserver.go , snapshot matching
* fixed linting issue
* added test for bad base url and made changes as asked by @jespino
* fixed lint error
Co-authored-by: prakharporwal <prakharporwal@github>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Adding the default role concept in the backend
* Adding the interface part
* Fix golang-ci lint errors
* Adding local permissions tests
* Address PR review comments
* Improving the code a bit
* Another small fix
* Renaming DefaultRole to MinimumRole
* Setting the minimum role at minimum to check the permissions per roles in the integration tests
* Adding the new minimum role behavior
* Fixing some tests
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* remove unneeded store interfaces
* - reduce dependencies for notifications service
- notifications service no longer concerned with web socket notifications
gnored, and an empty message aborts the commit.
* use app to add member to board
* remove unneeded API
* remove dependency on app package
* fix webapp jest
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* copy files when duplicating boards
* fix unit tests
* Update server/app/boards.go
Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>
* Update server/app/boards.go
Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>
* fix review commit
Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Moving a lot of local tests permissions into the permissions tests
* Merging all the local permissions tests into the regular permissions tests
* Fixing golangci lint errors
* move calculation columns to view
* update tests
* add conversion for column calculations
* remove column_Calculations from boards and boards_history
* updates from testing
* update for sqlite
* fixes from testing
* fix lint, cleanup
* update templates,remove field from boards
* revert bad changes
* update snapshots
* Update server/services/store/sqlstore/migrations/000017_add_teams_and_boards.up.sql
Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Upgrade npm in build-ubuntu
* npm i -S moment
* Don't upgrade npm
* macos-latest on build-mac
* Update dev-release.yml
* Add CI for macOS
* Lower password hash during unit tests
* Add comment
* Only integration tests on Windows
* Tweak TestCreateRecurringTask timings
* Fix server-test-mini-sqlite
* Implement permissions specs for mentions.
- public boards: admin, editor, commenter can mention team members and auto-add them to board; guests can mention board members
- private boards: admin, editor, commenter, guest can mention board members
- viewers cannot mention
* Upgrade npm in build-ubuntu
* npm i -S moment
* Don't upgrade npm
* macos-latest on build-mac
* Update dev-release.yml
* Expected update time is right after insert returns
* Upgrade npm in build-ubuntu
* npm i -S moment
* Don't upgrade npm
* macos-latest on build-mac
* Update dev-release.yml
* Support Windows in import archive and tests
* Run CI on Windows too
* CI: Windows SQLite only
* Remove npm ci fromn Windows CI
* Don't warn when appears in card followed by text that is not a username
* Selectively initalize default templates for unit tests that need them to reduce test times. Reduce log noise.
* Don't notify non-board members of card changes
- include permissions service in notifications backends
- use permissions service to ensure @mentions are to users on team
- use permissions service to ensure subscribers are members of board
* Simplifying the categories migration
* A bit more of simplification
* Leaving the channel_id there because sqlite doesn't support drop columns
* Update server/services/store/sqlstore/migrations/000018_populate_categories.up.sql
* Update server/services/store/sqlstore/migrations/000019_populate_category_blocks.up.sql
* Update server/services/store/sqlstore/migrations/000018_populate_categories.up.sql
Co-authored-by: Doug Lauder <wiggin77@warpmail.net>