@vendure/core
Version:
A modern, headless ecommerce framework
94 lines (93 loc) • 3.94 kB
TypeScript
import { CreateAdministratorInput, DeletionResult, UpdateAdministratorInput } from '@vendure/common/lib/generated-types';
import { ID, PaginatedList } from '@vendure/common/lib/shared-types';
import { RequestContext } from '../../api/common/request-context';
import { RelationPaths } from '../../api/decorators/relations.decorator';
import { ListQueryOptions } from '../../common/types/common-types';
import { ConfigService } from '../../config';
import { TransactionalConnection } from '../../connection/transactional-connection';
import { Administrator } from '../../entity/administrator/administrator.entity';
import { EventBus } from '../../event-bus';
import { CustomFieldRelationService } from '../helpers/custom-field-relation/custom-field-relation.service';
import { ListQueryBuilder } from '../helpers/list-query-builder/list-query-builder';
import { PasswordCipher } from '../helpers/password-cipher/password-cipher';
import { RequestContextService } from '../helpers/request-context/request-context.service';
import { RoleService } from './role.service';
import { UserService } from './user.service';
/**
* @description
* Contains methods relating to {@link Administrator} entities.
*
* @docsCategory services
*/
export declare class AdministratorService {
private connection;
private configService;
private listQueryBuilder;
private passwordCipher;
private userService;
private roleService;
private customFieldRelationService;
private eventBus;
private requestContextService;
constructor(connection: TransactionalConnection, configService: ConfigService, listQueryBuilder: ListQueryBuilder, passwordCipher: PasswordCipher, userService: UserService, roleService: RoleService, customFieldRelationService: CustomFieldRelationService, eventBus: EventBus, requestContextService: RequestContextService);
/** @internal */
initAdministrators(): Promise<void>;
/**
* @description
* Get a paginated list of Administrators.
*/
findAll(ctx: RequestContext, options?: ListQueryOptions<Administrator>, relations?: RelationPaths<Administrator>): Promise<PaginatedList<Administrator>>;
/**
* @description
* Get an Administrator by id.
*/
findOne(ctx: RequestContext, administratorId: ID, relations?: RelationPaths<Administrator>): Promise<Administrator | undefined>;
/**
* @description
* Get an Administrator based on the User id.
*/
findOneByUserId(ctx: RequestContext, userId: ID, relations?: RelationPaths<Administrator>): Promise<Administrator | undefined>;
/**
* @description
* Create a new Administrator.
*/
create(ctx: RequestContext, input: CreateAdministratorInput): Promise<Administrator>;
/**
* @description
* Update an existing Administrator.
*/
update(ctx: RequestContext, input: UpdateAdministratorInput): Promise<Administrator>;
/**
* @description
* Checks that the active user is allowed to grant the specified Roles when creating or
* updating an Administrator.
*/
private checkActiveUserCanGrantRoles;
/**
* @description
* Assigns a Role to the Administrator's User entity.
*/
assignRole(ctx: RequestContext, administratorId: ID, roleId: ID): Promise<Administrator>;
/**
* @description
* Soft deletes an Administrator (sets the `deletedAt` field).
*/
softDelete(ctx: RequestContext, id: ID): Promise<{
result: DeletionResult;
}>;
private checkForDuplicateEmailAddress;
/**
* @description
* Resolves to `true` if the administrator ID belongs to the only Administrator
* with SuperAdmin permissions.
*/
private isSoleSuperadmin;
/**
* @description
* There must always exist a SuperAdmin, otherwise full administration via API will
* no longer be possible.
*
* @internal
*/
private ensureSuperAdminExists;
}