refactor: Add telemetry for RBAC (no-changelog) (#8056)
https://linear.app/n8n/issue/PAY-1142
This commit is contained in:
@@ -12,4 +12,23 @@ export class RoleRepository extends Repository<Role> {
|
||||
async findRole(scope: RoleScopes, name: RoleNames) {
|
||||
return this.findOne({ where: { scope, name } });
|
||||
}
|
||||
|
||||
/**
|
||||
* Counts the number of users in each role, e.g. `{ admin: 2, member: 6, owner: 1 }`
|
||||
*/
|
||||
async countUsersByRole() {
|
||||
type Row = { role_name: string; count: number };
|
||||
|
||||
const rows: Row[] = await this.createQueryBuilder('role')
|
||||
.select('role.name')
|
||||
.addSelect('COUNT(user.id)', 'count')
|
||||
.innerJoin('user', 'user', 'role.id = user.globalRoleId')
|
||||
.groupBy('role.name')
|
||||
.getRawMany();
|
||||
|
||||
return rows.reduce<Record<string, number>>((acc, item) => {
|
||||
acc[item.role_name] = item.count;
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import { License } from '@/License';
|
||||
import { N8N_VERSION } from '@/constants';
|
||||
import { WorkflowRepository } from '@db/repositories/workflow.repository';
|
||||
import { SourceControlPreferencesService } from '../environments/sourceControl/sourceControlPreferences.service.ee';
|
||||
import { RoleRepository } from '@/databases/repositories/role.repository';
|
||||
|
||||
type ExecutionTrackDataKey = 'manual_error' | 'manual_success' | 'prod_error' | 'prod_success';
|
||||
|
||||
@@ -110,6 +111,7 @@ export class Telemetry {
|
||||
plan_name_current: this.license.getPlanName(),
|
||||
quota: this.license.getTriggerLimit(),
|
||||
usage: await this.workflowRepository.getActiveTriggerCount(),
|
||||
role_count: await Container.get(RoleRepository).countUsersByRole(),
|
||||
source_control_set_up: Container.get(SourceControlPreferencesService).isSourceControlSetup(),
|
||||
branchName: sourceControlPreferences.branchName,
|
||||
read_only_instance: sourceControlPreferences.branchReadOnly,
|
||||
|
||||
Reference in New Issue
Block a user