@webda/core
Version:
Expose API with Lambda
89 lines (88 loc) • 2.03 kB
TypeScript
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 };