| | |
| | | package com.ycl.service.user.impl; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.util.PageUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.alibaba.druid.sql.PagerUtils; |
| | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | import java.util.function.Consumer; |
| | | import java.util.stream.Collectors; |
| | |
| | | date = calendar.getTime(); |
| | | umsAdmin.setExpirationDate(date); |
| | | } else { |
| | | umsAdmin.setExpirationDate(new Date("2200-01-01")); |
| | | umsAdmin.setExpirationDate(new Date(2090, 1, 1)); |
| | | } |
| | | if (umsAdmin.getId() != null) { |
| | | baseMapper.updateById(umsAdmin); |
| | |
| | | //密码需要客户端加密后传递 |
| | | try { |
| | | AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username); |
| | | |
| | | UmsAdmin admin = userDetails.getUmsAdmin(); |
| | | LocalDateTime nowTime = LocalDateTime.now(); |
| | | nowTime = nowTime.plusMinutes(-15); |
| | | if (admin.getPasswordErrorNum() != null && admin.getPasswordErrorNum() >= 5 |
| | | && admin.getPasswordErrorLastTime().isAfter(nowTime)) { |
| | | admin.setPasswordErrorLastTime(LocalDateTime.now()); |
| | | updateById(admin); |
| | | Asserts.fail("登录失败超过5次,此账号被锁定,请15分钟后再试。"); |
| | | } |
| | | if (!passwordEncoder.matches(password, userDetails.getPassword())) { |
| | | if (admin.getPasswordErrorNum() == null) { |
| | | admin.setPasswordErrorNum(1); |
| | | } else { |
| | | admin.setPasswordErrorNum(admin.getPasswordErrorNum() + 1); |
| | | } |
| | | admin.setPasswordErrorLastTime(LocalDateTime.now()); |
| | | updateById(admin); |
| | | Asserts.fail("密码不正确"); |
| | | } |
| | | if (!userDetails.isEnabled()) { |
| | | Asserts.fail("帐号已被禁用"); |
| | | } |
| | | admin.setPasswordErrorNum(0); |
| | | updateById(admin); |
| | | |
| | | UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); |
| | | SecurityContextHolder.getContext().setAuthentication(authentication); |
| | | //根据用户id,用户姓名 |
| | | token = jwtTokenUtil.generateToken(userDetails.getUserId(), userDetails.getUsername()); |
| | | redisService.set(RedisKey.PLATFORM_TOKEN_KEY.concat(username), token, LiveTimeMillisecond.s7200.time); |
| | | // updateLoginTimeByUsername(username); |
| | | //insertLoginLog(username); |
| | | } catch (AuthenticationException e) { |
| | | LOGGER.warn("登录异常:{}", e.getMessage()); |
| | | } |
| | | return token; |
| | | } |
| | | |
| | | @Override |
| | | public String getOAuthToken(String username) { |
| | | String token = null; |
| | | //密码需要客户端加密后传递 |
| | | try { |
| | | AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username); |
| | | UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); |
| | | SecurityContextHolder.getContext().setAuthentication(authentication); |
| | | //根据用户id,用户姓名 |
| | |
| | | List<UmsMenu> resourceList = getResourceList(admin.getId()); |
| | | return new AdminUserDetails(admin, resourceList); |
| | | } |
| | | throw new UsernameNotFoundException("用户名或密码错误"); |
| | | throw new UsernameNotFoundException("用户不存在"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | return str; |
| | | } |
| | | |
| | | @Override |
| | | public UmsAdmin getByOpenid(String openid) { |
| | | LambdaQueryWrapper<UmsAdmin> wrapper = new LambdaQueryWrapper<UmsAdmin>().eq(UmsAdmin::getOpenid, openid).last("limit 1"); |
| | | |
| | | return baseMapper.selectOne(wrapper); |
| | | } |
| | | } |