Fix types in the Group Manager

Psalm found an issue. However the issue found was because of lying
docblocks. Fixed those and did some typing to make it all better.

For #25839

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
pull/25889/head
Roeland Jago Douma 5 years ago
parent 252d2d3958
commit 68ec18323d
  1. 2
      apps/files_external/lib/Service/UserGlobalStoragesService.php
  2. 4
      lib/private/AppFramework/DependencyInjection/DIContainer.php
  3. 10
      lib/private/Group/Manager.php
  4. 4
      lib/private/Template/JSConfigHelper.php
  5. 4
      lib/public/IGroupManager.php
  6. 3
      tests/lib/Group/ManagerTest.php

@ -76,7 +76,7 @@ class UserGlobalStoragesService extends GlobalStoragesService {
$userMounts = $this->dbConfig->getAdminMountsFor(DBConfigService::APPLICABLE_TYPE_USER, $this->getUser()->getUID());
$globalMounts = $this->dbConfig->getAdminMountsFor(DBConfigService::APPLICABLE_TYPE_GLOBAL, null);
$groups = $this->groupManager->getUserGroupIds($this->getUser());
if (is_array($groups) && count($groups) !== 0) {
if (count($groups) !== 0) {
$groupMounts = $this->dbConfig->getAdminMountsForMultiple(DBConfigService::APPLICABLE_TYPE_GROUP, $groups);
} else {
$groupMounts = [];

@ -234,6 +234,8 @@ class DIContainer extends SimpleContainer implements IAppContainer {
)
);
$securityMiddleware = new SecurityMiddleware(
$c->get(IRequest::class),
$c->get(IControllerMethodReflector::class),
@ -242,7 +244,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
$server->query(ILogger::class),
$c->get('AppName'),
$server->getUserSession()->isLoggedIn(),
$server->getGroupManager()->isAdmin($this->getUserId()),
$this->getUserId() !== null && $server->getGroupManager()->isAdmin($this->getUserId()),
$server->getUserSession()->getUser() !== null && $server->query(ISubAdmin::class)->isSubAdmin($server->getUserSession()->getUser()),
$server->getAppManager(),
$server->getL10N('lib')

@ -276,7 +276,7 @@ class Manager extends PublicEmitter implements IGroupManager {
* @param string $uid the user id
* @return \OC\Group\Group[]
*/
public function getUserIdGroups($uid) {
public function getUserIdGroups(string $uid): array {
$groups = [];
foreach ($this->getUserIdGroupIds($uid) as $groupId) {
@ -321,17 +321,17 @@ class Manager extends PublicEmitter implements IGroupManager {
* get a list of group ids for a user
*
* @param IUser $user
* @return array with group ids
* @return string[] with group ids
*/
public function getUserGroupIds(IUser $user) {
public function getUserGroupIds(IUser $user): array {
return $this->getUserIdGroupIds($user->getUID());
}
/**
* @param string $uid the user id
* @return GroupInterface[]
* @return string[]
*/
private function getUserIdGroupIds($uid) {
private function getUserIdGroupIds(string $uid): array {
if (!isset($this->cachedUserGroups[$uid])) {
$groups = [];
foreach ($this->backends as $backend) {

@ -167,7 +167,7 @@ class JSConfigHelper {
$countOfDataLocation = 0;
$dataLocation = str_replace(\OC::$SERVERROOT . '/', '', $this->config->getSystemValue('datadirectory', ''), $countOfDataLocation);
if ($countOfDataLocation !== 1 || !$this->groupManager->isAdmin($uid)) {
if ($countOfDataLocation !== 1 || $uid === null || !$this->groupManager->isAdmin($uid)) {
$dataLocation = false;
}
@ -198,7 +198,7 @@ class JSConfigHelper {
$array = [
"_oc_debug" => $this->config->getSystemValue('debug', false) ? 'true' : 'false',
"_oc_isadmin" => $this->groupManager->isAdmin($uid) ? 'true' : 'false',
"_oc_isadmin" => $uid !== null && $this->groupManager->isAdmin($uid) ? 'true' : 'false',
"backendAllowsPasswordConfirmation" => $userBackendAllowsPasswordConfirmation ? 'true' : 'false',
"oc_dataURL" => is_string($dataLocation) ? "\"" . $dataLocation . "\"" : 'false',
"_oc_webroot" => "\"" . \OC::$WEBROOT . "\"",

@ -112,10 +112,10 @@ interface IGroupManager {
/**
* @param \OCP\IUser $user
* @return array with group names
* @return string[] with group names
* @since 8.0.0
*/
public function getUserGroupIds(IUser $user);
public function getUserGroupIds(IUser $user): array;
/**
* get a list of all display names in a group

@ -395,6 +395,7 @@ class ManagerTest extends TestCase {
*/
$backend = $this->getTestBackend();
$backend->method('getUserGroups')
->with('myUID')
->willReturn(['123', 'abc']);
$manager = new \OC\Group\Manager($this->userManager, $this->dispatcher, $this->logger);
@ -402,6 +403,8 @@ class ManagerTest extends TestCase {
/** @var \OC\User\User|\PHPUnit\Framework\MockObject\MockObject $user */
$user = $this->createMock(IUser::class);
$user->method('getUID')
->willReturn('myUID');
$groups = $manager->getUserGroupIds($user);
$this->assertCount(2, $groups);

Loading…
Cancel
Save