diff --git a/src/api/controllers/Users.php b/src/api/controllers/Users.php index 6b943ae..dcdfa85 100644 --- a/src/api/controllers/Users.php +++ b/src/api/controllers/Users.php @@ -179,12 +179,14 @@ class Users extends BaseController { if ($user->default_board_id !== $update->default_board_id) { $newId = $update->default_board_id; - if ($newId > 0 && !Auth::HasBoardAccess($this->container, $request, - $newId, $user->id)) { - $board = new Board($this->container, $newId); - $board->users[] = $user; - $board->save(); + $this->addUserToBoard($newId, $user); + } + + if (isset($data->boardAccess)) { + foreach($data->boardAccess as $boardId) { + $this->addUserToBoard($boardId, $user); } + unset($data->boardAccess); } $update->save(); @@ -282,6 +284,15 @@ class Users extends BaseController { return $this->jsonResponse($response); } + private function addUserToBoard($boardId, $user) { + if ($boardId > 0 && !Auth::HasBoardAccess($this->container, $request, + $boardId, $user->id)) { + $board = new Board($this->container, $boardId); + $board->users[] = $user; + $board->save(); + } + } + private function getAllUsersCleaned($request) { $userBeans = R::findAll('user'); $userId = Auth::GetUserId($request); diff --git a/src/api/models/User.php b/src/api/models/User.php index 4ecad89..96691ab 100644 --- a/src/api/models/User.php +++ b/src/api/models/User.php @@ -18,6 +18,7 @@ class User extends BaseModel { public $user_option_id = 0; public $last_login = 0; public $active_token = ''; + public $board_access = []; public function __construct($container, $id = 0) { parent::__construct('user', $id, $container); @@ -79,6 +80,16 @@ class User extends BaseModel { $this->is_valid = true; $this->loadPropertiesFrom($bean); + + $this->board_access = []; + $boards = RedBeanPHP\R::getAll('select bu.board_id, bu.user_id from ' . + 'board_user bu join board b on b.id = bu.board_id'); + + foreach($boards as $item) { + if ($this->id === (int)$item['user_id']) { + $this->board_access[] = (int)$item['board_id']; + } + } } public function loadFromJson($json) { diff --git a/src/app/shared/models/user.model.ts b/src/app/shared/models/user.model.ts index 4ae12a4..e65e34f 100644 --- a/src/app/shared/models/user.model.ts +++ b/src/app/shared/models/user.model.ts @@ -5,7 +5,8 @@ export class User { public last_login: Date = null, public security_level: number = 3, public user_option_id: number = 0, - public username: string = '') { + public username: string = '', + public board_acccess: Array = []) { } } diff --git a/test/api/Mocks.php b/test/api/Mocks.php index 93cc240..7c74938 100644 --- a/test/api/Mocks.php +++ b/test/api/Mocks.php @@ -249,19 +249,19 @@ class LoggerMock { public function addError() { // Uncomment to log errors to file // The tests cover errors, so there will be plenty to sift through - $msg = func_get_arg(0); - $err = 'API ERROR: ' . $msg . PHP_EOL; + // $msg = func_get_arg(0); + // $err = 'API ERROR: ' . $msg . PHP_EOL; - $objs = func_get_args(); - array_splice($objs, 0, 1); + // $objs = func_get_args(); + // array_splice($objs, 0, 1); - ob_start(); - foreach($objs as $obj) { - var_dump($obj); - } - $strings = ob_get_clean(); + // ob_start(); + // foreach($objs as $obj) { + // var_dump($obj); + // } + // $strings = ob_get_clean(); - file_put_contents('tests.log', [$err, $strings], FILE_APPEND); + // file_put_contents('tests.log', [$err, $strings], FILE_APPEND); } }