Allow default app to be overwritten by user config

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl 2020-08-04 15:07:32 +02:00
parent 7e2ded5a79
commit db86bea18c
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
1 changed files with 14 additions and 2 deletions

View File

@ -68,6 +68,7 @@ use OCP\IConfig;
use OCP\IGroupManager;
use OCP\ILogger;
use OCP\IUser;
use OCP\IUserSession;
class OC_Util {
public static $scripts = [];
@ -1088,6 +1089,8 @@ class OC_Util {
* @suppress PhanDeprecatedFunction
*/
public static function getDefaultPageUrl() {
/** @var IConfig $config */
$config = \OC::$server->get(IConfig::class);
$urlGenerator = \OC::$server->getURLGenerator();
// Deny the redirect if the URL contains a @
// This prevents unvalidated redirects like ?redirect_url=:user@domain.com
@ -1098,9 +1101,18 @@ class OC_Util {
if ($defaultPage) {
$location = $urlGenerator->getAbsoluteURL($defaultPage);
} else {
$appId = 'files';
$config = \OC::$server->getConfig();
$defaultApps = explode(',', $config->getSystemValue('defaultapp', 'dashboard'));
$defaultApps = explode(',', $config->getSystemValue('defaultapp', 'dashboard,files'));
/** @var IUserSession $userSession */
$userSession = \OC::$server->get(IUserSession::class);
$user = $userSession->getUser();
if ($user) {
$userDefaultApps = explode(',', $config->getUserValue($user->getUID(), 'core', 'defaultapp'));
$defaultApps = array_filter(array_merge($userDefaultApps, $defaultApps));
}
// find the first app that is enabled for the current user
foreach ($defaultApps as $defaultApp) {
$defaultApp = OC_App::cleanAppId(strip_tags($defaultApp));