package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.common.enums.LoginPolicyType;
import com.ruoyi.system.domain.SysLoginPolicy;

/**
 * 登录策略配置服务。
 * <p>从 {@code sys_login_policy} 读取规则，并结合用户角色解析最终登录方式。</p>
 */
public interface ISysLoginPolicyService
{
    /**
     * 查询某网络区域下所有已启用的策略行。
     *
     * @param networkZone INTERNAL 或 INTERNET
     */
    List<SysLoginPolicy> selectEnabledByNetworkZone(String networkZone);

    /**
     * 解析用户在指定网络区域下应使用的登录策略。
     *
     * @param networkZone     来自 login.network-zone
     * @param roleKeys        用户角色 role_key 列表
     * @param userLoginPolicy 用户级覆盖，来自 sys_user.login_policy，可为 null
     * @return 未匹配时返回 PASSWORD
     */
    LoginPolicyType resolvePolicyType(String networkZone, List<String> roleKeys, String userLoginPolicy);
}
