Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[๐ŸšŒ Issue] dev api ๋กœ๊ทธ์ธ ์š”์ฒญ ์œ„์น˜์— ๋”ฐ๋ผ redirect url ๋ณ€ํ™˜ #245

Merged
merged 25 commits into from
Mar 31, 2024

Conversation

egg528
Copy link
Member

@egg528 egg528 commented Mar 27, 2024

๐Ÿ“’ Issue

๐ŸŽฏ ์–ด๋–ค ์ž‘์—…์„ ํ–ˆ๋Š”์ง€

  • state, referer๋ฅผ key, value๋กœ ๊ฐ€์ง€๋Š” LocalStorage ์ƒ์„ฑ
  • ๋กœ๊ทธ์ธ ์š”์ฒญ ์‹œ ์ƒ์„ฑ๋œ state๊ฐ’์„ key๋กœ referer๊ฐ’ ์ €์žฅ
  • ๋กœ๊ทธ์ธ callback ์š”์ฒญ ์‹œ query string์œผ๋กœ ๋„˜์–ด์˜จ state๊ฐ’์œผ๋กœ referer๊ฐ’ ์กฐํšŒ
  • referer๊ฐ’์— dev-bandiboodi ํฌํ•จ๋œ ๊ฒฝ์šฐ dev ํ”„๋ก ํŠธ ์„œ๋ฒ„๋กœ redirect
  • ๋‹จ, profile์ด dev์ผ ๊ฒฝ์šฐ๋งŒ ๋กœ์ง ์ ์šฉ
  • develop์— ์ ์šฉ ํ›„ ํ…Œ์ŠคํŠธ ํ•„์š”ํ•จ

๐ŸŒ ์˜ํ–ฅ๋ฒ”์œ„ (๋ชจ๋“ˆ)

  • api/application

Resolves: # See also: #

egg528 added 18 commits March 24, 2024 11:34
@egg528 egg528 self-assigned this Mar 27, 2024
@egg528 egg528 changed the base branch from develop to feature/#235 March 27, 2024 15:17
@binary-ho
Copy link
Member

ํ˜น์‹œ ๋‚ด์ผ ์˜ค์ „์— ๋ฆฌ๋ทฐ ๋‚จ๊ฒจ๋„ ๋ ๊นŒ์š”? ์ญ‰ ์ฝ๊ธด ํ–ˆ๋Š”๋ฐ ๋„ˆ๋ฌด ์กธ๋ ค์„œ ๋จธ๋ฆฌ๊ฐ€ ์•„ํ”„๋„ค์š” ใ… ใ… 

@egg528
Copy link
Member Author

egg528 commented Mar 27, 2024

ํ˜น์‹œ ๋‚ด์ผ ์˜ค์ „์— ๋ฆฌ๋ทฐ ๋‚จ๊ฒจ๋„ ๋ ๊นŒ์š”? ์ญ‰ ์ฝ๊ธด ํ–ˆ๋Š”๋ฐ ๋„ˆ๋ฌด ์กธ๋ ค์„œ ๋จธ๋ฆฌ๊ฐ€ ์•„ํ”„๋„ค์š” ใ… ใ… 

@binary-ho
์ฒœ์ฒœํžˆ ๋ด์ฃผ์„ธ์š”~~

