mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-06 00:07:44 +01:00
b496990f79
Adds a Biome rule for "no unused imports", which is something we sometimes have trouble catching. We're adding this as a warning for now. It is safely and easily fixable with `yarn lint:fix`. ![image](https://github.com/Unleash/unleash/assets/14320932/fd84dea8-6b20-4ba5-bfd8-047b9dcf2bff) ![image](https://github.com/Unleash/unleash/assets/14320932/990bb0b0-760a-4c5e-8136-d957e902bf0b)
68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import { Logger } from '../logger';
|
|
import { IUser } from '../types/user';
|
|
import { IUnleashConfig } from '../types/option';
|
|
import { IAccountStore, IUnleashStores } from '../types/stores';
|
|
import { AccessService } from './access-service';
|
|
import { RoleName } from '../types/model';
|
|
import { IAdminCount } from 'lib/types/stores/account-store';
|
|
|
|
interface IUserWithRole extends IUser {
|
|
rootRole: number;
|
|
}
|
|
|
|
export class AccountService {
|
|
private logger: Logger;
|
|
|
|
private store: IAccountStore;
|
|
|
|
private accessService: AccessService;
|
|
|
|
private lastSeenSecrets: Set<string> = new Set<string>();
|
|
|
|
constructor(
|
|
stores: Pick<IUnleashStores, 'accountStore'>,
|
|
{ getLogger }: Pick<IUnleashConfig, 'getLogger'>,
|
|
services: {
|
|
accessService: AccessService;
|
|
},
|
|
) {
|
|
this.logger = getLogger('service/account-service.ts');
|
|
this.store = stores.accountStore;
|
|
this.accessService = services.accessService;
|
|
}
|
|
|
|
async getAll(): Promise<IUserWithRole[]> {
|
|
const accounts = await this.store.getAll();
|
|
const defaultRole = await this.accessService.getPredefinedRole(
|
|
RoleName.VIEWER,
|
|
);
|
|
const userRoles = await this.accessService.getRootRoleForAllUsers();
|
|
const accountsWithRootRole = accounts.map((u) => {
|
|
const rootRole = userRoles.find((r) => r.userId === u.id);
|
|
const roleId = rootRole ? rootRole.roleId : defaultRole.id;
|
|
return { ...u, rootRole: roleId };
|
|
});
|
|
return accountsWithRootRole;
|
|
}
|
|
|
|
async getAccountByPersonalAccessToken(secret: string): Promise<IUser> {
|
|
return this.store.getAccountByPersonalAccessToken(secret);
|
|
}
|
|
|
|
async getAdminCount(): Promise<IAdminCount> {
|
|
return this.store.getAdminCount();
|
|
}
|
|
|
|
async updateLastSeen(): Promise<void> {
|
|
if (this.lastSeenSecrets.size > 0) {
|
|
const toStore = [...this.lastSeenSecrets];
|
|
this.lastSeenSecrets = new Set<string>();
|
|
await this.store.markSeenAt(toStore);
|
|
}
|
|
}
|
|
|
|
addPATSeen(secret: string): void {
|
|
this.lastSeenSecrets.add(secret);
|
|
}
|
|
}
|