diff --git a/dolphin-commons/dolphin-common-core/pom.xml b/dolphin-commons/dolphin-common-core/pom.xml index b66d716..3086df4 100644 --- a/dolphin-commons/dolphin-common-core/pom.xml +++ b/dolphin-commons/dolphin-common-core/pom.xml @@ -12,14 +12,17 @@ jar + org.springframework.boot spring-boot-starter-web + cn.hutool.v7 hutool-all + org.projectlombok lombok diff --git a/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/constants/Constants.java b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/constants/Constants.java index cce7b0a..9ece4e6 100644 --- a/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/constants/Constants.java +++ b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/constants/Constants.java @@ -1,8 +1,4 @@ package day.gitlab.dolphin.common.core.constants; public class Constants { - - public static final String SUCCESS = "success"; - - public static final String FAILURE = "failure"; } diff --git a/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/entity/Result.java b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/entity/Result.java index e357c32..089f7d7 100644 --- a/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/entity/Result.java +++ b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/entity/Result.java @@ -2,54 +2,62 @@ package day.gitlab.dolphin.common.core.entity; import day.gitlab.dolphin.common.core.exception.BusinessException; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.function.Supplier; - -import static day.gitlab.dolphin.common.core.constants.Constants.FAILURE; -import static day.gitlab.dolphin.common.core.constants.Constants.SUCCESS; - @Data -@Builder @NoArgsConstructor @AllArgsConstructor -public class Result { +public class Result { - private int code; + public static final String SUCCESS = "00000000"; + public static final String FAILURE = "99999999"; + public static final String SUCCESS_MESSAGE = "success"; + public static final String FAILURE_MESSAGE = "failure"; + + private String code; private String message; + private T data; + private long timestamp; - private Object data; + // ========== 通用响应方法 ========== - public static Result success() { - return Result.builder().code(200).message(SUCCESS).build(); + public static Result result(String code, String message, T data) { + return new Result<>(code, message, data, System.currentTimeMillis()); } - public static Result success(Object data) { - Result result = Result.builder().code(200).message(SUCCESS).build(); - if (data instanceof Supplier) { - result.setData(((Supplier) data).get()); - } else { - result.setData(data); - } - return result; + // ========== 成功响应方法 ========== + + public static Result success() { + return result(SUCCESS, SUCCESS_MESSAGE, null); } - public static Result failure() { - return Result.builder().code(500).message(FAILURE).build(); + public static Result success(T data) { + return result(SUCCESS, SUCCESS_MESSAGE, data); } - public static Result failure(String message) { - return Result.builder().code(500).message(message).build(); + public static Result success(String message, T data) { + return result(SUCCESS, message, data); } - public static Result failure(int code, String message) { - return Result.builder().code(code).message(message).build(); + // ========== 失败响应方法 ========== + + public static Result failure() { + return result(FAILURE, FAILURE_MESSAGE, null); } - public static Result failure(BusinessException businessException) { - return Result.builder().code(businessException.getCode()).message(businessException.getMessage()).build(); + public static Result failure(String message) { + return result(FAILURE, message, null); + } + + public static Result failure(String code, String message) { + return result(code, message, null); + } + + // ========== 异常响应方法 ========== + + public static Result failure(BusinessException e) { + return result(e.getCode(), e.getMessage(), null); } } diff --git a/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/exception/BusinessException.java b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/exception/BusinessException.java index f7270cd..6a710eb 100644 --- a/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/exception/BusinessException.java +++ b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/exception/BusinessException.java @@ -5,14 +5,9 @@ import lombok.Getter; @Getter public class BusinessException extends RuntimeException { - private final int code; + private final String code; - public BusinessException(String message) { - super(message); - this.code = 500; - } - - public BusinessException(int code, String message) { + public BusinessException(String code, String message) { super(message); this.code = code; } diff --git a/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/exception/GlobalExceptionHandler.java b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/exception/GlobalExceptionHandler.java index 6ecc4e5..a3a5395 100644 --- a/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/exception/GlobalExceptionHandler.java +++ b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/exception/GlobalExceptionHandler.java @@ -8,12 +8,12 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; public class GlobalExceptionHandler { @ExceptionHandler(value = BusinessException.class) - public Result handleBusinessException(BusinessException e) { + public Result handleBusinessException(BusinessException e) { return Result.failure(e); } @ExceptionHandler(value = Exception.class) - public Result handleException(Exception e) { + public Result handleException(Exception e) { return Result.failure(e.getMessage()); } } diff --git a/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/i18n/MessagesConfiguration.java b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/i18n/MessagesConfiguration.java new file mode 100644 index 0000000..4b2c72a --- /dev/null +++ b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/i18n/MessagesConfiguration.java @@ -0,0 +1,29 @@ +package day.gitlab.dolphin.common.core.i18n; + +import org.springframework.context.MessageSource; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver; + +import java.util.Locale; + +@Configuration +public class MessagesConfiguration { + + @Bean + public MessageSource messageSource() { + ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); + messageSource.setBasename("i18n.messages"); + messageSource.setDefaultEncoding("UTF-8"); + return messageSource; + } + + @Bean + public LocaleResolver localeResolver() { + AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver(); + localeResolver.setDefaultLocale(Locale.ENGLISH); + return localeResolver; + } +} diff --git a/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/i18n/MessagesHelper.java b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/i18n/MessagesHelper.java new file mode 100644 index 0000000..94aa084 --- /dev/null +++ b/dolphin-commons/dolphin-common-core/src/main/java/day/gitlab/dolphin/common/core/i18n/MessagesHelper.java @@ -0,0 +1,51 @@ +package day.gitlab.dolphin.common.core.i18n; + +import day.gitlab.dolphin.common.core.entity.Result; +import day.gitlab.dolphin.common.core.exception.BusinessException; +import lombok.Getter; +import org.springframework.context.MessageSource; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.stereotype.Component; + +import java.util.Locale; + +@Getter +@Component +public class MessagesHelper { + + private final MessageSource messageSource; + + public MessagesHelper(MessageSource messageSource) { + this.messageSource = messageSource; + } + + // ========== 国际化消息 ========== + + public Locale getCurrentLocale() { + return LocaleContextHolder.getLocale(); + } + + public String getMessage(String code, Object... args) { + return messageSource.getMessage(code, args, getCurrentLocale()); + } + + public String getMessage(String code, String defaultMessage, Object... args) { + return messageSource.getMessage(code, args, defaultMessage, getCurrentLocale()); + } + + // ========== 成功响应方法 ========== + + public Result success() { + return Result.success(); + } + + public Result success(T data) { + return Result.success(data); + } + + // ========== 业务异常快捷方法 ========== + + public BusinessException newBusinessException(String code, Object... args) { + return new BusinessException(code, getMessage(code, args)); + } +} diff --git a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/AuthenticationFilter.java b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/AuthenticationFilter.java index 9a4b0cd..87c9222 100644 --- a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/AuthenticationFilter.java +++ b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/AuthenticationFilter.java @@ -48,7 +48,7 @@ public class AuthenticationFilter extends OncePerRequestFilter { SecurityContextHolder.setAuthentication(initialize); filterChain.doFilter(request, response); } catch (BusinessException e) { - response.setStatus(e.getCode()); + response.setStatus(200); response.setContentType(MediaType.APPLICATION_JSON_VALUE); response.setCharacterEncoding("UTF-8"); response.getWriter().write(new ObjectMapper().writeValueAsString(Result.failure(e))); diff --git a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/annotation/AuthorityCheckAspect.java b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/annotation/AuthorityCheckAspect.java index 7357b5e..9a42886 100644 --- a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/annotation/AuthorityCheckAspect.java +++ b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/annotation/AuthorityCheckAspect.java @@ -1,31 +1,38 @@ package day.gitlab.dolphin.common.security.annotation; +import day.gitlab.dolphin.common.core.i18n.MessagesHelper; import day.gitlab.dolphin.common.security.Authentication; import day.gitlab.dolphin.common.security.SecurityContextHolder; -import day.gitlab.dolphin.common.security.exception.NotAuthorityException; -import day.gitlab.dolphin.common.security.exception.NotLoginException; +import day.gitlab.dolphin.common.security.constants.Exceptions; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; +import org.springframework.stereotype.Component; @Aspect +@Component public class AuthorityCheckAspect { + private final MessagesHelper messagesHelper; + + public AuthorityCheckAspect(MessagesHelper messagesHelper) { + this.messagesHelper = messagesHelper; + } + @Before("@annotation(authorityCheck)") public void check(JoinPoint joinPoint, AuthorityCheck authorityCheck) { Authentication authentication = SecurityContextHolder.getAuthentication(); if (authentication == null) { - throw new NotLoginException(); + throw messagesHelper.newBusinessException(Exceptions.NOT_LOGIN); } - // AuthorityCheck的type如果是AND,输出1 if (authorityCheck.type() == AuthorityType.AND) { if (!authentication.hasAllAuthorities(authorityCheck.value())) { - throw new NotAuthorityException(authorityCheck.value()); + throw messagesHelper.newBusinessException(Exceptions.NOT_AUTHORITY); } } else if (authorityCheck.type() == AuthorityType.OR) { if (!authentication.hasAnyAuthorities(authorityCheck.value())) { - throw new NotAuthorityException(authorityCheck.value()); + throw messagesHelper.newBusinessException(Exceptions.NOT_AUTHORITY); } } } diff --git a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/constants/Exceptions.java b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/constants/Exceptions.java new file mode 100644 index 0000000..db6973c --- /dev/null +++ b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/constants/Exceptions.java @@ -0,0 +1,12 @@ +package day.gitlab.dolphin.common.security.constants; + +public class Exceptions { + + public static final String NOT_LOGIN = "00010001"; + + public static final String TOKEN_INVALID = "00010002"; + + public static final String TOKEN_EXPIRED = "00010003"; + + public static final String NOT_AUTHORITY = "00010004"; +} diff --git a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/AuthenticationException.java b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/AuthenticationException.java deleted file mode 100644 index 239cc07..0000000 --- a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/AuthenticationException.java +++ /dev/null @@ -1,12 +0,0 @@ -package day.gitlab.dolphin.common.security.exception; - -import day.gitlab.dolphin.common.core.exception.BusinessException; -import lombok.Getter; - -@Getter -public class AuthenticationException extends BusinessException { - - public AuthenticationException(int code, String message) { - super(code, message); - } -} diff --git a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/InvalidTokenException.java b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/InvalidTokenException.java deleted file mode 100644 index 5210b02..0000000 --- a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/InvalidTokenException.java +++ /dev/null @@ -1,14 +0,0 @@ -package day.gitlab.dolphin.common.security.exception; - -import lombok.Getter; - -@Getter -public class InvalidTokenException extends AuthenticationException { - - private final String token; - - public InvalidTokenException(String token) { - super(401, "Unauthorized: Invalid token"); - this.token = token; - } -} diff --git a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/NotAuthorityException.java b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/NotAuthorityException.java deleted file mode 100644 index 1928c3a..0000000 --- a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/NotAuthorityException.java +++ /dev/null @@ -1,14 +0,0 @@ -package day.gitlab.dolphin.common.security.exception; - -import lombok.Getter; - -@Getter -public class NotAuthorityException extends AuthenticationException { - - private final String[] userAuthorities; - - public NotAuthorityException(String[] userAuthorities) { - super(403, "Forbidden: Insufficient permissions"); - this.userAuthorities = userAuthorities; - } -} diff --git a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/NotLoginException.java b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/NotLoginException.java deleted file mode 100644 index a36d7de..0000000 --- a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/NotLoginException.java +++ /dev/null @@ -1,8 +0,0 @@ -package day.gitlab.dolphin.common.security.exception; - -public class NotLoginException extends AuthenticationException{ - - public NotLoginException() { - super(401, "Unauthorized"); - } -} diff --git a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/TokenExpiredException.java b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/TokenExpiredException.java deleted file mode 100644 index d757d5b..0000000 --- a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/exception/TokenExpiredException.java +++ /dev/null @@ -1,20 +0,0 @@ -package day.gitlab.dolphin.common.security.exception; - -import lombok.Getter; - -import java.util.Date; - -@Getter -public class TokenExpiredException extends AuthenticationException { - - private final String token; - - private final Date expiration; - - public TokenExpiredException(String token, Date expiration) { - super(401, "Unauthorized: Token expired"); - this.token = token; - this.expiration = expiration; - } - -} diff --git a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/jwt/JwtAuthenticationInitialize.java b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/jwt/JwtAuthenticationInitialize.java index c56c48a..a1c7b39 100644 --- a/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/jwt/JwtAuthenticationInitialize.java +++ b/dolphin-commons/dolphin-common-security/src/main/java/day/gitlab/dolphin/common/security/jwt/JwtAuthenticationInitialize.java @@ -1,14 +1,13 @@ package day.gitlab.dolphin.common.security.jwt; import com.fasterxml.jackson.databind.ObjectMapper; +import day.gitlab.dolphin.common.core.i18n.MessagesHelper; import day.gitlab.dolphin.common.security.Authentication; import day.gitlab.dolphin.common.security.AuthenticationInitialize; import day.gitlab.dolphin.common.security.AuthenticationProvider; import day.gitlab.dolphin.common.security.UserPrincipal; import day.gitlab.dolphin.common.security.config.SecurityConfig; -import day.gitlab.dolphin.common.security.exception.InvalidTokenException; -import day.gitlab.dolphin.common.security.exception.NotLoginException; -import day.gitlab.dolphin.common.security.exception.TokenExpiredException; +import day.gitlab.dolphin.common.security.constants.Exceptions; import io.jsonwebtoken.Claims; import jakarta.servlet.http.HttpServletRequest; import org.springframework.data.redis.core.StringRedisTemplate; @@ -29,12 +28,16 @@ public class JwtAuthenticationInitialize implements AuthenticationInitialize { private final AuthenticationProvider authenticationProvider; + private final MessagesHelper messagesHelper; + public JwtAuthenticationInitialize(SecurityConfig securityConfig, StringRedisTemplate stringRedisTemplate, - AuthenticationProvider authenticationProvider) { + AuthenticationProvider authenticationProvider, + MessagesHelper messagesHelper) { this.securityConfig = securityConfig; this.stringRedisTemplate = stringRedisTemplate; this.authenticationProvider = authenticationProvider; + this.messagesHelper = messagesHelper; } @Override @@ -44,7 +47,7 @@ public class JwtAuthenticationInitialize implements AuthenticationInitialize { // 1、获取Token String token = jwt.getTokenFromRequest(request); if (token == null) { - throw new NotLoginException(); + throw messagesHelper.newBusinessException(Exceptions.NOT_LOGIN); } // 2、解析Token,获取用户ID String userId; @@ -56,11 +59,11 @@ public class JwtAuthenticationInitialize implements AuthenticationInitialize { Objects.requireNonNull(userId); Objects.requireNonNull(expiration); } catch (Exception e) { - throw new InvalidTokenException(token); + throw messagesHelper.newBusinessException(Exceptions.TOKEN_INVALID); } // 3、判断是否过期 if (expiration.before(new Date())) { - throw new TokenExpiredException(token, expiration); + throw messagesHelper.newBusinessException(Exceptions.TOKEN_EXPIRED); } // 4、从Redis或数据库中加载用户信息 UserPrincipal userPrincipal; @@ -83,7 +86,7 @@ public class JwtAuthenticationInitialize implements AuthenticationInitialize { userAuthorities = list.stream().map(Object::toString).collect(Collectors.toList()); } } catch (Exception e) { - throw new InvalidTokenException(token); + throw messagesHelper.newBusinessException(Exceptions.TOKEN_INVALID); } return new Authentication(userPrincipal, userAuthorities); diff --git a/dolphin-compose/src/main/resources/i18n/messages.properties b/dolphin-compose/src/main/resources/i18n/messages.properties new file mode 100644 index 0000000..8a13e00 --- /dev/null +++ b/dolphin-compose/src/main/resources/i18n/messages.properties @@ -0,0 +1,8 @@ +00000000=success +99999999=failure +00010001=Unauthorized +00010002=Token invalid +00010003=Token expired +00010004=Forbidden +00010101=Username or password is incorrect +00010102=User is not enabled \ No newline at end of file diff --git a/dolphin-compose/src/main/resources/i18n/messages_zh_CN.properties b/dolphin-compose/src/main/resources/i18n/messages_zh_CN.properties new file mode 100644 index 0000000..6d73830 --- /dev/null +++ b/dolphin-compose/src/main/resources/i18n/messages_zh_CN.properties @@ -0,0 +1,13 @@ + +00000000=成功 +99999999=失败 + +# 00 系统 +# 0001 系统->认证授权 +00010001=未授权 +00010002=Token 无效 +00010003=Token 已过期 +00010004=权限不足 +# 000101 系统->认证授权->登录 +00010101=用户名或密码错误 +00010102=用户已被禁用 diff --git a/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/constants/Exceptions.java b/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/constants/Exceptions.java new file mode 100644 index 0000000..c75cea7 --- /dev/null +++ b/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/constants/Exceptions.java @@ -0,0 +1,8 @@ +package day.gitlab.dolphin.auth.constants; + +public class Exceptions { + + public static final String USERNAME_OR_PASSWORD_INCORRECT = "00010101"; + + public static final String USER_NOT_ENABLED = "00010102"; +} diff --git a/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/controller/AuthController.java b/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/controller/AuthController.java index 5957b8f..c88683e 100644 --- a/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/controller/AuthController.java +++ b/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/controller/AuthController.java @@ -1,6 +1,7 @@ package day.gitlab.dolphin.auth.controller; import day.gitlab.dolphin.auth.entity.dto.LoginDTO; +import day.gitlab.dolphin.auth.entity.vo.LoginVO; import day.gitlab.dolphin.auth.service.AuthService; import day.gitlab.dolphin.common.core.entity.Result; import day.gitlab.dolphin.common.security.annotation.AuthorityIgnore; @@ -19,7 +20,7 @@ public class AuthController { @AuthorityIgnore @PostMapping("/login") - public Result login(@RequestBody LoginDTO loginDTO) { + public Result login(@RequestBody LoginDTO loginDTO) { return Result.success(authService.login(loginDTO)); } } diff --git a/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/service/impl/AuthServiceImpl.java b/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/service/impl/AuthServiceImpl.java index cfa0175..ccb0775 100644 --- a/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/service/impl/AuthServiceImpl.java +++ b/dolphin-modules/dolphin-module-auth/src/main/java/day/gitlab/dolphin/auth/service/impl/AuthServiceImpl.java @@ -1,10 +1,11 @@ package day.gitlab.dolphin.auth.service.impl; import cn.hutool.v7.crypto.digest.BCrypt; +import day.gitlab.dolphin.auth.constants.Exceptions; import day.gitlab.dolphin.auth.entity.dto.LoginDTO; import day.gitlab.dolphin.auth.entity.vo.LoginVO; import day.gitlab.dolphin.auth.service.AuthService; -import day.gitlab.dolphin.common.core.exception.BusinessException; +import day.gitlab.dolphin.common.core.i18n.MessagesHelper; import day.gitlab.dolphin.common.security.AuthenticationProvider; import day.gitlab.dolphin.common.security.UserPrincipal; import day.gitlab.dolphin.common.security.jwt.JwtInfo; @@ -28,14 +29,17 @@ public class AuthServiceImpl implements AuthService, AuthenticationProvider { @Resource private JwtInfo jwtInfo; + @Resource + private MessagesHelper messagesHelper; + @Override public LoginVO login(LoginDTO loginDTO) { User dbUser = userMapper.findByUsername(loginDTO.getUsername()); if (dbUser == null || !BCrypt.checkpw(loginDTO.getPassword(), dbUser.getPassword())) { - throw new BusinessException("Username or password is incorrect"); + throw messagesHelper.newBusinessException(Exceptions.USERNAME_OR_PASSWORD_INCORRECT); } if (!UserEnabled.ENABLED.equals(dbUser.getEnabled())) { - throw new BusinessException("User is not enabled"); + throw messagesHelper.newBusinessException(Exceptions.USER_NOT_ENABLED); } return LoginVO.builder()