2323use Psr \Log \LoggerInterface ;
2424
2525class RestrictionManager {
26- /** @var AppWhitelist */
27- private $ whitelist ;
28-
29- /** @var IRequest */
30- private $ request ;
31-
32- /** @var IUserSession */
33- private $ userSession ;
34-
35- /** @var IServerContainer */
36- private $ server ;
37-
38- /** @var Hooks */
39- private $ hooks ;
40-
41- /** @var GuestManager */
42- private $ guestManager ;
43-
44- /** @var IMountProviderCollection */
45- private $ mountProviderCollection ;
46-
47- /** @var Config */
48- private $ config ;
49-
50- /** @var UserBackend */
51- private $ userBackend ;
5226
5327 public function __construct (
54- AppWhitelist $ whitelist ,
55- IRequest $ request ,
56- IUserSession $ userSession ,
57- IServerContainer $ server ,
58- Hooks $ hooks ,
59- GuestManager $ guestManager ,
60- IMountProviderCollection $ mountProviderCollection ,
61- Config $ config ,
62- UserBackend $ userBackend ,
28+ private AppWhitelist $ whitelist ,
29+ private IRequest $ request ,
30+ private IUserSession $ userSession ,
31+ private IServerContainer $ server ,
32+ private Hooks $ hooks ,
33+ private GuestManager $ guestManager ,
34+ private IMountProviderCollection $ mountProviderCollection ,
35+ private Config $ config ,
36+ private UserBackend $ userBackend ,
37+ private LoggerInterface $ logger ,
6338 ) {
64- $ this ->whitelist = $ whitelist ;
65- $ this ->request = $ request ;
66- $ this ->userSession = $ userSession ;
67- $ this ->server = $ server ;
68- $ this ->hooks = $ hooks ;
69- $ this ->guestManager = $ guestManager ;
70- $ this ->mountProviderCollection = $ mountProviderCollection ;
71- $ this ->config = $ config ;
72- $ this ->userBackend = $ userBackend ;
7339 }
7440
7541 public function verifyAccess (): void {
7642 $ this ->whitelist ->verifyAccess ($ this ->userSession ->getUser (), $ this ->request );
7743 }
7844
7945 public function setupRestrictions (): void {
80- if ($ this ->guestManager ->isGuest ($ this ->userSession ->getUser ())) {
46+ $ user = $ this ->userSession ->getUser ();
47+
48+ if ($ user === null ) {
49+ // No user logged in, no restrictions needed
50+ $ this ->logger ->warning ('No user session found, skipping guest restrictions setup. ' );
51+ return ;
52+ }
53+
54+ if ($ this ->guestManager ->isGuest ($ user )) {
8155 \OCP \Util::connectHook ('OC_Filesystem ' , 'preSetup ' , $ this ->hooks , 'setupReadonlyFilesystem ' );
8256 if (!$ this ->config ->allowExternalStorage ()) {
8357 $ this ->mountProviderCollection ->registerMountFilter (function (IMountPoint $ mountPoint , IUser $ user ) {
@@ -88,8 +62,8 @@ public function setupRestrictions(): void {
8862 /** @var NavigationManager $navManager */
8963 $ navManager = \OCP \Server::get (INavigationManager::class);
9064
91- $ this ->server ->registerService (INavigationManager::class, function () use ($ navManager ) {
92- return new FilteredNavigationManager ($ this -> userSession -> getUser () , $ navManager , $ this ->whitelist );
65+ $ this ->server ->registerService (INavigationManager::class, function () use ($ navManager, $ user ) {
66+ return new FilteredNavigationManager ($ user , $ navManager , $ this ->whitelist );
9367 });
9468
9569 $ settingsManager = $ this ->server ->get (IManager::class);
0 commit comments