黎星凯
2024-05-17 3520e86e2b00b9c1ee3f4fffd4ab49fe3d6c259e
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.iplatform.security.util;
 
import com.iplatform.base.PlatformLoginCallback;
import com.iplatform.base.callback.PlatformCallbackPostProcessor;
import com.iplatform.security.callback.EncryptPasswordLoginCallback;
import com.iplatform.security.callback.MobilePassCaptchaLoginCallback;
import com.iplatform.security.callback.NoneCaptchaLoginCallback;
import com.iplatform.security.callback.SimplePasswordLoginCallback;
import com.iplatform.security.callback.SmsCodeLoginCallback;
import com.iplatform.security.callback.ThirdPartyLoginCallback;
import com.iplatform.security.callback.WechatLoginCallback;
import com.walker.web.CaptchaType;
import com.walker.web.LoginType;
import org.slf4j.ILoggerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
/**
 * 登录回调工具类。
 * @author 时克英
 * @date 2023-01-26
 */
public class LoginCallbackUtils {
 
    protected static final Logger logger = LoggerFactory.getLogger(LoginCallbackUtils.class);
 
//    public static final PlatformLoginCallback getLoginCallbackBean(UserType userType){
//        if(userType == UserType.UserEquipment){
//            throw new UnsupportedOperationException("暂不支持设备连接登录回调");
//        } else if(userType == UserType.UserApp){
//            return getLoginCallbackBean(LoginType.MOBILE);
//        } else {
//            return getLoginCallbackBean(LoginType.PC);
//        }
//    }
 
    /**
     * 根据登录类型,查找登录回调定义实现。
     * @param loginType 登录类型,参考:{@linkplain LoginType}
     * @param encryptPassword 如果密码方式,密码是否加密
     * @return
     */
    public static final PlatformLoginCallback getLoginCallbackBean(LoginType loginType, boolean encryptPassword, CaptchaType captchaType){
        if(loginType == LoginType.UserPassword){
            if(encryptPassword){
                return PlatformCallbackPostProcessor.getCallbackMultipleBean(EncryptPasswordLoginCallback.class);
            } else {
                logger.error("'SimplePasswordLoginCallback'还未配置,明文密码登录已不再支持!仅用于测试。");
                return PlatformCallbackPostProcessor.getCallbackMultipleBean(SimplePasswordLoginCallback.class);
            }
        } else if(loginType == LoginType.SmsCode){
            return PlatformCallbackPostProcessor.getCallbackMultipleBean(SmsCodeLoginCallback.class);
        } else if(loginType == LoginType.MobilePassword){
            if(captchaType == CaptchaType.None){
                return PlatformCallbackPostProcessor.getCallbackMultipleBean(NoneCaptchaLoginCallback.class);
            } else {
                return PlatformCallbackPostProcessor.getCallbackMultipleBean(MobilePassCaptchaLoginCallback.class);
            }
 
//            return PlatformCallbackPostProcessor.getCallbackMultipleBean(NoneCaptchaLoginCallback.class);
        } else if(loginType == LoginType.ThirdParty){
            return PlatformCallbackPostProcessor.getCallbackMultipleBean(ThirdPartyLoginCallback.class);
        } else if(loginType == LoginType.Wechat){
            return PlatformCallbackPostProcessor.getCallbackMultipleBean(WechatLoginCallback.class);
        } else {
            throw new UnsupportedOperationException("暂不支持登录类型:" + loginType);
        }
    }
}