feat: 开发中...
This commit is contained in:
@@ -28,7 +28,7 @@ public class AuthenticationFilter extends OncePerRequestFilter {
|
||||
filterChain.doFilter(request, response);
|
||||
return;
|
||||
}
|
||||
Authentication authentication = (Authentication) session.getAttribute("authenticate");
|
||||
Authentication authentication = (Authentication) session.getAttribute("Authentication");
|
||||
if (authentication == null) {
|
||||
filterChain.doFilter(request, response);
|
||||
return;
|
||||
|
@@ -8,7 +8,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@Tag(name = "AttachController", description = "附件相关接口")
|
||||
@RestController
|
||||
@RequestMapping(value = "/api/v1/attach",produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
@RequestMapping(value = "/api/v1/attach", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public class AttachController {
|
||||
@PostMapping("/")
|
||||
public ResponseVO<Void> createAttach(@RequestBody MultipartFile file) {
|
||||
|
@@ -28,6 +28,12 @@ public class UserController {
|
||||
@Resource
|
||||
private IUserService userService;
|
||||
|
||||
@PostMapping("/")
|
||||
@Operation(summary = "注册用户")
|
||||
public ResponseVO<UserInfoResponseVO> registerUser(HttpServletRequest request, @RequestBody @Valid UserCreateRequireVO requireVO) {
|
||||
return userService.registerUser(request, requireVO);
|
||||
}
|
||||
|
||||
@PostMapping("/login")
|
||||
@Operation(summary = "登录用户")
|
||||
public ResponseVO<Void> loginUser(HttpServletRequest request, @RequestBody @Valid UserLoginRequireVO requireVO) {
|
||||
@@ -40,18 +46,11 @@ public class UserController {
|
||||
return userService.getCurrentUserInfo();
|
||||
}
|
||||
|
||||
@PostMapping("/")
|
||||
@Operation(summary = "注册用户")
|
||||
public ResponseVO<UserInfoResponseVO> register(@RequestBody @Valid UserCreateRequireVO requireVO) {
|
||||
return userService.createUser(requireVO);
|
||||
}
|
||||
|
||||
@PutMapping("/{userID}/")
|
||||
@Operation(summary = "更新用户信息")
|
||||
public ResponseVO<Void> updateUser(
|
||||
@Parameter(description = "用户ID") @PathVariable UUID userID,
|
||||
@Parameter(description = "用户信息") @RequestBody @Valid UserUpdateRequireVO requireVO
|
||||
) {
|
||||
@Parameter(description = "用户信息") @RequestBody @Valid UserUpdateRequireVO requireVO) {
|
||||
return userService.updateUser(userID, requireVO);
|
||||
}
|
||||
|
||||
@@ -59,8 +58,7 @@ public class UserController {
|
||||
@Operation(summary = "查询用户列表")
|
||||
public ResponseVO<PageableVO<UserInfoResponseVO>> getAllUserInfo(
|
||||
@Parameter(description = "页码", example = "0") int page,
|
||||
@Parameter(description = "大小", example = "10") int size
|
||||
) {
|
||||
@Parameter(description = "大小", example = "10") int size) {
|
||||
return userService.getAllUserInfo(PageRequest.of(page, Math.min(size, 100)));
|
||||
}
|
||||
|
||||
@@ -75,8 +73,7 @@ public class UserController {
|
||||
public ResponseVO<PageableVO<BlogInfoResponseVO>> getUserBlogList(
|
||||
@Parameter(description = "用户ID") @PathVariable UUID userID,
|
||||
@Parameter(description = "页码", example = "0") int page,
|
||||
@Parameter(description = "大小", example = "10") int size
|
||||
) {
|
||||
@Parameter(description = "大小", example = "10") int size) {
|
||||
return userService.getUserBlogList(userID, PageRequest.of(page, Math.min(size, 100)));
|
||||
}
|
||||
|
||||
@@ -85,8 +82,7 @@ public class UserController {
|
||||
public ResponseVO<PageableVO<AttachInfoResponseVO>> getUserAttachList(
|
||||
@Parameter(description = "用户ID") @PathVariable UUID userID,
|
||||
@Parameter(description = "页码", example = "0") int page,
|
||||
@Parameter(description = "大小", example = "10") int size
|
||||
) {
|
||||
@Parameter(description = "大小", example = "10") int size) {
|
||||
return userService.getUserAttachList(userID, PageRequest.of(page, Math.min(size, 100)));
|
||||
}
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@ import cn.hamster3.application.blog.entity.BlogEntity;
|
||||
import cn.hamster3.application.blog.entity.UserEntity;
|
||||
import cn.hamster3.application.blog.vo.blog.BlogInfoResponseVO;
|
||||
import cn.hamster3.application.blog.vo.blog.BlogUpdateRequireVO;
|
||||
import cn.hamster3.application.blog.vo.user.UserInfoResponseVO;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingConstants;
|
||||
@@ -19,7 +20,18 @@ public interface BlogMapper {
|
||||
|
||||
@NotNull
|
||||
@SuppressWarnings("unused")
|
||||
default UUID map(@NotNull UserEntity value) {
|
||||
default UUID mapToUUID(@NotNull UserEntity value) {
|
||||
return value.getId();
|
||||
}
|
||||
|
||||
default UserInfoResponseVO mapToInfoVO(@NotNull UserEntity value) {
|
||||
return new UserInfoResponseVO(
|
||||
value.getId(),
|
||||
value.getEmail(),
|
||||
value.getNickname(),
|
||||
value.getRole(),
|
||||
value.getCreateTime(),
|
||||
value.getUpdateTime()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -15,12 +15,12 @@ import org.springframework.data.domain.Pageable;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface IUserService {
|
||||
@NotNull ResponseVO<UserInfoResponseVO> registerUser(@NotNull HttpServletRequest request, @NotNull UserCreateRequireVO requireVO);
|
||||
|
||||
@NotNull ResponseVO<Void> loginUser(@NotNull HttpServletRequest request, @NotNull UserLoginRequireVO requireVO);
|
||||
|
||||
@NotNull ResponseVO<UserInfoResponseVO> getCurrentUserInfo();
|
||||
|
||||
@NotNull ResponseVO<UserInfoResponseVO> createUser(@NotNull UserCreateRequireVO requireVO);
|
||||
|
||||
@NotNull ResponseVO<Void> updateUser(@NotNull UUID userID, @NotNull UserUpdateRequireVO requireVO);
|
||||
|
||||
@NotNull ResponseVO<PageableVO<UserInfoResponseVO>> getAllUserInfo(@NotNull Pageable pageable);
|
||||
|
@@ -56,34 +56,7 @@ public class UserService implements IUserService {
|
||||
private AuthenticationManager authenticationManager;
|
||||
|
||||
@Override
|
||||
public @NotNull ResponseVO<Void> loginUser(@NotNull HttpServletRequest request, @NotNull UserLoginRequireVO requireVO) {
|
||||
Authentication authenticate = authenticationManager.authenticate(
|
||||
new UsernamePasswordAuthenticationToken(requireVO.getEmail(), requireVO.getPassword())
|
||||
);
|
||||
log.info("authenticate: {}", authenticate);
|
||||
if (!authenticate.isAuthenticated()) {
|
||||
return ResponseVO.failed("login failed.");
|
||||
}
|
||||
HttpSession session = request.getSession();
|
||||
session.setAttribute("authenticate", authenticate);
|
||||
return ResponseVO.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull ResponseVO<UserInfoResponseVO> getCurrentUserInfo() {
|
||||
UUID uuid = BlogUtils.getCurrentUserUUID().orElse(null);
|
||||
if (uuid == null) {
|
||||
return ResponseVO.unauthorized();
|
||||
}
|
||||
return ResponseVO.success(
|
||||
userRepo.findById(uuid)
|
||||
.map(o -> userMapper.entityToInfoVO(o))
|
||||
.orElse(null)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull ResponseVO<UserInfoResponseVO> createUser(@NotNull UserCreateRequireVO requireVO) {
|
||||
public @NotNull ResponseVO<UserInfoResponseVO> registerUser(@NotNull HttpServletRequest request, @NotNull UserCreateRequireVO requireVO) {
|
||||
UserEntity entity = userMapper.voToEntity(requireVO);
|
||||
entity.setEmail(entity.getEmail().toLowerCase());
|
||||
|
||||
@@ -100,9 +73,40 @@ public class UserService implements IUserService {
|
||||
log.info("prepare to save userinfo: {}", entity);
|
||||
UserEntity save = userRepo.save(entity);
|
||||
|
||||
Authentication authenticate = authenticationManager.authenticate(
|
||||
new UsernamePasswordAuthenticationToken(requireVO.getEmail(), requireVO.getPassword())
|
||||
);
|
||||
HttpSession session = request.getSession();
|
||||
session.setAttribute("Authentication", authenticate);
|
||||
return ResponseVO.success("注册成功!", userMapper.entityToInfoVO(save));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull ResponseVO<Void> loginUser(@NotNull HttpServletRequest request, @NotNull UserLoginRequireVO requireVO) {
|
||||
Authentication authenticate = authenticationManager.authenticate(
|
||||
new UsernamePasswordAuthenticationToken(requireVO.getEmail(), requireVO.getPassword())
|
||||
);
|
||||
log.info("authenticate: {}", authenticate);
|
||||
if (!authenticate.isAuthenticated()) {
|
||||
return ResponseVO.failed("authenticate failed.");
|
||||
}
|
||||
HttpSession session = request.getSession();
|
||||
session.setAttribute("Authentication", authenticate);
|
||||
return ResponseVO.success("登录成功!", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull ResponseVO<UserInfoResponseVO> getCurrentUserInfo() {
|
||||
UUID uuid = BlogUtils.getCurrentUserUUID().orElse(null);
|
||||
if (uuid == null) {
|
||||
return ResponseVO.unauthorized();
|
||||
}
|
||||
return ResponseVO.success(
|
||||
userRepo.findById(uuid)
|
||||
.map(o -> userMapper.entityToInfoVO(o))
|
||||
.orElse(null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull ResponseVO<Void> updateUser(@NotNull UUID uuid, @NotNull UserUpdateRequireVO requireVO) {
|
||||
UserEntity userEntity = userRepo.findById(uuid).orElse(null);
|
||||
@@ -150,8 +154,7 @@ public class UserService implements IUserService {
|
||||
@Override
|
||||
public @NotNull ResponseVO<PageableVO<UserInfoResponseVO>> getAllUserInfo(@NotNull Pageable pageable) {
|
||||
return PageableVO.success(
|
||||
userRepo.findAll(pageable).map(o -> userMapper.entityToInfoVO(o))
|
||||
);
|
||||
userRepo.findAll(pageable).map(o -> userMapper.entityToInfoVO(o)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -165,15 +168,13 @@ public class UserService implements IUserService {
|
||||
public @NotNull ResponseVO<PageableVO<BlogInfoResponseVO>> getUserBlogList(@NotNull UUID userID, @NotNull Pageable pageable) {
|
||||
return PageableVO.success(
|
||||
blogRepo.findByCreator_IdOrderByCreateTimeDesc(userID, pageable)
|
||||
.map(o -> blogMapper.entityToInfoVO(o))
|
||||
);
|
||||
.map(o -> blogMapper.entityToInfoVO(o)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull ResponseVO<PageableVO<AttachInfoResponseVO>> getUserAttachList(@NotNull UUID userID, @NotNull Pageable pageable) {
|
||||
return PageableVO.success(
|
||||
attachRepo.findByCreator_IdOrderByCreateTimeDesc(userID, pageable)
|
||||
.map(o -> attachMapper.entityToInfoVO(o))
|
||||
);
|
||||
.map(o -> attachMapper.entityToInfoVO(o)));
|
||||
}
|
||||
}
|
||||
|
@@ -1,12 +1,10 @@
|
||||
package cn.hamster3.application.blog.vo.blog;
|
||||
|
||||
import cn.hamster3.application.blog.entity.BlogAttachEntity;
|
||||
import cn.hamster3.application.blog.entity.UserEntity;
|
||||
import cn.hamster3.application.blog.vo.user.UserInfoResponseVO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Data
|
||||
@@ -15,14 +13,14 @@ public class BlogInfoResponseVO {
|
||||
private Long id;
|
||||
private String title;
|
||||
private String abstracts;
|
||||
private String password;
|
||||
// private String password;
|
||||
private String content;
|
||||
private Boolean top;
|
||||
private Boolean publish;
|
||||
private Set<String> tags;
|
||||
private List<BlogAttachEntity> attachEntities;
|
||||
private UserEntity creator;
|
||||
private UserEntity updater;
|
||||
// private List<BlogAttachEntity> attachEntities;
|
||||
private UserInfoResponseVO creator;
|
||||
private UserInfoResponseVO updater;
|
||||
private Date createTime;
|
||||
private Date updateTime;
|
||||
}
|
||||
|
@@ -30,6 +30,6 @@ public class BlogUpdateRequireVO {
|
||||
|
||||
private Boolean publish;
|
||||
|
||||
@NotNull
|
||||
@NotNull(message = "标签不能为 null")
|
||||
private Set<String> tags;
|
||||
}
|
||||
|
@@ -14,8 +14,9 @@ public class UserCreateRequireVO {
|
||||
@Length(max = 64, message = "邮箱地址最大长度不能超过 64 字符!")
|
||||
private String email;
|
||||
@NotBlank(message = "昵称不能为空!")
|
||||
@Length(min = 1, max = 32, message = "用户昵称不能超过 32 个字符!")
|
||||
@Length(max = 32, message = "用户昵称不能超过 32 个字符!")
|
||||
private String nickname;
|
||||
@NotBlank(message = "密码不能为空!")
|
||||
@Length(min = 8, max = 32, message = "密码长度必须在 8~32 个字符之间!")
|
||||
private String password;
|
||||
}
|
||||
|
@@ -1,13 +1,10 @@
|
||||
package cn.hamster3.application.blog.vo.user;
|
||||
|
||||
import cn.hamster3.application.blog.constant.UserRole;
|
||||
import cn.hamster3.application.blog.entity.AttachEntity;
|
||||
import cn.hamster3.application.blog.entity.BlogEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@Data
|
||||
@@ -17,8 +14,8 @@ public class UserInfoResponseVO {
|
||||
private String email;
|
||||
private String nickname;
|
||||
private UserRole role;
|
||||
private List<BlogEntity> blogEntities;
|
||||
private List<AttachEntity> attachEntities;
|
||||
// private List<BlogEntity> blogEntities;
|
||||
// private List<AttachEntity> attachEntities;
|
||||
private Date createTime;
|
||||
private Date updateTime;
|
||||
}
|
||||
|
Reference in New Issue
Block a user