116 lines
4.6 KiB
Java
116 lines
4.6 KiB
Java
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<User> 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<String, Object> 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<User> 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);
|
|
}
|
|
}
|
|
}
|