feat: add exception
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
package aplp.backend.core.common.exception;
|
||||
|
||||
public class DomainException extends RuntimeException {
|
||||
|
||||
private final ErrorCode code;
|
||||
|
||||
public DomainException(ErrorCode code, String message) {
|
||||
super(message);
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public ErrorCode code() {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package aplp.backend.core.common.exception;
|
||||
|
||||
public enum ErrorCode {
|
||||
|
||||
INVALID_ARGUMENT(400),
|
||||
VALIDATION_FAILED(400),
|
||||
MALFORMED_REQUEST(400),
|
||||
UNAUTHENTICATED(401),
|
||||
INVALID_CREDENTIALS(401),
|
||||
INVALID_REFRESH_TOKEN(401),
|
||||
ACCESS_DENIED(403),
|
||||
EMAIL_ALREADY_EXISTS(409),
|
||||
USER_NOT_FOUND(404),
|
||||
LEARNER_NOT_FOUND(404),
|
||||
INTERNAL_ERROR(500);
|
||||
|
||||
private final int status;
|
||||
|
||||
ErrorCode(int status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public int status() {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package aplp.backend.core.common.response;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
public record ApiError(
|
||||
Instant timestamp,
|
||||
int status,
|
||||
String error,
|
||||
String code,
|
||||
String message,
|
||||
String traceId
|
||||
) {
|
||||
|
||||
public static ApiError of(int status, String error, String code, String message, String traceId) {
|
||||
return new ApiError(Instant.now(), status, error, code, message, traceId);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package aplp.backend.core.common.util;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.HexFormat;
|
||||
|
||||
public final class TokenHasher {
|
||||
|
||||
private TokenHasher() {
|
||||
}
|
||||
|
||||
public static String sha256Hex(String value) {
|
||||
try {
|
||||
byte[] digest = MessageDigest.getInstance("SHA-256").digest(value.getBytes(StandardCharsets.UTF_8));
|
||||
return HexFormat.of().formatHex(digest);
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
throw new IllegalStateException("SHA-256 not available", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user