mirror of
https://github.com/bitwarden/browser
synced 2026-01-09 20:13:42 +00:00
51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
import { OrganizationService as OrganizationServiceAbstraction } from "../abstractions/organization.service";
|
|
import { StateService } from "../abstractions/state.service";
|
|
|
|
import { OrganizationData } from "../models/data/organizationData";
|
|
|
|
import { Organization } from "../models/domain/organization";
|
|
|
|
export class OrganizationService implements OrganizationServiceAbstraction {
|
|
constructor(private stateService: StateService) {}
|
|
|
|
async get(id: string): Promise<Organization> {
|
|
const organizations = await this.stateService.getOrganizations();
|
|
if (organizations == null || !organizations.hasOwnProperty(id)) {
|
|
return null;
|
|
}
|
|
|
|
return new Organization(organizations[id]);
|
|
}
|
|
|
|
async getByIdentifier(identifier: string): Promise<Organization> {
|
|
const organizations = await this.getAll();
|
|
if (organizations == null || organizations.length === 0) {
|
|
return null;
|
|
}
|
|
|
|
return organizations.find((o) => o.identifier === identifier);
|
|
}
|
|
|
|
async getAll(userId?: string): Promise<Organization[]> {
|
|
const organizations = await this.stateService.getOrganizations({ userId: userId });
|
|
const response: Organization[] = [];
|
|
for (const id in organizations) {
|
|
if (organizations.hasOwnProperty(id) && !organizations[id].isProviderUser) {
|
|
response.push(new Organization(organizations[id]));
|
|
}
|
|
}
|
|
return response;
|
|
}
|
|
|
|
async save(organizations: { [id: string]: OrganizationData }) {
|
|
return await this.stateService.setOrganizations(organizations);
|
|
}
|
|
|
|
async canManageSponsorships(): Promise<boolean> {
|
|
const orgs = await this.getAll();
|
|
return orgs.some(
|
|
(o) => o.familySponsorshipAvailable || o.familySponsorshipFriendlyName !== null
|
|
);
|
|
}
|
|
}
|