package com.qmth.boot.core.security.service;

import com.qmth.boot.core.security.model.AccessEntity;
import com.qmth.boot.tools.signature.SignatureType;

/**
 * 应用鉴权服务接口
 */
public interface AuthorizationService<T extends AccessEntity> {

    /**
     * 根据签名标识、签名类型、访问路径查询鉴权对象
     *
     * @param identity
     * @param type
     * @param path
     * @return
     */
    T findByIdentity(String identity, SignatureType type, String path);

    /**
     * 根据鉴权对象判断是否有路径访问权限
     *
     * @param accessEntity
     * @param path
     * @return
     */
    default boolean hasPermission(T accessEntity, String path) {
        return true;
    }

}
