UNPKG

@webda/core

Version:

Expose API with Lambda

89 lines (88 loc) 2.03 kB
import { OperationContext, User, WebContext } from "../index.js"; import { CoreModel } from "./coremodel.js"; export type Acl = { [key: string]: string; }; /** * Object that contains ACL to define its own permissions * * @WebdaModel */ export default class AclModel extends CoreModel { /** * Object creator */ _creator: string; /** * Permissions on the object */ __acl: Acl; /** * Contains permissions */ protected _permissions?: string[]; /** * Ensure creator has all permissions by default */ _onSave(): Promise<void>; /** * Add the permissions for current user */ _onGet(): Promise<void>; /** * Return object ACLs * @returns */ getAcl(): Acl; /** * Set object ACLs * @param acl */ setAcl(acl: Acl): void; /** * Manage the ACL REST api actions * @param ctx * @returns */ acl(ctx: WebContext): Promise<void | { raw: Acl; resolved: { permission: string; actor: any; }[]; }>; /** * GET * @param ctx */ _httpGetAcls(ctx: OperationContext): Promise<{ raw: Acl; resolved: { permission: string; actor: any; }[]; }>; /** * Get the user public entry * * Override if using a custom User without backward compatibility * @param ace * @returns */ getUserPublicEntry(ace: string): Promise<any>; /** * */ _httpPutAcls(ctx: OperationContext): Promise<void>; getGroups(_ctx: OperationContext, user: User): string[]; /** * Get Permissions for one object * @param ctx * @param user * @returns */ getPermissions(ctx: OperationContext, user?: User): Promise<string[]>; hasPermission(ctx: OperationContext, user: User, action: string): Promise<boolean>; canAct(ctx: OperationContext, action: string): Promise<string | boolean>; } export { AclModel };