import { InferredAttributes } from "../../../runtime/types.mjs"; import { UserBooleanArrayOperand, UserBooleanOperand, UserStringArrayOperand, UserStringOperand } from "../../types/permission-operand.types.mjs"; import { IdPUserField } from "../../../parser/service/idp/types.mjs"; //#region src/configure/services/idp/permission.d.ts type EqualityOperator = "=" | "!="; type ContainsOperator = "in" | "not in"; type IdPUserOperand = Update extends true ? { oldIdpUser: IdPUserField; } | { newIdpUser: IdPUserField; } : { idpUser: IdPUserField; }; type StringEqualityCondition = readonly [string, EqualityOperator, string] | readonly [UserStringOperand, EqualityOperator, string] | readonly [string, EqualityOperator, UserStringOperand] | readonly [IdPUserOperand, EqualityOperator, string | UserStringOperand | IdPUserOperand] | readonly [string | UserStringOperand, EqualityOperator, IdPUserOperand]; type BooleanEqualityCondition = readonly [boolean, EqualityOperator, boolean] | readonly [UserBooleanOperand, EqualityOperator, boolean] | readonly [boolean, EqualityOperator, UserBooleanOperand] | readonly [IdPUserOperand, EqualityOperator, boolean | UserBooleanOperand | IdPUserOperand] | readonly [boolean | UserBooleanOperand, EqualityOperator, IdPUserOperand]; type EqualityCondition = StringEqualityCondition | BooleanEqualityCondition; type StringContainsCondition = readonly [string, ContainsOperator, string[]] | readonly [UserStringOperand, ContainsOperator, string[]] | readonly [string, ContainsOperator, UserStringArrayOperand] | readonly [IdPUserOperand, ContainsOperator, string[] | UserStringArrayOperand]; type BooleanContainsCondition = readonly [boolean, ContainsOperator, boolean[]] | readonly [UserBooleanOperand, ContainsOperator, boolean[]] | readonly [boolean, ContainsOperator, UserBooleanArrayOperand] | readonly [IdPUserOperand, ContainsOperator, boolean[] | UserBooleanArrayOperand]; type ContainsCondition = StringContainsCondition | BooleanContainsCondition; export type IdPPermissionCondition = EqualityCondition | ContainsCondition; type IdPActionPermission = { conditions: IdPPermissionCondition | readonly IdPPermissionCondition[]; description?: string | undefined; /** * Whether matching users are granted (`true`) or denied (`false`). * Omitting `permit` in this object form defaults to `deny` and emits a * warning; set it explicitly. (The array shorthand defaults to `allow`.) */ permit?: boolean; } | readonly [...IdPPermissionCondition, ...([] | [boolean])] | readonly [...IdPPermissionCondition[], ...([] | [boolean])]; /** * Per-operation permission policies for an IdP service. * Defines create, read, update, delete, sendPasswordResetEmail, and * unenrollMfa permissions. * * For update operations, use `newIdpUser`/`oldIdpUser` operands instead of `idpUser`. * @example * const permission: IdPPermission = { * create: [{ conditions: [[{ user: "role" }, "=", "ADMIN"]], permit: true }], * read: [{ conditions: [[{ user: "_loggedIn" }, "=", true]], permit: true }], * update: [{ conditions: [[{ newIdpUser: "name" }, "=", { user: "id" }]], permit: true }], * delete: [{ conditions: [[{ user: "role" }, "=", "ADMIN"]], permit: true }], * sendPasswordResetEmail: [{ conditions: [], permit: true }], * unenrollMfa: [{ conditions: [[{ user: "role" }, "=", "ADMIN"]], permit: true }], * }; */ export type IdPPermission = { create: readonly IdPActionPermission[]; read: readonly IdPActionPermission[]; update: readonly IdPActionPermission[]; delete: readonly IdPActionPermission[]; sendPasswordResetEmail?: readonly IdPActionPermission[]; unenrollMfa?: readonly IdPActionPermission[]; }; /** * Grants full IdP permission access without any conditions. * * Unsafe and intended only for local development, prototyping, or tests. * Do not use this in production environments, as it effectively disables * authorization checks. */ export declare const unsafeAllowAllIdPPermission: IdPPermission; //#endregion