package xin.merlin.myblog_server.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.benmanes.caffeine.cache.Cache; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import xin.merlin.myblog_server.config.LoginDetails; import xin.merlin.myblog_server.entity.User; import xin.merlin.myblog_server.service.CacheService; import xin.merlin.myblog_server.service.LoginService; import xin.merlin.myblog_server.service.impl.UserServiceImpl; import xin.merlin.myblog_server.utils.JwtUtil; import xin.merlin.myblog_server.utils.RequestBack; import xin.merlin.myblog_server.utils.SHA256Util; import xin.merlin.myblog_server.utils.enums.ResultCode; import java.util.Map; @RestController @RequiredArgsConstructor public class LoginController { @Autowired private LoginDetails loginDetails; @Autowired private UserServiceImpl userServiceImpl; @Autowired private SHA256Util sha256Util; @Autowired private JwtUtil jwtUtil; private final LoginService loginService; private final HttpServletRequest request; @Autowired private CacheService cacheService; // 登录逻辑 @PostMapping("/login") public RequestBack login(@RequestBody User user) { try { // CustomUserDetails userDetails = loginDetails // .loadUserByUsername(user.getAccount()); // user.setPassword(sha256Util // .encryptPassword(user.getPassword())); // // if (userDetails == null) { // return RequestBack.success(ResultCode.USER_NOT_FOUND); // } // //System.out.println(account.getU_password()); // // 验证密码 // if(!user.getPassword().equals(userDetails.getPassword())) // return RequestBack.success(ResultCode.USER_PASSWORD_ERROR,null); // // //System.out.println(userDetails.getU_id()); // // 生成token // String token = jwtUtil.generateToken(user.getAccount(),userDetails.getU_id()); // // QueryWrapper queryWrapper = new QueryWrapper<>(); // queryWrapper.eq("account", user.getAccount()); // User userinfo = userServiceImpl.getOne(queryWrapper); // userinfo.setIp(request.getRemoteAddr()); // userServiceImpl.updateById(userinfo); // userinfo.setPassword(null); // // return RequestBack.success(ResultCode.SUCCESS, Map.of("token",token,"token_type","Bearer","role",user.getAccount().equals("admin")?"admin":"User","userInfo",userinfo)); Map result = loginService.login(user, request.getRemoteAddr()); if(result == null) return RequestBack.success(ResultCode.USER_PASSWORD_ERROR); return RequestBack.success(ResultCode.SUCCESS,result); } catch (UsernameNotFoundException e) { System.out.println(e.getMessage()); return RequestBack.fail(ResultCode.SERVER_ERROR); } } // 注册逻辑 @PostMapping("/register") public RequestBack register(@RequestBody User user, @RequestParam String c_id) { if(c_id == null || cacheService.getWaitingList().getIfPresent(c_id)==null) return RequestBack.fail(ResultCode.USER_VERIFICATION_ERROR); try { // QueryWrapper queryWrapper = new QueryWrapper<>(); // queryWrapper.eq("account", user.getAccount()); // if(userServiceImpl.exists(queryWrapper)) return RequestBack.success(ResultCode.USER_EXIST,null); // // // 注册信息初始化 // user.setIp(request.getRemoteAddr()); // user.setPassword(sha256Util.encryptPassword(user.getPassword())); // // // 注册 // userServiceImpl.save(user); // cacheService.getWaitingList().invalidate(c_id); // // return RequestBack.success(ResultCode.SUCCESS,null); user.setIp(request.getRemoteAddr()); RequestBack result = loginService.register(user); if(result.getCode() == 200) { cacheService.getWaitingList().invalidate(c_id); } return result; } catch (Exception e) { System.out.println(e.getMessage()); return RequestBack.fail(ResultCode.SERVER_ERROR); } } }