val loginRequestRefererStorage: LoginRequestRefererStorage,
) {
fun getUrl(state: String, token: Token): String {
if (profile == "live") {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ”„๋กœํ•„์„ ํ•œ๋ฒˆ Wraapingํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ์œผ๋ฉด ์–ด๋–จ๊นŒ ์‹ถ์€๋ฐ, ํ•œ๋ฒˆ ๊ฐ™์ด ๊ณ ๋ฏผํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?
profile ๊ฐ’์„ ๊ฐ–๋Š” ์œ ํ‹ธ์ด ์žˆ์–ด์„œ, ๊ทธ ์œ ํ‹ธ ๊ฐ์ฒด์—๊ฒŒ ๋ฉ”์„œ๋“œ๋กœ ์งˆ์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ ๊ฐ™์•„์„œ์š”

ProfileHolder or ProfileUtil์ด๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๋ฉด
ProfileHolder.isLive(), ProfileHolder.isDev() ์™€ ๊ฐ™์€ ์‹์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์งˆ์˜ํ•˜๋ฉด,
์ œ๊ฐ€ ์ž์ฃผ ๊ฒฝ๊ณ„ํ•˜๋Š” ์‹ค์ˆ˜์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” rawํ•œ string์˜ ์‚ฌ์šฉ์„ ์—†์•จ ์ˆ˜๋„ ์žˆ๊ณ , ๊ฐ์ฒด์ง€ํ–ฅ ์ ์œผ๋กœ๋„ ์ข‹์€ ๊ฒƒ ๊ฐ™๊ณ , ์ฝ”๋“œ๋„ ๊น”๋”ํ•ด์งˆ ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”. ๊ทธ๋ฆฌ๊ณ  ๋ฆฌํŒฉํ† ๋ง์‹œ ์ธํ…”๋ฆฌ์ œ์ด์˜ ๋„์›€์„ ๋ฐ›๊ธฐ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”.

๋” ๋‚˜์•„๊ฐ€ ๊ดœ์ฐฎ์€ ๊ตฌํ˜„์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์ƒํƒœ์— ๋”ฐ๋ผ RedirectURL์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ ๊ฐ™์•„์š”.
ProfileRedirectUrlHolder.getRedirectUrl()๊ณผ ๊ฐ™์ด ์Šค์Šค๋กœ Profile์„ ํ™•์ธํ•˜๊ณ , ๊ทธ์— ๋งž๋Š” Redirect URL์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฑด ์–ด๋–จ๊นŒ ํ•ด์„œ์š”. ex) live์˜ ๊ฒฝ์šฐ "https://bandiboodi.com ๋ฐ˜ํ™˜

ํ† ํฐ ๊ฐ’์— ๋Œ€ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋”ฐ๋กœ ๋ถ™์—ฌ์ฃผ๊ฑฐ๋‚˜, ๋”ฐ๋กœ ๋ถ™์—ฌ์ฃผ๋Š” Util ํด๋ž˜์Šค๊ฐ€ ์žˆ๊ฑฐ๋‚˜, ์•„๋‹ˆ๋ฉด ํ† ํฐ ๊ฐ’๋“ค์„ ๋„ฃ์œผ๋ฉด ํ† ํฐ ๊ฐ’๊นŒ์ง€ ๋ชจ๋‘ ํฌํ•จ๋œ RedirectUrl์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ ๊ฐ™์•„์š” (๋งˆ์ง€๋ง‰์€ ๊ณผํ•œ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค)

Copy link
Member Author

@egg528 egg528 Mar 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ฐ์ฒด๋ฅผ ์–ด๋–ค ๋‹จ์œ„๊นŒ์ง€ ๋ถ„๋ฆฌํ• ๊นŒ๋Š” ํ•ญ์ƒ ๊ณ ๋ฏผ์ด ๋˜๋Š” ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž
์ง„ํ˜ธ๋‹˜์ด ๋ง์”€ํ•˜์‹  ๊ฑธ ์ •๋ฆฌํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ์ฒด๊ฐ€ ์ƒ๊ฒจ๋‚  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

  1. ProfileHolder(or ProfileUtil) -> profile ๊ฐ’์„ ์ฃผ์ž… ๋ฐ›์•„ ํ˜„์žฌ application์˜ profile์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฑ…์ž„
  2. ProfileRedirectUrlHolder -> referer๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ RedirectUrl์˜ host + path๊นŒ์ง€ ๋ฐ˜ํ™˜ ์ฑ…์ž„
  3. ํ† ํฐ ๊ฐ’์„ ๋ถ™์—ฌ์ฃผ๋Š” ์—ญํ• ์˜ ๊ฐ์ฒด -> token์„ ๋ฐ›์•„ query string์œผ๋กœ ๋ถ™์—ฌ์ฃผ๋Š” ์ฑ…์ž„
  4. ์ตœ์ข… redirectUrl์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด

์‚ฌ์‹ค ์ €๋Š” ์ž‘์—…ํ•˜๋ฉด์„œ ์ด๋ ‡๊ฒŒ๊นŒ์ง€ ๊ฐ์ฒด๋ฅผ ๋ถ„๋ฆฌํ•˜์ง€๋Š” ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ง„ํ˜ธ๋‹˜์ด ์ œ์‹œํ•ด์ฃผ์‹  ProfileHolder.isLive(), ProfileHolder.isDev() ๋ฉ”์„œ๋“œ๊ฐ€ ๋„ˆ๋ฌด ๊น”๋”ํ•ด๋ณด์ธ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ ,
StateOAuth2AuthorizationRequestRepository์—์„œ ์žฌ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์žฅ์ ์„ ์ƒ๊ฐํ–ˆ์„ ๋•Œ ์ ์šฉํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž

์šฐ์„ ์€ ProfileHolder๋กœ ํ˜„์žฌ application์˜ profile์„ ์•Œ๋ ค์ฃผ๋Š” ์ฑ…์ž„์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด ๋งŒ๋“ค์–ด ๋ฐ˜์˜ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ •์„ฑ์Šค๋Ÿฌ์šด ๋ฆฌ๋ทฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค โค๏ธ


@Component
class LoginRedirector(
@Value("\${spring.profiles.active:local}")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ตœ๊ทผ์— ์ด๋Ÿฐ ๋ฐฉ๋ฒ•๋„ ๋ดค๋„ค์š”. ๊ฐ’๋“ค์ด ๋ชจ์—ฌ์žˆ๊ณ , ๊ฐ์ฒด๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ๋ฆฌํŒฉํ† ๋ง ํ•˜๊ธฐ ์‰ฌ์šด ์žฅ์ ์ด ์žˆ๋Š”๊ฑฐ ๊ฐ™์€๋ฐ ํ•œ๋ฒˆ ์Šฅ ๋ด์ฃผ์„ธ์š” ์ ˆ๋Œ€ ์ด๊ฑฐ ๋„์ž…ํ•ด๋ณด์ž ์•„๋‹™๋‹ˆ๋‹ค!!
https://medium.com/@mikael_55667/why-you-should-stop-using-value-annotations-in-spring-and-use-this-instead-2c8a47e5096a

Copy link
Member Author

@egg528 egg528 Mar 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ €๋Š” ์ง„ํ˜ธ๋‹˜์ด ์–˜๊ธฐํ•ด์ฃผ์‹  ConfigurationProperties ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค!
์ €ํฌ ํ”„๋กœ์ ํŠธ์— AppleLoginProps ๊ฐ์ฒด์— ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ–ˆ๊ตฌ์š”
๋‹ค๋งŒ ์ €๋Š” ํ•œ๋ฒˆ์— ๋งŽ์€ ๊ฐ’์„ ์ฃผ์ž…ํ•ด์•ผ ํ•  ๋•Œ ConfigurationProperties๋ฅผ ๊ณ ๋ คํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!
Profile์„ ๋‹ด์„ ๊ฐ์ฒด์— ์ฃผ์ž…ํ•  ๊ฐ’์ด ๋งŽ์•„์ง„๋‹ค๋ฉด ConfigurationProperties ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ ์ข‹์€ ๊ฒƒ ๊ฐ™์•„์š” ๐Ÿ‘


val referer = loginRequestRefererStorage.get(state)

if (profile == "dev" && referer.contains("dev-bandiboodi")) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. ์ €๋ฒˆ์— ๋ง์”€ ๋“œ๋ ธ๋˜ ๋Œ€๋กœ dev ํด๋ผ์ด์–ธํŠธ ์œ ์ถœ์— ๋Œ€ํ•œ ์šฐ๋ ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋ฌผ๋ก  ์ €๋„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ๊ธด ํ• ๊นŒ..์‹ถ๊ธฐ๋Š” ํ•œ๋ฐ, ์ €ํฌ๊ฐ€ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ dev-db์— ์ €์žฅ๋  ์ˆ˜๋„ ์žˆ๋Š” ์ƒํ™ฉ์ด ์กฐ๊ธˆ ๊บผ๋ ค์ง‘๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ค๊นŒ์š”?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•—!! ์ด๋ฒˆ์— ์ œ๊ฑฐํ•œ๋‹ค๋Š” ๊ฑธ ๊นœ๋นกํ–ˆ๋„ค์š” ใ…Žใ…Ž
ํ™•์ธ ๊ฐ์‚ฌํ•ด์š” ๐Ÿ‘

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ณ„๊ฑฐ ์•„๋‹Œ๋ฐ ํ”„๋กœํ•„์— ๋Œ€ํ•œ ๋น„๊ต๊ฐ’์„ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ enum ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๊ฒŒ ์ข‹๊ธดํ• ๋“ฏ (referer ๋„ enum ์œผ๋กœ)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•„ ์œ„์— ์ง„ํ˜ธ๊ฐ€ ๋งํ–ˆ๊ตฌ๋‚˜ ใ…Žใ…Ž

Copy link
Member Author

@egg528 egg528 Mar 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ฐ™์€ ๋ถ€๋ถ„์„ ํ˜•์€ enum์œผ๋กœ, ์ง„ํ˜ธ๋Š” ํ˜„์žฌ profile์„ ์›ํ•˜๋Š” ๊ฐ’๊ณผ ๋น„๊ตํ•ด์ฃผ๋Š” ๊ฐ์ฒด ๋ฉ”์„œ๋“œ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉํ–ฅ์„ ์ œ์•ˆํ•ด์คฌ๋Š”๋ฐ
๋‘˜ ๋‹ค ์ ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ‘

.expireAfterWrite(60L, TimeUnit.SECONDS)
.build<String, String>()

fun put(state: String, referer: String?) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[[ 100% ์ทจํ–ฅ ์ œ์•ˆ ]]
์ €๋„ ์ž๋ฐ”์— ์ต์ˆ™ํ•ด์„œ ์šฐ์„๋‹˜์ด๋ž‘ ํ•ญ์ƒ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ์š”?
์š”์ฆ˜ ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ๋“ค ๋‹ค๋ฅธ๋ฐ์„œ ๋ณด๋ฉด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋„ ์กฐ๊ธˆ ์ด๋ป ๋ณด์ด์ด๊ธฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ ์–ด๋– ์‹ ๊ฐ€์š”..

put() = if (referer.isNullOrBlank()) return
else timedStorage.put(state, referer)

ํ˜น์€.. ํ™•์žฅํ•จ์ˆ˜ ํ™œ์šฉํ•ด์„œ isNotNullOrBlank() ๊ตฌํ˜„ํ•œ ๋‹ค์Œ..

fun put() {
  if (referer.isNotNullOrBlank()) 
    timedStorage.put(state, referer)
}

์™„์ „ ์ทจํ–ฅ์ด๊ณ  ์ง€๊ธˆ ์–ผ๋ฆฌ ๋ฆฌํ„ด ๋ฐฉ์‹๋„ ๋„ˆ๋ฌด ์ข‹์•„์š” ์ €๋„ ๋ณดํ†ต ๊ทธ๋ ‡๊ฒŒ ์ž‘์„ฑํ•ด์™”๋˜ ๊ฒƒ ๊ฐ™์•„์š”.
์–ด๋–ค์ง€ ํ•œ๋ฒˆ ์–˜๊ธฐํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ์˜ฌ๋ ค๋ด์š”!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ €๋Š” ์–ผ๋ฆฌ ๋ฆฌํ„ด์„ ์œ„ํ•œ ์กฐ๊ฑด๋ฌธ์€ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ํŽธ์ด ์ž˜ ์ฝํžŒ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ํŽธ์ด์˜€๋Š”๋ฐ์š”.
์ง„ํ˜ธ๋‹˜์ด ์ œ์‹œํ•ด์ฃผ์‹  ์ฒซ๋ฒˆ์งธ ์ฝ”๋“œ (if๋ฌธ Expression์œผ๋กœ ์‚ฌ์šฉ)๋ฅผ ๋ณด๋‹ˆ ํ•œ๋ฒˆ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž
์ฒซ๋ฒˆ์งธ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ • ํ•œ๋ฒˆ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!
์ œ์•ˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@binary-ho
์ œ์•ˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

์ถ”๊ฐ€ ์ œ์•ˆ ใ…†ใ„ฑใ„ด

@@ -25,6 +30,11 @@ class StateOAuth2AuthorizationRequestRepository() : AuthorizationRequestReposito
response: HttpServletResponse,
) {
if (authorizationRequest != null) {
/*** for frontend dev test ***/
if (profile == "dev") {
loginRequestRefererStorage.put(authorizationRequest.state, request.getParameter("referer"))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ”„๋กœํ•„๋ž˜ํ•‘ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ๋„ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์  ใ…Žใ…Ž (์–ดํ•„)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ œ์•ˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

์ถ”๊ฐ€ ์ œ์•ˆ ใ…†ใ„ฑใ„ด

Base automatically changed from feature/#235 to develop March 28, 2024 13:08
@@ -0,0 +1,17 @@
package io.raemian.api.support.security

enum class ProfileType(
Copy link
Member Author

@egg528 egg528 Mar 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ManHyuk
์ œ์•ˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

์ถ”๊ฐ€ ์ œ์•ˆ ใ…†ใ„ฑใ„ด


import org.springframework.boot.context.properties.ConfigurationProperties

@ConfigurationProperties(prefix = "redirect-url")
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@binary-ho
2๊ฐœ์˜ ์ œ์•ˆ์„ ํ•ฉ์ณ์„œ RedirectUrlHolder์— ConfigurationProperties๋ฅผ ์ ์šฉํ•ด๋ดค์Šต๋‹ˆ๋‹ค!
์ œ์•ˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

์ถ”๊ฐ€ ์ œ์•ˆ ใ…†ใ„ฑใ„ด

import org.springframework.stereotype.Component

@Component
class ProfileHolder(
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@binary-ho
์ œ์•ˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

์ถ”๊ฐ€ ์ œ์•ˆ ใ…†ใ„ฑใ„ด

Copy link
Member

@binary-ho binary-ho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

๋Œ“๊ธ€๋กœ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋„ ์งš์–ด์ฃผ๋Š” ์„ผ์Šค ๋•๋ถ„์— ๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ๋ฐ”๊พธ์—ˆ๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค! ์ž‘์—… ๋„ˆ๋ฌด ๊ณ ์ƒ ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ใ…Žใ…Žใ…Ž

@egg528 egg528 merged commit 4f570c2 into develop Mar 31, 2024
1 check passed
@egg528 egg528 deleted the feature/#244 branch March 31, 2024 11:22
egg528 added a commit that referenced this pull request Apr 26, 2024
* feat: remove forward header optiion

* refactor : birth ๊ด€๋ จ ์œ ์ € ์ •๋ณด ์—…๋ฐ์ดํŠธ API์— birth๋ฅผ nullable๋กœ ๋ณ€๊ฒฝ (#206) (#207)

* feat(#209): spring security authorization_request_not_found ์ˆ˜์ • (#210)

* [๐ŸŒŽ Feature] Goal ๋Œ“๊ธ€ API ๊ฐœ๋ฐœ (#208)

* feat : ๋Œ“๊ธ€ ์—”ํ‹ฐํ‹ฐ์™€ repository ์ƒ์„ฑ (#196)

* feat : Goal ๋Œ“๊ธ€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ „์ฒด ์กฐํšŒ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„ (#196)

* feat : Goal ๋Œ“๊ธ€ ์ž‘์„ฑ ์‚ญ์ œ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„ (#196)

* feat : Goal์˜ ๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€ Read ์‹œ๊ฐ„์„ ์ €์žฅํ•˜๋Š” GoalCommentReadTime ๊ตฌํ˜„ (#196)

* feat : Goal์˜ ์ƒ์„ฑ์ž๊ฐ€ ์ฝ์ง€ ์•Š์€ ๋Œ“๊ธ€์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ ๊ตฌํ˜„ (#196)

* feat : ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€ ํ™•์ธ ์‹œ๊ฐ„์„ updateํ•˜๋Š” ๋ฉ”์„œ๋“œ ๊ตฌํ˜„ (#196)

* ktlint formatting

* refactor : ๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€ Read ์‹œ๊ฐ„์„ ๋ถ„๋ฆฌ๋œ ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ Goal์ด ๊ฐ–๋„๋ก ๋ณ€๊ฒฝ (#196)

* feat : ๋Œ“๊ธ€ ์กฐํšŒ์‹œ ์š”์ฒญ์ž๊ฐ€ Goal์˜ ์ฃผ์ธ์ด๋ผ๋ฉด comment read time์„ updateํ•˜๋Š” ์ด๋ฒคํŠธ ๋ฐœํ–‰ (#196)

* test : Goal ํ•„๋“œ ์ถ”๊ฐ€์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ณ€๊ฒฝ (#196)

* refactor : CoreApiException์ด ์ง์ ‘ errorMessage๋ฅผ ์ž…๋ ฅ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ (#196)

* refactor : Comment๊ฐ€ ์Šค์Šค๋กœ ์ œํ•œ ์กฐ๊ฑด์„ ๊ฒ€์ฆํ•˜๋„๋ก ๋ณ€๊ฒฝ (#196)

* refactor : CommentService์˜ ํ•„๋“œ๋“ค์— private ์ ‘๊ทผ ์ œํ•œ์ž ์ถ”๊ฐ€ (#196)

* refactor : comment require ์กฐ๊ฑด ์ •์ • (#196)

* refactor : ๋ถˆํ•„์š”ํ•œ ํŠธ๋žœ์žญ์…˜ ์ „ํŒŒ ๋ฐ Transactional ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ์ œ๊ฑฐ (#196)

* refactor : ๋ถˆํ•„์š”ํ•œ Goal ์กฐํšŒ ์ฟผ๋ฆฌ ์ œ๊ฑฐ (#196)

* test : Comment ๊ด€๋ จ ๊ธฐ๋Šฅ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ (#196)

* ktlint formatting

* refactor : getAllByGoalId ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์„ ์—ญํ• ์— ๋งž๊ฒŒ findAllByGoalId๋กœ ๋ณ€๊ฒฝ (#196)

* feat : ๋Œ“๊ธ€ API ๊ตฌํ˜„ (#196)

* chore : ์ž˜๋ชป ์ž‘์„ฑ๋œ ๋ฉ”์„œ๋“œ ์ด๋ฆ„ ๋ณ€๊ฒฝ (#196)

* refactor : DTO ํŒจํ‚ค์ง€ ๋ณ€๊ฒฝ (#196)

* refactor : comments์—์„œ goal์„ ๊บผ๋‚ผ ๋•Œ, first ๋ฉ”์„œ๋“œ ํ™œ์šฉ (#196)

* refactor : ๋ถˆํ•„์š”ํ•œ @async ์–ด๋…ธํ…Œ์ด์…˜ ์ œ๊ฑฐ (#196)

* refactor : findAllByGoalId ๊ฐ€๋…์„ฑ ๊ฐœ์„  (#196)

* refactor : Emoji API Restfulํ•˜๊ฒŒ ๊ฐœ์„  (#196) (#215)

* [๐ŸšŒ Issue ] Emoji Count ์ž‘์—… ๋ฐ Count ๊ด€๋ จ ๋กœ์ง ๊ฐœ์„  (#213)

* refactor(#211): count๊ด€๋ จ eventListener ๋‹จ์ผ componentํ™”

* feat(#211): emoji count ํ…Œ์ด๋ธ” ์ถ”๊ฐ€ ๋ฐ count๊ด€๋ จ event application lock ์ ์šฉ

* feat(#211): add goal count event์— exclusive runner ์ ์šฉ

* refactor: event ๊ฐ™์€ ํŒจํ‚ค์ง€๋กœ ์ด๋™

* feat: lock ์ ์šฉ ์‹œ์  ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ์‹คํ–‰ Thread๋กœ ๋ณ€๊ฒฝ

* refactor: event ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜ ์ ์šฉ

* fix: key์— ๋งคํ•‘๋œ lock ๋Œ€๊ธฐ thread๊ฐ€ ์—†๋‹ค๋ฉด map์—์„œ ์ œ๊ฑฐ

* [๐ŸšŒ Issue] ๋ฆฌํŒฉํ† ๋ง ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์„ธํŒ… (#220)

* chore : ๋ฆฌํŒฉํ† ๋ง ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์„ธํŒ…

* chore : ๊ธฐํƒ€-์ด์Šˆ ๊ธฐ๋ณธ ์ƒ์„ฑ ์ œ๋ชฉ์— ๋ถˆํ•„์š”ํ•œ ๋„์–ด์“ฐ๊ธฐ ์ œ๊ฑฐ

* [๐Ÿ› ๏ธ Refactor] Goal Emoji API ์‘๋‹ต์— "์ด๋ชจ์ง€๋ฅผ ๋ˆ„๋ฅธ ์‚ฌ๋žŒ ์ˆ˜" ์ถ”๊ฐ€ (#221)

* refactor : Goal์— ๋ฐ˜์‘ ์กฐํšŒ API์— ๋ฐ˜์‘ํ•œ ์‚ฌ๋žŒ ์ˆ˜ ๊ฐ’ ์ถ”๊ฐ€ (#218)

* test : Goal ๋ฐ˜์‘ ์กฐํšŒ API ๋ฐ˜์‘ํ•œ ์‚ฌ๋žŒ ์ˆ˜ ๊ฐ’์ด ์ •ํ™•ํ•œ์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#218)

* [๐Ÿ› ๏ธ Refactor] IsMyReaction์„ ํ™•์ธํ•  ๋•Œ Username์ด ์•„๋‹Œ id๋กœ ํ™•์ธํ•˜๊ธฐ (#219)

* refactor : IsMyReaction์„ ํ™•์ธํ•  ๋•Œ Username์ด ์•„๋‹Œ id๋กœ ํ™•์ธํ•˜๋„๋ก ๋ณ€๊ฒฝ (#217)

* merge with develop

* [๐Ÿ†˜ Bug] authorization_request_not_found ์˜ค๋ฅ˜ (#216)

* feat(#209): spring security authorization_request_not_found ์ˆ˜์ •

* fix: AuthorizationRequestRepository cookie ๊ธฐ๋ฐ˜์—์„œ state parameter ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณ€๊ฒฝ

* fix: AuthorizationRequestRepository remove ๋ฉ”์„œ๋“œ์— ๋ช…์‹œ์ ์ธ ์‚ญ์ œ ์ถ”๊ฐ€

* fix: AuthorizationRequestRepository oauthRequestStorage ๋ฐ์ดํ„ฐ ๋ช…์‹œ์  ์‚ญ์ œ ๋กœ์ง ์ œ๊ฑฐ

* refact(#171): add emoji count

* feat(#171): ํ”ผ๋“œ์— ์ด๋ชจ์ง€๋ฐ ๋‚ด๊ฐ€ ๋ˆ„๋ฅธ ์ด๋ชจ์ง€ ์ถ”๊ฐ€

* chore(#171): ktlint

* chore(#171): ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ์‚ญ์ œ

* chore(#171): ktlint

* [๐Ÿ› ๏ธ Refactor] ๋Œ“๊ธ€ ์‘๋‹ต์— ๋Œ“๊ธ€ ๊ฐฏ์ˆ˜ ์ถ”๊ฐ€  (#225)

* refactor : Goal์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€ ์‘๋‹ต์— ๋Œ“๊ธ€ ๊ฐฏ์ˆ˜ ์ถ”๊ฐ€ (#224)

* test : Goal์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€ ์‘๋‹ต์ด ๋Œ“๊ธ€ ๊ฐฏ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ (#224)

* ktlint formatting

* refact(#171): edit field name

* [๐Ÿ› ๏ธ Refactor] RunnerLock ํ•„๋“œ ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ ๏ฟฝ+ Security Uri ์ƒ์ˆ˜ํ™” + H2 ์›น ์ฝ˜์†”์šฉ WebSecurityCustomizer ์ œ๊ฑฐ (#226)

* refactor: RunnerLock ๋‚ด๋ถ€ ํ•„๋“œ ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ

* refactor: security permitall uri ์ƒ์ˆ˜ํ™”

* [๐Ÿ› ๏ธ Refactor] ๋Œ“๊ธ€ ์กฐํšŒ API ์‘๋‹ต์— "๋‚ด ์ง€๋„ ํ™•์ธ" key-value ์ถ”๊ฐ€ (#230)

* refactor : CommentsResponse์— ์ž์‹ ์˜ ๋ชฉํ‘œ์ธ์ง€ ํ™•์ธํ•˜๋Š” isMyGoal ํ•„๋“œ ์ถ”๊ฐ€ (#229)

* test : CommentsResponse๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ๋ชฉํ‘œ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ (#229)

* feat(#232): add title field

* [๐Ÿ› ๏ธ Refactor] ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ณ€๊ฒฝ (1๋ฒˆ, 3๋ฒˆ ์ œ์•ˆ๋งŒ ๋ณ€๊ฒฝ) (#234)

* refactor(#235): pagination ๊ณตํ†ตํ™” + cheering squad ๊ณตํ†ต pagination ์ ์šฉ

* [๐Ÿ› ๏ธ Refactor] ์ž˜๋ชป ์ž‘์„ฑ๋œ ์ฝ์ง€ ์•Š์€ ๋Œ“๊ธ€ ์กฐํšŒ ์ฟผ๋ฆฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ •์ • (#237)

* refactor : CommentsResponse์— ์ž์‹ ์˜ ๋ชฉํ‘œ์ธ์ง€ ํ™•์ธํ•˜๋Š” isMyGoal ํ•„๋“œ ์ถ”๊ฐ€ (#229)

* test : CommentsResponse๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ๋ชฉํ‘œ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ (#229)

* refactor : exist new comment ์ฟผ๋ฆฌ๋ฅผ id์™€ ์‹œ๊ฐ„์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋„๋ก ๋ณ€๊ฒฝ (#236)

* refactor : ์ฟผ๋ฆฌ๊ฐ€ Goal Id๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ (#236)

* test : ๋ณธ์ธ์˜ Goal๋งŒ ์กฐํšŒํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ ์ž‘์„ฑ (#236)

* feat: pagination ๊ณตํ†ต response ์ถ”๊ฐ€ + cheering squad ์กฐํšŒ๋ฅผ ์œ„ํ•œ queryRepository ์ถ”๊ฐ€

* feat(#235): comment count ์—”ํ‹ฐํ‹ฐ ์ถ”๊ฐ€ + comment create/delete event ์ƒ์„ฑ

* feat(#235): ๋ชฉํ‘œ ํƒ€์ž„๋ผ์ธ ํŽ˜์ด์ง• ์กฐํšŒ API ์ž‘์—…

* fix: dev ํ™˜๊ฒฝ ๋กœ๊ทธ์ธ callback ์‹œ  redirect uri ๋ณ€๊ฒฝ

* chore: apply lint

* refactor: CheererRepository ๋ฏธ์‚ฌ์šฉ ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ

* refactor: TriFunction @FunctionalInterface ์ ์šฉ

* refactor(#235): PR ์ฝ”๋ฉ˜ํŠธ ๋ฐ˜์˜

* [๐ŸŒŽ Feature] ํƒ€์ž„ ๋ผ์ธ์šฉ ๋ชฉํ‘œ ์กฐํšŒ API ๊ฐœ๋ฐœ (#240)

* refactor(#235): pagination ๊ณตํ†ตํ™” + cheering squad ๊ณตํ†ต pagination ์ ์šฉ

* feat: pagination ๊ณตํ†ต response ์ถ”๊ฐ€ + cheering squad ์กฐํšŒ๋ฅผ ์œ„ํ•œ queryRepository ์ถ”๊ฐ€

* feat(#235): comment count ์—”ํ‹ฐํ‹ฐ ์ถ”๊ฐ€ + comment create/delete event ์ƒ์„ฑ

* feat(#235): ๋ชฉํ‘œ ํƒ€์ž„๋ผ์ธ ํŽ˜์ด์ง• ์กฐํšŒ API ์ž‘์—…

* fix: dev ํ™˜๊ฒฝ ๋กœ๊ทธ์ธ callback ์‹œ  redirect uri ๋ณ€๊ฒฝ

* chore: apply lint

* refactor: CheererRepository ๋ฏธ์‚ฌ์šฉ ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ

* refactor: TriFunction @FunctionalInterface ์ ์šฉ

* refactor(#235): PR ์ฝ”๋ฉ˜ํŠธ ๋ฐ˜์˜

* hotfix(#235): ํƒ€์ธ ํƒ€์ž„๋ผ์ธ ์กฐํšŒ API ์ถ”๊ฐ€

* chore: apply klint

* [๐Ÿ› ๏ธ Refactor] ํƒ€์ž„ ๋ผ์ธ API ์ž‘์—… ๋ฆฌํŒฉํ† ๋ง (#241)

* delete: ์œ ์ € ์ •๋ณด๋ฅผ ํ™œ์šฉํ•œ ํƒ€์ž„๋ผ์ธ ์กฐํšŒ API ์‚ญ์ œ

* refactor: PaginationResult.transform() ์‚ฌ์šฉ ๋ฐฉ์‹ lamda ํ˜•ํƒœ๋กœ ํ†ต์ผ

* refactor: ๋ฉ”์„œ๋“œ ๋กœ์ง์— ๋”ฐ๋ผ get, find ๋ช…์นญ ๊ตฌ๋ถ„

* refactor: lamda body ๋‚ด ์ƒ๋žต ๊ฐ€๋Šฅํ•œ parameter ์ƒ๋žต

* refactor: ๋ฉ”์„œ๋“œ๋ช… ๋‚ด ๋ถ€์ •ํ™•ํ•œ ๋‹จ์–ด ์ œ๊ฑฐ(findGoalTimelineCountMap -> findGoalCountMap)

* refactor: associateWith ๋ฉ”์„œ๋“œ ํ™œ์šฉ

* refactor: PaginationResult total๊ฐ’ Long์œผ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝ

* hotfix: dev login redirect url ์ˆ˜์ •

* hotfix: login redirect url referer ๊ธฐ์ค€ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ

* hotfix: login redirect url referer ๊ธฐ์ค€ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ ์กฐ๊ฑด ์ถ”๊ฐ€

* hotfix: login redirect url referer ๊ธฐ์ค€ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ ์ œ๊ฑฐ

* [๐ŸŒŽ Feature] ํƒ€์ž„ ๋ผ์ธ์šฉ ๋ชฉํ‘œ ์กฐํšŒ API ๊ฐœ๋ฐœ - Cursor Deadline์œผ๋กœ ๋ณ€๊ฒฝ (#242)

* delete: ์œ ์ € ์ •๋ณด๋ฅผ ํ™œ์šฉํ•œ ํƒ€์ž„๋ผ์ธ ์กฐํšŒ API ์‚ญ์ œ

* refactor: PaginationResult.transform() ์‚ฌ์šฉ ๋ฐฉ์‹ lamda ํ˜•ํƒœ๋กœ ํ†ต์ผ

* refactor: ๋ฉ”์„œ๋“œ ๋กœ์ง์— ๋”ฐ๋ผ get, find ๋ช…์นญ ๊ตฌ๋ถ„

* refactor: lamda body ๋‚ด ์ƒ๋žต ๊ฐ€๋Šฅํ•œ parameter ์ƒ๋žต

* refactor: ๋ฉ”์„œ๋“œ๋ช… ๋‚ด ๋ถ€์ •ํ™•ํ•œ ๋‹จ์–ด ์ œ๊ฑฐ(findGoalTimelineCountMap -> findGoalCountMap)

* refactor: associateWith ๋ฉ”์„œ๋“œ ํ™œ์šฉ

* refactor: PaginationResult total๊ฐ’ Long์œผ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝ

* fix: ๋ชฉํ‘œ ํ”ผ๋“œ ์กฐํšŒ API deadline ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ ์กฐํšŒ

* chore: apply lint

* fix: goals ํ…Œ์ด๋ธ”์˜ index ์ˆ˜์ •

* refactor: pagination cusorId type Any -> Generic์œผ๋กœ ๋ณ€๊ฒฝ

* [๐ŸŒŽ Feature] ํƒ€์ž„ ๋ผ์ธ์šฉ ๋ชฉํ‘œ ์กฐํšŒ API ๊ฐœ๋ฐœ - Pagination ๋ฐฉ์‹ offset ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณ€๊ฒฝ (#243)

* delete: ์œ ์ € ์ •๋ณด๋ฅผ ํ™œ์šฉํ•œ ํƒ€์ž„๋ผ์ธ ์กฐํšŒ API ์‚ญ์ œ

* refactor: PaginationResult.transform() ์‚ฌ์šฉ ๋ฐฉ์‹ lamda ํ˜•ํƒœ๋กœ ํ†ต์ผ

* refactor: ๋ฉ”์„œ๋“œ ๋กœ์ง์— ๋”ฐ๋ผ get, find ๋ช…์นญ ๊ตฌ๋ถ„

* refactor: lamda body ๋‚ด ์ƒ๋žต ๊ฐ€๋Šฅํ•œ parameter ์ƒ๋žต

* refactor: ๋ฉ”์„œ๋“œ๋ช… ๋‚ด ๋ถ€์ •ํ™•ํ•œ ๋‹จ์–ด ์ œ๊ฑฐ(findGoalTimelineCountMap -> findGoalCountMap)

* refactor: associateWith ๋ฉ”์„œ๋“œ ํ™œ์šฉ

* refactor: PaginationResult total๊ฐ’ Long์œผ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝ

* fix: ๋ชฉํ‘œ ํ”ผ๋“œ ์กฐํšŒ API deadline ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ ์กฐํšŒ

* chore: apply lint

* fix: goals ํ…Œ์ด๋ธ”์˜ index ์ˆ˜์ •

* refactor: pagination cusorId type Any -> Generic์œผ๋กœ ๋ณ€๊ฒฝ

* fix: ํƒ€์ž„ ๋ผ์ธ ๋ชฉํ‘œ ์กฐํšŒ API paging ์ฒ˜๋ฆฌ ๋ฐฉ์‹ offset์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: cursor ๊ธฐ๋ฐ˜ pagination ๊ณตํ†ต ๋ชจ๋“ˆ cursor type long์œผ๋กœ ํ†ต์ผ

* refactor: pagination ๊ณตํ†ต ๋ชจ๋“ˆ cursor์™€ offset ๊ตฌ๋ถ„

* refactor: ๋ฏธ์‚ฌ์šฉ ์ฝ”๋“œ ๋ฐ ์˜๋ฏธ ์—†๋Š” ์ค‘๋ณต ์ฝ”๋“œ ์‚ญ์ œ

* hotfix: global exception config ๋‚ด NoSuchElementException ์„ค์ • ์ˆ˜์ •

* [๐ŸšŒ Issue] dev api ๋กœ๊ทธ์ธ ์š”์ฒญ ์œ„์น˜์— ๋”ฐ๋ผ redirect url ๋ณ€ํ™˜ (#245)

* delete: ์œ ์ € ์ •๋ณด๋ฅผ ํ™œ์šฉํ•œ ํƒ€์ž„๋ผ์ธ ์กฐํšŒ API ์‚ญ์ œ

* refactor: PaginationResult.transform() ์‚ฌ์šฉ ๋ฐฉ์‹ lamda ํ˜•ํƒœ๋กœ ํ†ต์ผ

* refactor: ๋ฉ”์„œ๋“œ ๋กœ์ง์— ๋”ฐ๋ผ get, find ๋ช…์นญ ๊ตฌ๋ถ„

* refactor: lamda body ๋‚ด ์ƒ๋žต ๊ฐ€๋Šฅํ•œ parameter ์ƒ๋žต

* refactor: ๋ฉ”์„œ๋“œ๋ช… ๋‚ด ๋ถ€์ •ํ™•ํ•œ ๋‹จ์–ด ์ œ๊ฑฐ(findGoalTimelineCountMap -> findGoalCountMap)

* refactor: associateWith ๋ฉ”์„œ๋“œ ํ™œ์šฉ

* refactor: PaginationResult total๊ฐ’ Long์œผ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝ

* fix: ๋ชฉํ‘œ ํ”ผ๋“œ ์กฐํšŒ API deadline ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ ์กฐํšŒ

* chore: apply lint

* fix: goals ํ…Œ์ด๋ธ”์˜ index ์ˆ˜์ •

* refactor: pagination cusorId type Any -> Generic์œผ๋กœ ๋ณ€๊ฒฝ

* fix: ํƒ€์ž„ ๋ผ์ธ ๋ชฉํ‘œ ์กฐํšŒ API paging ์ฒ˜๋ฆฌ ๋ฐฉ์‹ offset์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: cursor ๊ธฐ๋ฐ˜ pagination ๊ณตํ†ต ๋ชจ๋“ˆ cursor type long์œผ๋กœ ํ†ต์ผ

* refactor: pagination ๊ณตํ†ต ๋ชจ๋“ˆ cursor์™€ offset ๊ตฌ๋ถ„

* feat(#244): dev api ๋กœ๊ทธ์ธ ์š”์ฒญ ์œ„์น˜์— ๋”ฐ๋ผ redirect url ๋ณ€ํ™˜

* chore: apply lint

* fix: @value(spring.profiles.active) default๊ฐ’ ์ถ”๊ฐ€

* refactor: ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ˜์˜(#245)

* chore: encryptํ•˜๋˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œ

* chore: encrypted test properties ์‚ญ์ œ

* chore: referer ์ €์žฅ/์กฐํšŒ logging ์ถ”๊ฐ€

* chore: logging ์ œ๊ฑฐ

* fix: getReferer ๋ฉ”์„œ๋“œ referer๊ฐ’ null์ผ ๊ฒฝ์šฐ Empty String ๋ฐ˜ํ™˜

* [๐Ÿ†˜ Bug] ํƒ€์ž„๋ผ์ธ ๊ด€๋ จ ๋ฒ„๊ทธ ์ˆ˜์ • (#248)

* fix: timeline ์กฐํšŒ ์‹œ ๋ชฉํ‘œ ์—†์œผ๋ฉด early return

* feat: ์œ ์ €์ •๋ณด ๊ธฐ๋ฐ˜ ํƒ€์ž„ ๋ผ์ธ ์กฐํšŒ API ์ž‘์—…

* fix: ๋ชฉํ‘œ ์‚ญ์ œ ์‹œ LifeMapCount goalCount ํ•„๋“œ -1 ์ฒ˜๋ฆฌ

* refactor: timeline ์กฐํšŒ api ๋‚ด ๋ชฉํ‘œ ๊ฐœ์ˆ˜ ์กฐํšŒ ์ฟผ๋ฆฌ ๋ณ€๊ฒฝ

* feat(#171): edit comment count

* chore: ktlint

* refactor : Comment์™€ Emoji์— Goal Delete Casacade ์†์„ฑ ์ถ”๊ฐ€ (#246) (#249)

* refactor : ์ž์‹ ์˜ Goal์— ๋‹ฌ๋ฆฐ Comment ์‚ญ์ œ๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ (#251) (#252)

* bug(#254): ํƒ€์ž„๋ผ์ธ ์กฐํšŒ API ๋‚ด ์ฝ”๋ฉ˜ํŠธ ๊ฐœ์ˆ˜ ์กฐํšŒ ์ฟผ๋ฆฌ ์˜ค๋ฅ˜ ์ˆ˜์ •

* feat : ์ด๋ชจ์ง€ ์ถ”๊ฐ€ ์ „์— ๊ฐ™์€ ์ด๋ชจ์ง€๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ž‘์„ฑ (#253) (#256)

* refactor : ๋ชจ๋“  Emoji ์กฐํšŒ API์—์„œ ์ผ๊ด€๋˜๊ฒŒ Emoji id ์ˆœ์„œ๋กœ ์ •๋ ฌํ•ด ์‘๋‹ตํ•˜๋„๋ก ๋ณ€๊ฒฝ (#257)

* refactor : ๋ถˆํ•„์š”ํ•œ ์ •๋ ฌ ์ œ๊ฑฐ - MySQL Clustered Index๋กœ ์ธํ•ด ์ด๋ฏธ pk ์ •๋ ฌ ๋˜์–ด ์žˆ๋‹ค (#257)

* fix : ํ”ผ๋“œ ์กฐํšŒ (#259)

* feat(#171): ๋ชฉํ‘œ ์ƒ์„ฑ์‹œ ๊ธฐ๋ณธ ๋Œ“๊ธ€ ๊ฐœ์ˆ˜ ์ถ”๊ฐ€

* chore(#171): ktlint

* feat(#171): ๊ธฐ๋ณธ ์นด์šดํŠธ ์ถ”๊ฐ€

* chore: ktlint

* refact(#171): ๋ณ€์ˆ˜ ์‚ญ์ œ

---------

Co-authored-by: ManHyuk <[email protected]>
Co-authored-by: binary_ho <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants