fix: Deprecate OC_User methods related to user backends

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
pull/52086/head
Côme Chilliet 1 year ago
parent 0a474e5ccd
commit ddd7d4ed13
No known key found for this signature in database
GPG Key ID: A3E2F658B28C760A
  1. 25
      lib/private/User/Manager.php
  2. 30
      lib/private/legacy/OC_User.php
  3. 13
      lib/public/IUserManager.php

@ -54,7 +54,7 @@ use Psr\Log\LoggerInterface;
*/
class Manager extends PublicEmitter implements IUserManager {
/**
* @var \OCP\UserInterface[] $backends
* @var UserInterface[] $backends
*/
private array $backends = [];
@ -82,37 +82,24 @@ class Manager extends PublicEmitter implements IUserManager {
/**
* Get the active backends
* @return \OCP\UserInterface[]
* @return UserInterface[]
*/
public function getBackends() {
public function getBackends(): array {
return $this->backends;
}
/**
* register a user backend
*
* @param \OCP\UserInterface $backend
*/
public function registerBackend($backend) {
public function registerBackend(UserInterface $backend): void {
$this->backends[] = $backend;
}
/**
* remove a user backend
*
* @param \OCP\UserInterface $backend
*/
public function removeBackend($backend) {
public function removeBackend(UserInterface $backend): void {
$this->cachedUsers = [];
if (($i = array_search($backend, $this->backends)) !== false) {
unset($this->backends[$i]);
}
}
/**
* remove all user backends
*/
public function clearBackends() {
public function clearBackends(): void {
$this->cachedUsers = [];
$this->backends = [];
}

@ -40,8 +40,6 @@ use Psr\Log\LoggerInterface;
* logout()
*/
class OC_User {
private static $_usedBackends = [];
private static $_setupedBackends = [];
// bool, stores if a user want to access a resource anonymously, e.g if they open a public link
@ -52,14 +50,13 @@ class OC_User {
*
* @param string|\OCP\UserInterface $backend default: database The backend to use for user management
* @return bool
* @deprecated 32.0.0 Use IUserManager::registerBackend instead
*
* Set the User Authentication Module
* @suppress PhanDeprecatedFunction
*/
public static function useBackend($backend = 'database') {
if ($backend instanceof \OCP\UserInterface) {
self::$_usedBackends[get_class($backend)] = $backend;
\OC::$server->getUserManager()->registerBackend($backend);
Server::get(IUserManager::class)->registerBackend($backend);
} else {
// You'll never know what happens
if ($backend === null or !is_string($backend)) {
@ -72,18 +69,15 @@ class OC_User {
case 'mysql':
case 'sqlite':
Server::get(LoggerInterface::class)->debug('Adding user backend ' . $backend . '.', ['app' => 'core']);
self::$_usedBackends[$backend] = new \OC\User\Database();
\OC::$server->getUserManager()->registerBackend(self::$_usedBackends[$backend]);
Server::get(IUserManager::class)->registerBackend(new \OC\User\Database());
break;
case 'dummy':
self::$_usedBackends[$backend] = new \Test\Util\User\Dummy();
\OC::$server->getUserManager()->registerBackend(self::$_usedBackends[$backend]);
Server::get(IUserManager::class)->registerBackend(new \Test\Util\User\Dummy());
break;
default:
Server::get(LoggerInterface::class)->debug('Adding default user backend ' . $backend . '.', ['app' => 'core']);
$className = 'OC_USER_' . strtoupper($backend);
self::$_usedBackends[$backend] = new $className();
\OC::$server->getUserManager()->registerBackend(self::$_usedBackends[$backend]);
Server::get(IUserManager::class)->registerBackend(new $className());
break;
}
}
@ -92,10 +86,10 @@ class OC_User {
/**
* remove all used backends
* @deprecated 32.0.0 Use IUserManager::clearBackends instead
*/
public static function clearBackends() {
self::$_usedBackends = [];
\OC::$server->getUserManager()->clearBackends();
Server::get(IUserManager::class)->clearBackends();
}
/**
@ -248,7 +242,7 @@ class OC_User {
*/
public static function setUserId($uid) {
$userSession = \OC::$server->getUserSession();
$userManager = \OC::$server->getUserManager();
$userManager = Server::get(IUserManager::class);
if ($user = $userManager->get($uid)) {
$userSession->setUser($user);
} else {
@ -348,7 +342,7 @@ class OC_User {
* Change the password of a user
*/
public static function setPassword($uid, $password, $recoveryPassword = null) {
$user = \OC::$server->getUserManager()->get($uid);
$user = Server::get(IUserManager::class)->get($uid);
if ($user) {
return $user->setPassword($password, $recoveryPassword);
} else {
@ -364,7 +358,7 @@ class OC_User {
* @deprecated 12.0.0 Use \OC::$server->getUserManager->getHome()
*/
public static function getHome($uid) {
$user = \OC::$server->getUserManager()->get($uid);
$user = Server::get(IUserManager::class)->get($uid);
if ($user) {
return $user->getHome();
} else {
@ -385,7 +379,7 @@ class OC_User {
*/
public static function getDisplayNames($search = '', $limit = null, $offset = null) {
$displayNames = [];
$users = \OC::$server->getUserManager()->searchDisplayName($search, $limit, $offset);
$users = Server::get(IUserManager::class)->searchDisplayName($search, $limit, $offset);
foreach ($users as $user) {
$displayNames[$user->getUID()] = $user->getDisplayName();
}
@ -398,7 +392,7 @@ class OC_User {
* @return OCP\Authentication\IApacheBackend|null if no backend active, otherwise OCP\Authentication\IApacheBackend
*/
private static function findFirstActiveUsedBackend() {
foreach (self::$_usedBackends as $backend) {
foreach (Server::get(IUserManager::class)->getBackends() as $backend) {
if ($backend instanceof OCP\Authentication\IApacheBackend) {
if ($backend->isSessionActive()) {
return $backend;

@ -32,14 +32,14 @@ interface IUserManager {
/**
* register a user backend
*
* @param \OCP\UserInterface $backend
* @since 8.0.0
* @return void
*/
public function registerBackend($backend);
public function registerBackend(UserInterface $backend);
/**
* Get the active backends
* @return \OCP\UserInterface[]
* @return UserInterface[]
* @since 8.0.0
*/
public function getBackends();
@ -47,16 +47,17 @@ interface IUserManager {
/**
* remove a user backend
*
* @param \OCP\UserInterface $backend
* @since 8.0.0
* @return void
*/
public function removeBackend($backend);
public function removeBackend(UserInterface $backend);
/**
* remove all user backends
* @since 8.0.0
* @return void
*/
public function clearBackends() ;
public function clearBackends();
/**
* get a user by user id

Loading…
Cancel
Save