feat: 项目结构重构
This commit is contained in:
52
dolphin-authorize/pom.xml
Normal file
52
dolphin-authorize/pom.xml
Normal file
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>day.gitlab</groupId>
|
||||
<artifactId>dolphin-backend</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>dolphin-authorize</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<dependencies>
|
||||
<!-- Project -->
|
||||
<dependency>
|
||||
<groupId>day.gitlab</groupId>
|
||||
<artifactId>dolphin-module-rbac</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- Spring Boot -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-webmvc</artifactId>
|
||||
</dependency>
|
||||
<!-- MyBatis -->
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-spring-boot4-starter</artifactId>
|
||||
</dependency>
|
||||
<!-- Lombok -->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@ -0,0 +1,8 @@
|
||||
package day.gitlab.dolphin.authorize.constants;
|
||||
|
||||
public class Exceptions {
|
||||
|
||||
public static final String USERNAME_OR_PASSWORD_INCORRECT = "00010101";
|
||||
|
||||
public static final String USER_NOT_ENABLED = "00010102";
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
package day.gitlab.dolphin.authorize.controller;
|
||||
|
||||
import day.gitlab.dolphin.authorize.controller.dto.LoginDTO;
|
||||
import day.gitlab.dolphin.authorize.controller.vo.TokenPair;
|
||||
import day.gitlab.dolphin.authorize.controller.vo.UserInfoVO;
|
||||
import day.gitlab.dolphin.authorize.service.AuthorizeService;
|
||||
import day.gitlab.dolphin.common.security.annotation.AuthorityIgnore;
|
||||
import day.gitlab.dolphin.common.web.entity.ApiResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/authorize")
|
||||
public class AuthorizeController {
|
||||
|
||||
private final AuthorizeService authorizeService;
|
||||
|
||||
@AuthorityIgnore
|
||||
@PostMapping("/login")
|
||||
public ApiResponse<TokenPair> login(@RequestBody LoginDTO loginDTO) {
|
||||
return ApiResponse.success(authorizeService.login(loginDTO));
|
||||
}
|
||||
|
||||
@GetMapping("/getUserInfo")
|
||||
public ApiResponse<UserInfoVO> getUserInfo() {
|
||||
return ApiResponse.success(authorizeService.getUserInfo());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package day.gitlab.dolphin.authorize.controller.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LoginDTO {
|
||||
|
||||
private String username;
|
||||
|
||||
private String password;
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
package day.gitlab.dolphin.authorize.controller.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TokenPair {
|
||||
|
||||
private String accessToken;
|
||||
|
||||
private String refreshToken;
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
package day.gitlab.dolphin.authorize.controller.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class UserInfoVO {
|
||||
|
||||
private String id;
|
||||
|
||||
private String username;
|
||||
|
||||
private List<String> authorities;
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package day.gitlab.dolphin.authorize.service;
|
||||
|
||||
import day.gitlab.dolphin.authorize.controller.dto.LoginDTO;
|
||||
import day.gitlab.dolphin.authorize.controller.vo.TokenPair;
|
||||
import day.gitlab.dolphin.authorize.controller.vo.UserInfoVO;
|
||||
|
||||
public interface AuthorizeService {
|
||||
|
||||
TokenPair login(LoginDTO loginDTO);
|
||||
|
||||
UserInfoVO getUserInfo();
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
package day.gitlab.dolphin.authorize.service.impl;
|
||||
|
||||
import day.gitlab.dolphin.common.security.AuthenticationProvider;
|
||||
import day.gitlab.dolphin.common.security.UserPrincipal;
|
||||
import day.gitlab.dolphin.module.rbac.entity.Role;
|
||||
import day.gitlab.dolphin.module.rbac.entity.User;
|
||||
import day.gitlab.dolphin.module.rbac.mapper.RoleMapper;
|
||||
import day.gitlab.dolphin.module.rbac.mapper.UserMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class AuthorizationProviderImpl implements AuthenticationProvider {
|
||||
|
||||
private final UserMapper userMapper;
|
||||
private final RoleMapper roleMapper;
|
||||
|
||||
@Override
|
||||
public UserPrincipal getUserPrincipal(String userId) {
|
||||
User user = userMapper.selectById(userId);
|
||||
Objects.requireNonNull(user);
|
||||
|
||||
return UserPrincipal.builder()
|
||||
.id(user.getId())
|
||||
.username(user.getUsername())
|
||||
.nickname(user.getNickname())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getUserAuthorities(String userId) {
|
||||
List<Role> roles = roleMapper.findAllByUserId(userId);
|
||||
return roles.stream().map(Role::getCode).toList();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,54 @@
|
||||
package day.gitlab.dolphin.authorize.service.impl;
|
||||
|
||||
import day.gitlab.dolphin.authorize.constants.Exceptions;
|
||||
import day.gitlab.dolphin.authorize.controller.dto.LoginDTO;
|
||||
import day.gitlab.dolphin.authorize.controller.vo.TokenPair;
|
||||
import day.gitlab.dolphin.authorize.controller.vo.UserInfoVO;
|
||||
import day.gitlab.dolphin.authorize.service.AuthorizeService;
|
||||
import day.gitlab.dolphin.common.core.util.BCrypt;
|
||||
import day.gitlab.dolphin.common.security.Authentication;
|
||||
import day.gitlab.dolphin.common.security.SecurityContextHolder;
|
||||
import day.gitlab.dolphin.common.security.jwt.JwtInfo;
|
||||
import day.gitlab.dolphin.common.web.i18n.MessagesHelper;
|
||||
import day.gitlab.dolphin.module.rbac.entity.User;
|
||||
import day.gitlab.dolphin.module.rbac.enums.UserEnabled;
|
||||
import day.gitlab.dolphin.module.rbac.mapper.UserMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class AuthorizeServiceImpl implements AuthorizeService {
|
||||
|
||||
private final JwtInfo jwtInfo;
|
||||
|
||||
private final UserMapper userMapper;
|
||||
|
||||
private final MessagesHelper messagesHelper;
|
||||
|
||||
@Override
|
||||
public TokenPair login(LoginDTO loginDTO) {
|
||||
User dbUser = userMapper.findByUsername(loginDTO.getUsername());
|
||||
if (dbUser == null || !BCrypt.checkpw(loginDTO.getPassword(), dbUser.getPassword())) {
|
||||
throw messagesHelper.newBusinessException(Exceptions.USERNAME_OR_PASSWORD_INCORRECT);
|
||||
}
|
||||
if (!UserEnabled.ENABLED.equals(dbUser.getEnabled())) {
|
||||
throw messagesHelper.newBusinessException(Exceptions.USER_NOT_ENABLED);
|
||||
}
|
||||
|
||||
return TokenPair.builder()
|
||||
.accessToken(jwtInfo.generateAccessToken(dbUser.getId()))
|
||||
.refreshToken(jwtInfo.generateRefreshToken(dbUser.getId()))
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserInfoVO getUserInfo() {
|
||||
Authentication authentication = SecurityContextHolder.getAuthentication();
|
||||
return UserInfoVO.builder()
|
||||
.id(authentication.getUserPrincipal().getId())
|
||||
.username(authentication.getUserPrincipal().getNickname())
|
||||
.authorities(authentication.getUserAuthorities())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user