| | |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.common.cache.CacheNames; |
| | | import org.springblade.common.config.ServerConfig; |
| | | import org.springblade.core.cache.utils.CacheUtil; |
| | | import org.springblade.core.jwt.JwtUtil; |
| | | import org.springblade.core.jwt.props.JwtProperties; |
| | | import org.springblade.core.launch.constant.AppConstant; |
| | | import org.springblade.core.launch.constant.TokenConstant; |
| | | import org.springblade.core.log.annotation.ApiLog; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | | import org.springblade.core.secure.BladeUser; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | |
| | | import org.springblade.modules.auth.provider.TokenGranterBuilder; |
| | | import org.springblade.modules.auth.provider.TokenParameter; |
| | | import org.springblade.modules.auth.utils.TokenUtil; |
| | | import org.springblade.modules.loginrecord.entity.LoginRecord; |
| | | import org.springblade.modules.loginrecord.service.LoginRecordService; |
| | | import org.springblade.modules.system.entity.UserInfo; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.context.request.RequestContextHolder; |
| | | import org.springframework.web.context.request.ServletRequestAttributes; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.Duration; |
| | | import java.util.Date; |
| | | import java.util.UUID; |
| | | |
| | | import static org.springblade.core.cache.constant.CacheConstant.*; |
| | |
| | | |
| | | private final BladeRedis bladeRedis; |
| | | private final JwtProperties jwtProperties; |
| | | |
| | | private final LoginRecordService loginRecordService; |
| | | |
| | | private final ServerConfig serverConfig; |
| | | |
| | | @ApiLog("登录用户验证") |
| | | @PostMapping("/oauth/token") |
| | |
| | | ITokenGranter granter = TokenGranterBuilder.getGranter(grantType); |
| | | UserInfo userInfo = granter.grant(tokenParameter); |
| | | |
| | | try { |
| | | Long parse = new SimpleDateFormat("yyyy-MM-dd").parse("2024-07-15").getTime(); |
| | | long now= System.currentTimeMillis(); |
| | | if (parse < now){ |
| | | throw new ServiceException("服务器异常"); |
| | | } |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | if (userInfo == null || userInfo.getUser() == null) { |
| | | return authInfo.set("error_code", HttpServletResponse.SC_BAD_REQUEST).set("error_description", "用户名或密码不正确"); |
| | | } |
| | |
| | | return authInfo.set("error_code", HttpServletResponse.SC_BAD_REQUEST).set("error_description", "未获得用户的角色信息"); |
| | | } |
| | | |
| | | //校验都通过,返回之前进行数据插入登录记录操作,刷新 token 不新增登录记录 |
| | | if (!grantType.equals("refresh_token")) { |
| | | this.saveLoginRecord(userInfo); |
| | | } |
| | | //返回数据 |
| | | return TokenUtil.createAuthInfo(userInfo); |
| | | } |
| | | |
| | | /** |
| | | * 新增登录记录信息 |
| | | * @param userInfo |
| | | */ |
| | | private void saveLoginRecord(UserInfo userInfo) { |
| | | //创建对象 |
| | | LoginRecord loginRecord = new LoginRecord(); |
| | | //request 对象获取 |
| | | ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); |
| | | HttpServletRequest request = requestAttributes.getRequest(); |
| | | //数据封装 |
| | | loginRecord.setCreateTime(new Date()); |
| | | loginRecord.setServerIp(serverConfig.getServerIp()); |
| | | // 主机名没配时会卡死 |
| | | // loginRecord.setServerHost(serverConfig.getServerHostName()); |
| | | loginRecord.setRequestUri(request.getRequestURI()); |
| | | loginRecord.setRemoteIp(request.getRemoteAddr()); |
| | | loginRecord.setDeptId(userInfo.getUser().getDeptId()); |
| | | loginRecord.setUserId(userInfo.getUser().getId()); |
| | | loginRecord.setType("2"); |
| | | loginRecord.setCreateBy(userInfo.getUser().getRealName()); |
| | | //新增 |
| | | loginRecordService.save(loginRecord); |
| | | } |
| | | |
| | | |
| | | @GetMapping("/oauth/logout") |
| | | @ApiLog("用户登出") |