Merge pull request #40036 from nextcloud/fix/stable25/log-condition-user

[stable25] fix(logging): user log condition feature
This commit is contained in:
Arthur Schiwon 2023-09-07 12:21:18 +02:00 committed by GitHub
commit 08f964e52c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -38,15 +38,16 @@ namespace OC;
use Exception;
use Nextcloud\LogNormalizer\Normalizer;
use OC\AppFramework\Bootstrap\Coordinator;
use OCP\Log\IDataLogger;
use Throwable;
use function array_merge;
use OC\Log\ExceptionSerializer;
use OCP\ILogger;
use OCP\IUserSession;
use OCP\Log\IDataLogger;
use OCP\Log\IFileBased;
use OCP\Log\IWriter;
use OCP\Support\CrashReport\IRegistry;
use OC\AppFramework\Bootstrap\Coordinator;
use OC\Log\ExceptionSerializer;
use Throwable;
use function array_merge;
use function strtr;
/**
@ -59,7 +60,6 @@ use function strtr;
* MonoLog is an example implementing this interface.
*/
class Log implements ILogger, IDataLogger {
/** @var IWriter */
private $logger;
@ -247,7 +247,6 @@ class Log implements ILogger, IDataLogger {
// default to false to just process this once per request
$this->logConditionSatisfied = false;
if (!empty($logCondition)) {
// check for secret token in the request
if (isset($logCondition['shared_secret'])) {
$request = \OC::$server->getRequest();
@ -268,10 +267,13 @@ class Log implements ILogger, IDataLogger {
// check for user
if (isset($logCondition['users'])) {
$user = \OC::$server->getUserSession()->getUser();
$user = \OCP\Server::get(IUserSession::class)->getUser();
// if the user matches set the log condition to satisfied
if ($user !== null && in_array($user->getUID(), $logCondition['users'], true)) {
if ($user === null) {
// User is not known for this request yet
$this->logConditionSatisfied = null;
} elseif (in_array($user->getUID(), $logCondition['users'], true)) {
// if the user matches set the log condition to satisfied
$this->logConditionSatisfied = true;
}
}