package com.iailab.module.system.service.oauth2; import com.iailab.module.system.dal.dataobject.oauth2.OAuth2ApproveDO; import java.util.Collection; import java.util.List; import java.util.Map; /** * OAuth2 批准 Service 接口 * * 从功能上,和 Spring Security OAuth 的 ApprovalStoreUserApprovalHandler 的功能,记录用户针对指定客户端的授权,减少手动确定。 * * @author iailab */ public interface OAuth2ApproveService { /** * 获得指定用户,针对指定客户端的指定授权,是否通过 * * 参考 ApprovalStoreUserApprovalHandler 的 checkForPreApproval 方法 * * @param userId 用户编号 * @param userType 用户类型 * @param clientId 客户端编号 * @param requestedScopes 授权范围 * @return 是否授权通过 */ boolean checkForPreApproval(Long userId, Integer userType, String clientId, Collection requestedScopes); /** * 在用户发起批准时,基于 scopes 的选项,计算最终是否通过 * * @param userId 用户编号 * @param userType 用户类型 * @param clientId 客户端编号 * @param requestedScopes 授权范围 * @return 是否授权通过 */ boolean updateAfterApproval(Long userId, Integer userType, String clientId, Map requestedScopes); /** * 获得用户的批准列表,排除已过期的 * * @param userId 用户编号 * @param userType 用户类型 * @param clientId 客户端编号 * @return 是否授权通过 */ List getApproveList(Long userId, Integer userType, String clientId); }