Skip to content

Commit

Permalink
Modify Broken BadWordValidator
Browse files Browse the repository at this point in the history
  • Loading branch information
K-Diger committed Dec 29, 2023
1 parent 78ee01d commit 2ebebf0
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,29 @@ import jakarta.validation.ConstraintViolationException
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.HttpRequestMethodNotSupportedException
import org.springframework.web.bind.MethodArgumentNotValidException
import org.springframework.web.bind.MissingServletRequestParameterException
import org.springframework.web.bind.annotation.ExceptionHandler
import org.springframework.web.bind.annotation.ResponseStatus
import org.springframework.web.bind.annotation.RestControllerAdvice
import org.springframework.web.context.request.WebRequest
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException

@RestControllerAdvice
class ApiExceptionHandler {

@ExceptionHandler(MethodArgumentNotValidException::class)
private fun handlerMethodArgumentNotValidException(
exception: MethodArgumentNotValidException,
request: WebRequest
): Response<Any> {
val error = exception.fieldErrors.map { error -> error.defaultMessage }.toString()
return Response.fail(
exceptionCode = E400_BAD_REQUEST,
detailMessage = error
)
}

@ExceptionHandler(ConstraintViolationException::class)
private fun handlerConstraintViolationException(
exception: ConstraintViolationException,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.whatever.raisedragon.common

object BadWords {

internal fun containsExplicit(
internal fun containsBadWords(
content: String
): Boolean {
contents.map {
Expand All @@ -17,7 +17,7 @@ object BadWords {
return false
}

internal val contents = listOf(
private val contents = listOf(
"시발", "새끼", "쌔끼", "후장뚫어18세키", "dogbaby", "18ㅅㅐㄲㅣ", "18ㅅㅔㅋㅣ", "yadong", "ㅌㅓㄹㅐㄱㅣ",
"따아알따아리", "막대쑤셔줘?", "보지머리박기", "보지에자지껴", "보지에자지너", "보지핧아줄까", "여자ㄸㅏ먹기", "여자ㄸㅏ묵기",
"조개마셔줘?", "조개벌려조?", "조개쑤셔줘?", "조개핧아줘?", "터래기터래기", "혀로보지핧기", "18nom", "18num",
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.whatever.raisedragon.common.aop.badwordfilter

import com.whatever.raisedragon.common.BadWords.containsBadWords
import jakarta.validation.ConstraintValidator
import jakarta.validation.ConstraintValidatorContext

class BadWordValidator : ConstraintValidator<ValidateBadWord, String> {
override fun isValid(
value: String?,
context: ConstraintValidatorContext?
): Boolean {
if (value == null) {
return true
}
return !containsBadWords(value)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.whatever.raisedragon.common.aop.badwordfilter

import jakarta.validation.Constraint
import jakarta.validation.Payload
import kotlin.reflect.KClass

@Constraint(validatedBy = [BadWordValidator::class])
@Target(AnnotationTarget.FIELD)
@Retention(AnnotationRetention.RUNTIME)
annotation class ValidateBadWord(
val message: String = "비속어가 포함되어 있습니다.",
val groups: Array<KClass<out Any>> = [],
val payload: Array<KClass<out Payload>> = []
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.whatever.raisedragon.controller.goal

import com.whatever.raisedragon.common.aop.badwordfilter.BadWordFilter
import com.whatever.raisedragon.common.aop.badwordfilter.ValidateBadWord
import com.whatever.raisedragon.controller.betting.BettingRetrieveResponse
import com.whatever.raisedragon.domain.betting.Betting
import com.whatever.raisedragon.domain.betting.PredictionType
Expand All @@ -19,7 +19,7 @@ data class GoalCreateRequest(
@field:NotNull
val type: BettingType,

@BadWordFilter
@ValidateBadWord
@Schema(description = "다짐 내용")
@field:NotNull
val content: String,
Expand All @@ -38,7 +38,7 @@ data class GoalCreateRequest(

@Schema(description = "[Request] 다짐 수정")
data class GoalModifyRequest(
@BadWordFilter
@ValidateBadWord
@Schema(description = "다짐 내용")
@field:NotNull
val content: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.whatever.raisedragon.security.resolver.GetAuth
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.security.SecurityRequirement
import io.swagger.v3.oas.annotations.tags.Tag
import jakarta.validation.Valid
import org.springframework.web.bind.annotation.*

@Tag(name = "User", description = "User API")
Expand Down Expand Up @@ -53,7 +54,7 @@ class UserController(
@PutMapping
fun updateNickname(
@GetAuth userInfo: UserInfo,
@RequestBody userNicknameUpdateRequest: UserNicknameUpdateRequest
@RequestBody @Valid userNicknameUpdateRequest: UserNicknameUpdateRequest
): Response<UserRetrieveResponse> {
return Response.success(
userApplicationService.updateNickname(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.whatever.raisedragon.controller.user

import com.whatever.raisedragon.common.aop.badwordfilter.BadWordFilter
import com.whatever.raisedragon.common.aop.badwordfilter.ValidateBadWord
import com.whatever.raisedragon.domain.user.Nickname
import io.swagger.v3.oas.annotations.media.Schema

Expand All @@ -15,7 +15,7 @@ data class UserCreateRequest(

@Schema(description = "[Request] 유저 닉네임 수정")
data class UserNicknameUpdateRequest(
@BadWordFilter
@field:ValidateBadWord
@Schema(description = "User Nickname")
val nickname: String
)
Expand Down

0 comments on commit 2ebebf0

Please sign in to comment.