4040use OCP \BackgroundJob \IJobList ;
4141use OCP \Encryption \IManager ;
4242use OCP \EventDispatcher \IEventDispatcher ;
43+ use OCP \Group \ISubAdmin ;
4344use OCP \IConfig ;
45+ use OCP \IGroup ;
4446use OCP \IGroupManager ;
4547use OCP \IL10N ;
4648use OCP \INavigationManager ;
4951use OCP \IUserSession ;
5052use OCP \L10N \IFactory ;
5153use OCP \Mail \IMailer ;
52- use OCP \Server ;
5354use OCP \Util ;
5455use function in_array ;
5556
@@ -88,8 +89,8 @@ public function __construct(
8889 */
8990 #[NoAdminRequired]
9091 #[NoCSRFRequired]
91- public function usersListByGroup (): TemplateResponse {
92- return $ this ->usersList ();
92+ public function usersListByGroup (INavigationManager $ navigationManager , ISubAdmin $ subAdmin ): TemplateResponse {
93+ return $ this ->usersList ($ navigationManager , $ subAdmin );
9394 }
9495
9596 /**
@@ -99,13 +100,13 @@ public function usersListByGroup(): TemplateResponse {
99100 */
100101 #[NoAdminRequired]
101102 #[NoCSRFRequired]
102- public function usersList (): TemplateResponse {
103+ public function usersList (INavigationManager $ navigationManager , ISubAdmin $ subAdmin ): TemplateResponse {
103104 $ user = $ this ->userSession ->getUser ();
104105 $ uid = $ user ->getUID ();
105106 $ isAdmin = $ this ->groupManager ->isAdmin ($ uid );
106107 $ isDelegatedAdmin = $ this ->groupManager ->isDelegatedAdmin ($ uid );
107108
108- Server:: get (INavigationManager::class) ->setActiveEntry ('core_users ' );
109+ $ navigationManager ->setActiveEntry ('core_users ' );
109110
110111 /* SORT OPTION: SORT_USERCOUNT or SORT_GROUPNAME */
111112 $ sortGroupsBy = MetaData::SORT_USERCOUNT ;
@@ -181,6 +182,14 @@ public function usersList(): TemplateResponse {
181182 'usercount ' => $ disabledUsers
182183 ];
183184
185+ if (!$ isAdmin && !$ isDelegatedAdmin ) {
186+ $ subAdminGroups = array_map (
187+ fn (IGroup $ group ) => ['id ' => $ group ->getGID (), 'name ' => $ group ->getDisplayName ()],
188+ $ subAdmin ->getSubAdminsGroups ($ user ),
189+ );
190+ $ subAdminGroups = array_values ($ subAdminGroups );
191+ }
192+
184193 /* QUOTAS PRESETS */
185194 $ quotaPreset = $ this ->parseQuotaPreset ($ this ->config ->getAppValue ('files ' , 'quota_preset ' , '1 GB, 5 GB, 10 GB ' ));
186195 $ allowUnlimitedQuota = $ this ->config ->getAppValue ('files ' , 'allow_unlimited_quota ' , '1 ' ) === '1 ' ;
@@ -204,6 +213,7 @@ public function usersList(): TemplateResponse {
204213 $ serverData = [];
205214 // groups
206215 $ serverData ['systemGroups ' ] = [$ adminGroupData , $ recentUsersGroup , $ disabledUsersGroup ];
216+ $ serverData ['subAdminGroups ' ] = $ subAdminGroups ?? [];
207217 // Various data
208218 $ serverData ['isAdmin ' ] = $ isAdmin ;
209219 $ serverData ['isDelegatedAdmin ' ] = $ isDelegatedAdmin ;
0 commit comments