Skip to content

Commit 5c08901

Browse files
committed
chore: Run ABAC LDAP sync on license/setting changes (#37562)
1 parent a932679 commit 5c08901

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed
Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,29 @@
11
import { License } from '@rocket.chat/license';
2+
import { Users } from '@rocket.chat/models';
3+
4+
import { settings } from '../../../app/settings/server';
5+
import { LDAPEE } from '../sdk';
26

37
Meteor.startup(async () => {
4-
await License.onLicense('abac', async () => {
5-
const { addSettings } = await import('../settings/abac');
6-
const { createPermissions } = await import('../lib/abac');
8+
let stopWatcher: () => void;
9+
License.onToggledFeature('abac', {
10+
up: async () => {
11+
const { addSettings } = await import('../settings/abac');
12+
const { createPermissions } = await import('../lib/abac');
13+
14+
await addSettings();
15+
await createPermissions();
716

8-
await addSettings();
9-
await createPermissions();
17+
await import('../hooks/abac');
1018

11-
await import('../hooks/abac');
19+
stopWatcher = settings.watch('ABAC_Enabled', async (value) => {
20+
if (value) {
21+
await LDAPEE.syncUsersAbacAttributes(Users.findLDAPUsers());
22+
}
23+
});
24+
},
25+
down: () => {
26+
stopWatcher?.();
27+
},
1228
});
1329
});

apps/meteor/ee/server/lib/ldap/Manager.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ export class LDAPEEManager extends LDAPManager {
138138
await ldap.connect();
139139

140140
try {
141+
logger.debug({ msg: 'Starting ABAC attributes sync for LDAP users' });
141142
for await (const user of users) {
142143
await this.syncUserAbacAttribute(ldap, user);
143144
}

apps/meteor/ee/server/settings/abac.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { settingsRegistry } from '../../../app/settings/server';
22

3-
export function addSettings(): void {
4-
void settingsRegistry.addGroup('General', async function () {
3+
export function addSettings(): Promise<void> {
4+
return settingsRegistry.addGroup('General', async function () {
55
await this.with(
66
{
77
enterprise: true,

0 commit comments

Comments
 (0)