|
|
|
|
@ -1,43 +1,47 @@ |
|
|
|
|
import { MongoInternals } from 'meteor/mongo'; |
|
|
|
|
import { Users } from '@rocket.chat/models'; |
|
|
|
|
|
|
|
|
|
import { readSecondaryPreferred } from '../../../../server/database/readSecondaryPreferred'; |
|
|
|
|
import { settings } from '../../../settings/server'; |
|
|
|
|
import { Users } from '../../../models/server'; |
|
|
|
|
|
|
|
|
|
const { db } = MongoInternals.defaultRemoteCollectionDriver().mongo; |
|
|
|
|
|
|
|
|
|
function getCustomOAuthServices(): Record< |
|
|
|
|
string, |
|
|
|
|
{ |
|
|
|
|
enabled: boolean; |
|
|
|
|
mergeRoles: boolean; |
|
|
|
|
users: number; |
|
|
|
|
} |
|
|
|
|
async function getCustomOAuthServices(): Promise< |
|
|
|
|
Record< |
|
|
|
|
string, |
|
|
|
|
{ |
|
|
|
|
enabled: boolean; |
|
|
|
|
mergeRoles: boolean; |
|
|
|
|
users: number; |
|
|
|
|
} |
|
|
|
|
> |
|
|
|
|
> { |
|
|
|
|
const readPreference = readSecondaryPreferred(db); |
|
|
|
|
|
|
|
|
|
const customOauth = settings.getByRegexp(/Accounts_OAuth_Custom-[^-]+$/im); |
|
|
|
|
return Object.fromEntries( |
|
|
|
|
Object.entries(customOauth).map(([key, value]) => { |
|
|
|
|
const name = key.replace('Accounts_OAuth_Custom-', ''); |
|
|
|
|
return [ |
|
|
|
|
name, |
|
|
|
|
{ |
|
|
|
|
enabled: Boolean(value), |
|
|
|
|
mergeRoles: settings.get<boolean>(`Accounts_OAuth_Custom-${name}-merge_roles`), |
|
|
|
|
users: Users.countActiveUsersByService(name, { readPreference }), |
|
|
|
|
}, |
|
|
|
|
]; |
|
|
|
|
}), |
|
|
|
|
await Promise.all( |
|
|
|
|
Object.entries(customOauth).map(async ([key, value]) => { |
|
|
|
|
const name = key.replace('Accounts_OAuth_Custom-', ''); |
|
|
|
|
return [ |
|
|
|
|
name, |
|
|
|
|
{ |
|
|
|
|
enabled: Boolean(value), |
|
|
|
|
mergeRoles: settings.get<boolean>(`Accounts_OAuth_Custom-${name}-merge_roles`), |
|
|
|
|
users: await Users.countActiveUsersByService(name, { readPreference }), |
|
|
|
|
}, |
|
|
|
|
]; |
|
|
|
|
}), |
|
|
|
|
), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export function getServicesStatistics(): Record<string, unknown> { |
|
|
|
|
export async function getServicesStatistics(): Promise<Record<string, unknown>> { |
|
|
|
|
const readPreference = readSecondaryPreferred(db); |
|
|
|
|
|
|
|
|
|
return { |
|
|
|
|
ldap: { |
|
|
|
|
users: Users.countActiveUsersByService('ldap', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('ldap', { readPreference }), |
|
|
|
|
enabled: settings.get('LDAP_Enable'), |
|
|
|
|
loginFallback: settings.get('LDAP_Login_Fallback'), |
|
|
|
|
encryption: settings.get('LDAP_Encryption'), |
|
|
|
|
@ -62,7 +66,7 @@ export function getServicesStatistics(): Record<string, unknown> { |
|
|
|
|
}, |
|
|
|
|
saml: { |
|
|
|
|
enabled: settings.get('SAML_Custom_Default'), |
|
|
|
|
users: Users.countActiveUsersByService('saml', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('saml', { readPreference }), |
|
|
|
|
signatureValidationType: settings.get('SAML_Custom_Default_signature_validation_type'), |
|
|
|
|
generateUsername: settings.get('SAML_Custom_Default_generate_username'), |
|
|
|
|
updateSubscriptionsOnLogin: settings.get('SAML_Custom_Default_channels_update'), |
|
|
|
|
@ -70,68 +74,68 @@ export function getServicesStatistics(): Record<string, unknown> { |
|
|
|
|
}, |
|
|
|
|
cas: { |
|
|
|
|
enabled: settings.get('CAS_enabled'), |
|
|
|
|
users: Users.countActiveUsersByService('cas', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('cas', { readPreference }), |
|
|
|
|
allowUserCreation: settings.get('CAS_Creation_User_Enabled'), |
|
|
|
|
alwaysSyncUserData: settings.get('CAS_Sync_User_Data_Enabled'), |
|
|
|
|
}, |
|
|
|
|
oauth: { |
|
|
|
|
apple: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Apple'), |
|
|
|
|
users: Users.countActiveUsersByService('apple', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('apple', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
dolphin: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Dolphin'), |
|
|
|
|
users: Users.countActiveUsersByService('dolphin', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('dolphin', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
drupal: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Drupal'), |
|
|
|
|
users: Users.countActiveUsersByService('drupal', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('drupal', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
facebook: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Facebook'), |
|
|
|
|
users: Users.countActiveUsersByService('facebook', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('facebook', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
github: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Github'), |
|
|
|
|
users: Users.countActiveUsersByService('github', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('github', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
githubEnterprise: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_GitHub_Enterprise'), |
|
|
|
|
users: Users.countActiveUsersByService('github_enterprise', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('github_enterprise', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
gitlab: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Gitlab'), |
|
|
|
|
users: Users.countActiveUsersByService('gitlab', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('gitlab', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
google: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Google'), |
|
|
|
|
users: Users.countActiveUsersByService('google', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('google', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
linkedin: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Linkedin'), |
|
|
|
|
users: Users.countActiveUsersByService('linkedin', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('linkedin', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
meteor: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Meteor'), |
|
|
|
|
users: Users.countActiveUsersByService('meteor', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('meteor', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
nextcloud: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Nextcloud'), |
|
|
|
|
users: Users.countActiveUsersByService('nextcloud', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('nextcloud', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
tokenpass: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Tokenpass'), |
|
|
|
|
users: Users.countActiveUsersByService('tokenpass', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('tokenpass', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
twitter: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Twitter'), |
|
|
|
|
users: Users.countActiveUsersByService('twitter', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('twitter', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
wordpress: { |
|
|
|
|
enabled: settings.get('Accounts_OAuth_Wordpress'), |
|
|
|
|
users: Users.countActiveUsersByService('wordpress', { readPreference }), |
|
|
|
|
users: await Users.countActiveUsersByService('wordpress', { readPreference }), |
|
|
|
|
}, |
|
|
|
|
custom: getCustomOAuthServices(), |
|
|
|
|
custom: await getCustomOAuthServices(), |
|
|
|
|
}, |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|