package tech.easyflow.approval.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 已发布访问门禁注解。
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequirePublishedAccess {

    /**
     * 资源类型。
     *
     * @return 资源类型编码
     */
    String resourceType();

    /**
     * 资源标识的 SpEL 表达式。
     *
     * @return 标识表达式
     */
    String idExpr();

    /**
     * 拒绝访问时的提示文案。
     *
     * @return 错误提示
     */
    String denyMessage() default "资源尚未发布";
}
