package tech.easyflow.auth.service;

import tech.easyflow.auth.entity.LoginDTO;
import tech.easyflow.auth.entity.LoginVO;

import java.math.BigInteger;

/**
 * 账号认证与登录服务。
 */
public interface AuthService {
    /**
     * 登录
     */
    LoginVO login(LoginDTO loginDTO);

    /**
     * 开发模式免登录
     */
    LoginVO devLogin(String account);

    /**
     * 通过访问令牌登录
     */
    LoginVO loginByApiKey(String apiKey);

    /**
     * 通过账号ID登录
     */
    LoginVO loginByAccountId(BigInteger accountId, Long timeoutSeconds);

    /**
     * 修改当前账号密码。
     *
     * @param accountId 账号 ID
     * @param currentPassword 当前密码；强制重置密码时可为空
     * @param newPassword 新密码
     * @param confirmPassword 确认密码
     * @param loginDevice 当前登录会话设备类型
     */
    void updateOwnPassword(
            BigInteger accountId,
            String currentPassword,
            String newPassword,
            String confirmPassword,
            String loginDevice
    );
}
