ScanCodeTokenGranter.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package jnpf.granter;
  2. import jnpf.base.ActionResult;
  3. import jnpf.base.UserInfo;
  4. import jnpf.config.ConfigValueUtil;
  5. import jnpf.constant.MsgCode;
  6. import jnpf.consts.AuthConsts;
  7. import jnpf.consts.DeviceType;
  8. import jnpf.exception.LoginException;
  9. import jnpf.model.BaseSystemInfo;
  10. import jnpf.model.LoginVO;
  11. import jnpf.util.StringUtil;
  12. import jnpf.util.UserProvider;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Component;
  16. import java.util.Map;
  17. import static jnpf.granter.ScanCodeTokenGranter.GRANT_TYPE;
  18. @Slf4j
  19. @Component(GRANT_TYPE)
  20. public class ScanCodeTokenGranter extends AbstractTokenGranter {
  21. public static final String GRANT_TYPE = "scancode";
  22. public static final Integer ORDER = 5;
  23. private static final String URL_LOGIN = "";
  24. @Autowired
  25. protected ConfigValueUtil configValueUtil;
  26. public ScanCodeTokenGranter() {
  27. super(URL_LOGIN);
  28. }
  29. /**
  30. * @param loginParameters {userId, tenantId}
  31. * @return
  32. * @throws LoginException
  33. */
  34. @Override
  35. public ActionResult granter(Map<String, String> loginParameters) throws LoginException {
  36. String token = loginParameters.get("token");
  37. // 验证token是否有效
  38. UserInfo userInfo = UserProvider.getUser(token);
  39. if (configValueUtil.isMultiTenancy()){
  40. userInfo.setUserAccount(userInfo.getTenantId()+"@"+userInfo.getUserAccount());
  41. }
  42. //切换租户
  43. switchTenant(userInfo);
  44. //获取系统配置
  45. BaseSystemInfo baseSystemInfo = getSysconfig(userInfo);
  46. //登录账号
  47. super.loginAccount(userInfo, baseSystemInfo);
  48. //返回登录信息
  49. LoginVO loginResult = getLoginVo(userInfo);
  50. return ActionResult.success(loginResult);
  51. }
  52. @Override
  53. public int getOrder() {
  54. return ORDER;
  55. }
  56. protected LoginVO getLoginVo(UserInfo userInfo) {
  57. LoginVO loginVO = new LoginVO();
  58. loginVO.setTheme(userInfo.getTheme());
  59. loginVO.setToken(userInfo.getToken());
  60. return loginVO;
  61. }
  62. @Override
  63. public ActionResult logout() {
  64. UserInfo userInfo = UserProvider.getUser();
  65. if (userInfo.getUserId() != null) {
  66. if ("1".equals(String.valueOf(loginService.getBaseSystemConfig(userInfo.getTenantId()).getSingleLogin()))) {
  67. UserProvider.logoutByUserId(userInfo.getUserId(), DeviceType.valueOf(userInfo.getLoginDevice()));
  68. } else {
  69. UserProvider.logoutByToken(userInfo.getToken());
  70. }
  71. }
  72. return ActionResult.success(MsgCode.OA014.get());
  73. }
  74. @Override
  75. protected String getGrantType() {
  76. return GRANT_TYPE;
  77. }
  78. @Override
  79. protected String getUserDetailKey() {
  80. return AuthConsts.USERDETAIL_USER_ID;
  81. }
  82. }