Compare commits

...

46 Commits

Author SHA1 Message Date
Julius Härtl
e8a6ef1116 Update krankerl config
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-04-08 18:13:30 +02:00
Julius Härtl
2e182b6571 Bump version to 0.8.1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-04-08 18:11:43 +02:00
Julius Härtl
23f86231fd Merge pull request #1664 from nextcloud/backport/1653/stable0.8
[stable0.8] Harden permission check on reshares
2020-04-07 17:35:43 +02:00
Julius Härtl
c6b25a6438 Let new shares only use the current users permissions
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-04-07 10:08:39 +00:00
dependabot-preview[bot]
b7ce980f44 Merge pull request #1637 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/webpack-4.42.1 2020-03-29 07:21:51 +00:00
dependabot-preview[bot]
615210dde4 Bump webpack from 4.42.0 to 4.42.1 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.42.0 to 4.42.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.42.0...v4.42.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-29 01:13:50 +00:00
dependabot-preview[bot]
245d5a3eaf Merge pull request #1615 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel-loader-8.1.0 2020-03-22 11:54:35 +00:00
dependabot-preview[bot]
e865776575 Merge pull request #1618 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/url-loader-4.0.0 2020-03-22 11:51:42 +00:00
dependabot-preview[bot]
8f89d34d9f Bump babel-loader from 8.0.6 to 8.1.0 in /js
Bumps [babel-loader](https://github.com/babel/babel-loader) from 8.0.6 to 8.1.0.
- [Release notes](https://github.com/babel/babel-loader/releases)
- [Changelog](https://github.com/babel/babel-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel-loader/compare/v8.0.6...v8.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 11:20:56 +00:00
dependabot-preview[bot]
c12a5ae879 Bump url-loader from 3.0.0 to 4.0.0 in /js
Bumps [url-loader](https://github.com/webpack-contrib/url-loader) from 3.0.0 to 4.0.0.
- [Release notes](https://github.com/webpack-contrib/url-loader/releases)
- [Changelog](https://github.com/webpack-contrib/url-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/url-loader/compare/v3.0.0...v4.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 11:20:13 +00:00
dependabot-preview[bot]
da5ef24085 Merge pull request #1613 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/core-7.9.0 2020-03-22 11:19:16 +00:00
dependabot-preview[bot]
fd88a0b85a Merge pull request #1616 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/preset-env-7.9.0 2020-03-22 11:19:05 +00:00
dependabot-preview[bot]
eca18e43f9 Merge pull request #1619 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/vue-loader-15.9.1 2020-03-22 11:18:34 +00:00
dependabot-preview[bot]
a7c302e7e0 Bump vue-loader from 15.9.0 to 15.9.1 in /js
Bumps [vue-loader](https://github.com/vuejs/vue-loader) from 15.9.0 to 15.9.1.
- [Release notes](https://github.com/vuejs/vue-loader/releases)
- [Changelog](https://github.com/vuejs/vue-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-loader/compare/v15.9.0...v15.9.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 02:22:59 +00:00
dependabot-preview[bot]
609eaf6929 Bump @babel/preset-env from 7.8.7 to 7.9.0 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.7 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.7...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 02:21:43 +00:00
dependabot-preview[bot]
5130cc931a Bump @babel/core from 7.8.7 to 7.9.0 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.7 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.7...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 02:20:37 +00:00
dependabot-preview[bot]
3de68ebfcd Merge pull request #1605 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/vuex-3.1.3 2020-03-16 07:37:43 +00:00
dependabot-preview[bot]
372935f190 Bump vuex from 3.1.2 to 3.1.3 in /js
Bumps [vuex](https://github.com/vuejs/vuex) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/vuejs/vuex/releases)
- [Commits](https://github.com/vuejs/vuex/compare/v3.1.2...v3.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-15 02:14:56 +00:00
Julius Härtl
fec0658102 Merge pull request #1602 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/acorn-6.4.1
[Security] Bump acorn from 6.4.0 to 6.4.1 in /js
2020-03-14 09:50:53 +01:00
dependabot-preview[bot]
1411c327cb [Security] Bump acorn from 6.4.0 to 6.4.1 in /js
Bumps [acorn](https://github.com/acornjs/acorn) from 6.4.0 to 6.4.1. **This update includes a security fix.**
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.4.0...6.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-13 21:58:01 +00:00
dependabot-preview[bot]
c7c9edf2e3 Merge pull request #1584 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/core-7.8.7 2020-03-07 19:37:44 +00:00
dependabot-preview[bot]
97428b51ff Bump @babel/core from 7.8.6 to 7.8.7 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.6 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.6...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-07 19:31:01 +00:00
dependabot-preview[bot]
52bcd0ec03 Merge pull request #1582 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/polyfill-7.8.7 2020-03-07 19:29:05 +00:00
dependabot-preview[bot]
442d9bdedd Bump @babel/polyfill from 7.8.3 to 7.8.7 in /js
Bumps [@babel/polyfill](https://github.com/babel/babel) from 7.8.3 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-07 19:18:00 +00:00
dependabot-preview[bot]
d761649d44 Merge pull request #1581 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/preset-env-7.8.7 2020-03-07 19:16:12 +00:00
dependabot-preview[bot]
5da9cf5c3f Merge pull request #1580 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/webpack-4.42.0 2020-03-07 19:13:47 +00:00
dependabot-preview[bot]
d66a913089 Bump @babel/preset-env from 7.8.6 to 7.8.7 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.6 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.6...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-07 17:31:52 +00:00
dependabot-preview[bot]
8999640459 Bump webpack from 4.41.6 to 4.42.0 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.6 to 4.42.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.6...v4.42.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-07 17:31:14 +00:00
dependabot-preview[bot]
e8b5577def Merge pull request #1565 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/core-7.8.6 2020-03-02 06:51:04 +00:00
dependabot-preview[bot]
3c52a85169 Bump @babel/core from 7.8.4 to 7.8.6 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.4 to 7.8.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.4...v7.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 06:19:55 +00:00
dependabot-preview[bot]
0f7a473c65 Merge pull request #1564 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/preset-env-7.8.6 2020-03-02 06:17:51 +00:00
dependabot-preview[bot]
8dae2b28a6 Bump @babel/preset-env from 7.8.4 to 7.8.6 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.4 to 7.8.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.4...v7.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-01 02:13:22 +00:00
Julius Härtl
ce1e93ab26 Merge pull request #1540 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/webpack-cli-3.3.11
Bump webpack-cli from 3.3.10 to 3.3.11 in /js
2020-02-16 14:48:49 +01:00
dependabot-preview[bot]
28352740d9 Merge pull request #1542 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/vue-loader-15.9.0 2020-02-16 13:41:58 +00:00
dependabot-preview[bot]
8de78a29ff Bump webpack-cli from 3.3.10 to 3.3.11 in /js
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 3.3.10 to 3.3.11.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/next/CHANGELOG_v3.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/v3.3.10...v3.3.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-16 13:39:18 +00:00
dependabot-preview[bot]
8d40d95f0b Bump vue-loader from 15.8.3 to 15.9.0 in /js
Bumps [vue-loader](https://github.com/vuejs/vue-loader) from 15.8.3 to 15.9.0.
- [Release notes](https://github.com/vuejs/vue-loader/releases)
- [Changelog](https://github.com/vuejs/vue-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-loader/compare/v15.8.3...v15.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-16 13:39:18 +00:00
Julius Härtl
de4ea71842 Merge pull request #1539 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/webpack-4.41.6
Bump webpack from 4.41.5 to 4.41.6 in /js
2020-02-16 14:37:29 +01:00
dependabot-preview[bot]
e9f7aef7a3 Bump webpack from 4.41.5 to 4.41.6 in /js
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.5 to 4.41.6.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.5...v4.41.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-16 02:14:01 +00:00
Julius Härtl
8accc8a020 Check for board membership on comments entity event
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-02-11 09:33:32 +01:00
dependabot-preview[bot]
3feb261e1b Bump @uirouter/angularjs from 1.0.24 to 1.0.25 in /js
Bumps [@uirouter/angularjs](https://github.com/angular-ui/ui-router) from 1.0.24 to 1.0.25.
- [Release notes](https://github.com/angular-ui/ui-router/releases)
- [Changelog](https://github.com/angular-ui/ui-router/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular-ui/ui-router/compare/1.0.24...1.0.25)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 09:57:35 +01:00
Julius Härtl
9275d8277a Bump @babel/core from 7.8.3 to 7.8.4 in /js (#1517)
Bump @babel/core from 7.8.3 to 7.8.4 in /js
2020-02-02 14:21:06 +01:00
Julius Härtl
2980dad4f5 Bump @babel/preset-env from 7.8.3 to 7.8.4 in /js (#1518)
Bump @babel/preset-env from 7.8.3 to 7.8.4 in /js
2020-02-02 14:20:51 +01:00
dependabot-preview[bot]
a88d19b3ce Bump @babel/preset-env from 7.8.3 to 7.8.4 in /js
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-02 02:14:11 +00:00
dependabot-preview[bot]
91b968cc97 Bump @babel/core from 7.8.3 to 7.8.4 in /js
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-02 02:13:39 +00:00
Julius Härtl
1e270389f6 Merge pull request #1491 from nextcloud/dependabot/npm_and_yarn/js/stable0.8/babel/plugin-syntax-dynamic-import-7.8.3
Bump @babel/plugin-syntax-dynamic-import from 7.7.4 to 7.8.3 in /js
2020-01-26 10:13:43 +01:00
dependabot-preview[bot]
a2649885a5 Bump @babel/plugin-syntax-dynamic-import from 7.7.4 to 7.8.3 in /js
Bumps [@babel/plugin-syntax-dynamic-import](https://github.com/babel/babel) from 7.7.4 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-26 08:39:41 +00:00
9 changed files with 1043 additions and 827 deletions

31
.nextcloudignore Normal file
View File

@@ -0,0 +1,31 @@
build/
.git
js/node_modules
js/tests
js/legacy
js/controller
js/directive
js/filters
js/service
js/bower.json
js/.bowerrc
js/.jshintrc
js/Gruntfile.js
js/package.json
js/package-lock.json
docs/
tests
.codecov.yml
composer.json
composer.lock
_config.yml
.drone.yml
.travis.yml
.eslintignore
.eslintrc.yml
.gitignore
issue_template.md
krankerl.toml
Makefile
mkdocs.yml
run-eslint.sh

View File

@@ -1,6 +1,15 @@
# Changelog # Changelog
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## 0.8.1 - 2020-04-08
## Added
- Nextcloud 19 compatibility
## Fixed
- Let new shares only use the current users permissions
- Check for board membership on comments entity event
## 0.8.0 - 2020-01-16 ## 0.8.0 - 2020-01-16
## Added ## Added

View File

@@ -17,7 +17,7 @@
- 🚀 Get your project organized - 🚀 Get your project organized
</description> </description>
<version>0.8.0</version> <version>0.8.1</version>
<licence>agpl</licence> <licence>agpl</licence>
<author>Julius Härtl</author> <author>Julius Härtl</author>
<namespace>Deck</namespace> <namespace>Deck</namespace>

1659
js/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@
"test": "tests" "test": "tests"
}, },
"dependencies": { "dependencies": {
"@uirouter/angularjs": "^1.0.24", "@uirouter/angularjs": "^1.0.25",
"angular": "^1.7.9", "angular": "^1.7.9",
"angular-animate": "^1.7.9", "angular-animate": "^1.7.9",
"angular-file-upload": "^2.5.0", "angular-file-upload": "^2.5.0",
@@ -23,24 +23,24 @@
"ng-sortable": "^1.3.8", "ng-sortable": "^1.3.8",
"ui-select": "^0.19.8", "ui-select": "^0.19.8",
"vue": "^2.6.11", "vue": "^2.6.11",
"vuex": "^3.1.2" "vuex": "^3.1.3"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.8.3", "@babel/core": "^7.9.0",
"@babel/plugin-syntax-dynamic-import": "^7.7.4", "@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/polyfill": "^7.8.3", "@babel/polyfill": "^7.8.7",
"@babel/preset-env": "^7.8.3", "@babel/preset-env": "^7.9.0",
"babel-loader": "^8.0.6", "babel-loader": "^8.1.0",
"css-loader": "^3.4.2", "css-loader": "^3.4.2",
"karma": "^4.4.1", "karma": "^4.4.1",
"mini-css-extract-plugin": "^0.9.0", "mini-css-extract-plugin": "^0.9.0",
"style-loader": "^1.1.3", "style-loader": "^1.1.3",
"url-loader": "^3.0.0", "url-loader": "^4.0.0",
"vue-loader": "^15.8.3", "vue-loader": "^15.9.1",
"vue-style-loader": "^4.1.2", "vue-style-loader": "^4.1.2",
"vue-template-compiler": "^2.6.11", "vue-template-compiler": "^2.6.11",
"webpack": "^4.41.5", "webpack": "^4.42.1",
"webpack-cli": "^3.3.10", "webpack-cli": "^3.3.11",
"webpack-merge": "^4.2.2" "webpack-merge": "^4.2.2"
}, },
"scripts": { "scripts": {

View File

@@ -1,38 +1,4 @@
[package] [package]
exclude = [
"build/",
".git",
"js/node_modules",
"js/tests",
"js/legacy",
"js/controller",
"js/directive",
"js/filters",
"js/service",
"js/bower.json",
"js/.bowerrc",
"js/.jshintrc",
"js/Gruntfile.js",
"js/package.json",
"js/package-lock.json",
"docs/",
"tests",
".codecov.yml",
"composer.json",
"composer.lock",
"_config.yml",
".drone.yml",
".travis.yml",
".eslintignore",
".eslintrc.yml",
".gitignore",
"issue_template.md",
"krankerl.toml",
"Makefile",
"mkdocs.yml",
"run-eslint.sh"
]
before_cmds = [ before_cmds = [
'make clean-build', 'make clean-build',
'make build' 'make build'

View File

@@ -33,6 +33,7 @@ use OCA\Deck\Db\CardMapper;
use OCA\Deck\Middleware\ExceptionMiddleware; use OCA\Deck\Middleware\ExceptionMiddleware;
use OCA\Deck\Notification\Notifier; use OCA\Deck\Notification\Notifier;
use OCA\Deck\Service\FullTextSearchService; use OCA\Deck\Service\FullTextSearchService;
use OCA\Deck\Service\PermissionService;
use OCP\AppFramework\App; use OCP\AppFramework\App;
use OCP\Collaboration\Resources\IManager; use OCP\Collaboration\Resources\IManager;
use OCP\Comments\CommentsEntityEvent; use OCP\Comments\CommentsEntityEvent;
@@ -151,13 +152,14 @@ class Application extends App {
$this->getContainer()->getServer()->getEventDispatcher()->addListener(CommentsEntityEvent::EVENT_ENTITY, function(CommentsEntityEvent $event) { $this->getContainer()->getServer()->getEventDispatcher()->addListener(CommentsEntityEvent::EVENT_ENTITY, function(CommentsEntityEvent $event) {
$event->addEntityCollection('deckCard', function($name) { $event->addEntityCollection('deckCard', function($name) {
/** @var CardMapper */ /** @var CardMapper */
$service = $this->getContainer()->query(CardMapper::class); $cardMapper = $this->getContainer()->query(CardMapper::class);
$permissionService = $this->getContainer()->query(PermissionService::class);
try { try {
$service->find((int) $name); return $permissionService->checkPermission($cardMapper, (int) $name, Acl::PERMISSION_READ);
} catch (\InvalidArgumentException $e) { } catch (\Exception $e) {
return false; return false;
} }
return true;
}); });
}); });
$this->registerCommentsEventHandler(); $this->registerCommentsEventHandler();

View File

@@ -454,6 +454,17 @@ class BoardService {
return $board; return $board;
} }
private function applyPermissions($boardId, $edit, $share, $manage) {
try {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_MANAGE);
} catch (NoPermissionException $e) {
$acls = $this->aclMapper->findAll($boardId);
$edit = $this->permissionService->userCan($acls, Acl::PERMISSION_EDIT, $this->userId) && $edit;
$share = $this->permissionService->userCan($acls, Acl::PERMISSION_SHARE, $this->userId) && $share;
$manage = $this->permissionService->userCan($acls, Acl::PERMISSION_MANAGE, $this->userId) && $manage;
}
return [$edit, $share, $manage];
}
/** /**
* @param $boardId * @param $boardId
@@ -493,6 +504,8 @@ class BoardService {
} }
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_SHARE); $this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_SHARE);
[$edit, $share, $manage] = $this->applyPermissions($boardId, $edit, $share, $manage);
$acl = new Acl(); $acl = new Acl();
$acl->setBoardId($boardId); $acl->setBoardId($boardId);
$acl->setType($type); $acl->setType($type);
@@ -555,8 +568,10 @@ class BoardService {
} }
$this->permissionService->checkPermission($this->aclMapper, $id, Acl::PERMISSION_SHARE); $this->permissionService->checkPermission($this->aclMapper, $id, Acl::PERMISSION_SHARE);
/** @var Acl $acl */ /** @var Acl $acl */
$acl = $this->aclMapper->find($id); $acl = $this->aclMapper->find($id);
[$edit, $share, $manage] = $this->applyPermissions($acl->getBoardId(), $edit, $share, $manage);
$acl->setPermissionEdit($edit); $acl->setPermissionEdit($edit);
$acl->setPermissionShare($share); $acl->setPermissionShare($share);
$acl->setPermissionManage($manage); $acl->setPermissionManage($manage);

View File

@@ -34,6 +34,7 @@ use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\Db\LabelMapper; use OCA\Deck\Db\LabelMapper;
use OCA\Deck\Db\StackMapper; use OCA\Deck\Db\StackMapper;
use OCA\Deck\NoPermissionException;
use OCA\Deck\Notification\NotificationHelper; use OCA\Deck\Notification\NotificationHelper;
use OCP\IUser; use OCP\IUser;
use OCP\IUserManager; use OCP\IUserManager;
@@ -260,6 +261,93 @@ class BoardServiceTest extends TestCase {
)); ));
} }
public function dataAddAclExtendPermission() {
return [
[[false, false, false], [false, false, false], [false, false, false]],
[[false, false, false], [true, true, true], [false, false, false]],
// user has share permissions -> can only reshare with those
[[false, true, false], [false, false, false], [false, false, false]],
[[false, true, false], [false, true, false], [false, true, false]],
[[false, true, false], [true, true, true], [false, true, false]],
// user has write permissions -> can only reshare with those
[[true, true, false], [false, false, false], [false, false, false]],
[[true, true, false], [false, true, false], [false, true, false]],
[[true, true, false], [true, true, true], [true, true, false]],
// user has manage permissions -> can upgrade acl permissions
[[false, false, true], [true, true, true], [true, true, true]],
[[true, true, true], [false, false, true], [false, false, true]],
];
}
/**
* @dataProvider dataAddAclExtendPermission
* @param $currentUserAcl
* @param $providedAcl
* @param $resultingAcl
* @throws NoPermissionException
* @throws \OCA\Deck\BadRequestException
*/
public function testAddAclExtendPermission($currentUserAcl, $providedAcl, $resultingAcl) {
$existingAcl = new Acl();
$existingAcl->setBoardId(123);
$existingAcl->setType('user');
$existingAcl->setParticipant('admin');
$existingAcl->setPermissionEdit($currentUserAcl[0]);
$existingAcl->setPermissionShare($currentUserAcl[1]);
$existingAcl->setPermissionManage($currentUserAcl[2]);
$this->permissionService->expects($this->at(0))
->method('checkPermission')
->with($this->boardMapper, 123, Acl::PERMISSION_SHARE, null);
if ($currentUserAcl[2]) {
$this->permissionService->expects($this->at(1))
->method('checkPermission')
->with($this->boardMapper, 123, Acl::PERMISSION_MANAGE, null);
} else {
$this->aclMapper->expects($this->once())
->method('findAll')
->willReturn([$existingAcl]);
$this->permissionService->expects($this->at(1))
->method('checkPermission')
->with($this->boardMapper, 123, Acl::PERMISSION_MANAGE, null)
->willThrowException(new NoPermissionException('No permission'));
$this->permissionService->expects($this->at(2))
->method('userCan')
->willReturn($currentUserAcl[0]);
$this->permissionService->expects($this->at(3))
->method('userCan')
->willReturn($currentUserAcl[1]);
$this->permissionService->expects($this->at(4))
->method('userCan')
->willReturn($currentUserAcl[2]);
}
$user = $this->createMock(IUser::class);
$user->method('getUID')->willReturn('admin');
$acl = new Acl();
$acl->setBoardId(123);
$acl->setType('user');
$acl->setParticipant('admin');
$acl->setPermissionEdit($resultingAcl[0]);
$acl->setPermissionShare($resultingAcl[1]);
$acl->setPermissionManage($resultingAcl[2]);
$acl->resolveRelation('participant', function($participant) use (&$user) {
return null;
});
$this->notificationHelper->expects($this->once())
->method('sendBoardShared');
$expected = clone $acl;
$this->aclMapper->expects($this->once())
->method('insert')
->with($acl)
->willReturn($acl);
$this->assertEquals($expected, $this->service->addAcl(
123, 'user', 'admin', $providedAcl[0], $providedAcl[1], $providedAcl[2]
));
}
public function testUpdateAcl() { public function testUpdateAcl() {
$acl = new Acl(); $acl = new Acl();
$acl->setBoardId(123); $acl->setBoardId(123);