WangHan
2024-09-12 d5855a4926926698b740bc6c7ba489de47adb68b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package tech.powerjob.server.auth.service.login;
 
import tech.powerjob.server.auth.PowerJobUser;
import tech.powerjob.server.auth.common.PowerJobAuthException;
import tech.powerjob.server.auth.login.LoginTypeInfo;
 
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Optional;
 
/**
 * PowerJob 登录服务
 *
 * @author tjq
 * @since 2024/2/10
 */
public interface PowerJobLoginService {
 
    /**
     * 获取全部可登录的类型
     * @return 全部可登录类型
     */
    List<LoginTypeInfo> fetchSupportLoginTypes();
 
 
    /**
     * 获取第三方登录链接
     * @param loginType 登录类型
     * @param httpServletRequest http请求
     * @return 重定向地址
     */
    String fetchThirdPartyLoginUrl(String loginType, HttpServletRequest httpServletRequest);
 
    /**
     * 执行真正的登录请求,底层调用第三方登录服务完成登录
     * @param loginRequest 登录请求
     * @return 登录完成的 PowerJobUser
     * @throws PowerJobAuthException 鉴权失败抛出异常
     */
    PowerJobUser doLogin(LoginRequest loginRequest) throws PowerJobAuthException;
 
    /**
     * 从 JWT 信息中解析用户登录信息
     * @param httpServletRequest httpServletRequest
     * @return PowerJob 用户
     */
    Optional<PowerJobUser> ifLogin(HttpServletRequest httpServletRequest);
}