package com.ssyf.common.security.aop;

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

/**
 * 证书校验注解，通过校验用户传入的证书判断用户请求是否有效；
 * 证书传入方式，通过请求头的certificate传入，参见{@link com.ssyf.common.security.helper.ClientContextHelper}的getCertificate()方法
 * 校验方式参见{@link CertificateValidAop}
 * @author huwei
 * @date 2023/11/4 15:58
 */
@Target({ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface CertificateValid {
    /**
     * 证书的事件类型
     * @return
     */
    String type() default "";

    /**
     * 事件源
     * @return
     */
    String event() default "";

    /**
     * 事件源变量：
     * 若定义该值，则将从请求参数中获取该值
     * 优先级小于event()定义；
     * @return
     */
    String eventVar() default "";

    /**
     * 事件内容
     * @return
     */
    String content() default "";

    /**
     * 事件内容变量；
     * 若定义该值，则将从请求参数中获取该值；
     * 优先级小于content()定义
     * @return
     */
    String contentVar() default "";

}
