[#17] feat: 인증 프로세스 개발 진행중

- 인증(로그인) 프로세스 진행중
This commit is contained in:
Hanbin Lee
2022-10-16 10:17:21 +09:00
parent 4fb2032e68
commit 30b50c0254
6 changed files with 67 additions and 7 deletions

View File

@@ -10,7 +10,7 @@ plugins {
id("org.springframework.boot") version "2.7.0"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
kotlin("jvm") version "1.6.21"
kotlin("plugin.spring") version "1.6.21" apply false
kotlin("plugin.spring") version "1.6.21" apply false // TODO: apply false what?
kotlin("plugin.jpa") version "1.6.21" apply false
}
@@ -52,6 +52,7 @@ subprojects {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
developmentOnly("org.springframework.boot:spring-boot-devtools")
@@ -62,6 +63,7 @@ subprojects {
// DB
runtimeOnly("mysql:mysql-connector-java") // MySQL
runtimeOnly("com.h2database:h2") // H2
implementation("org.flywaydb:flyway-core:7.15.0") // flyway
// Logging
// log4j2
@@ -69,10 +71,9 @@ subprojects {
// testImplementation("org.springframework.boot:spring-boot-starter-log4j2")
implementation("io.github.microutils:kotlin-logging:2.1.21")
implementation("org.flywaydb:flyway-core:7.15.0") // flyway
// Test
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.springframework.security:spring-security-test")
}
tasks.withType<KotlinCompile> {

View File

@@ -0,0 +1,27 @@
package io.beaniejoy.dongnecafe.common.config
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.security.config.annotation.web.builders.HttpSecurity
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
import org.springframework.security.crypto.factory.PasswordEncoderFactories
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.security.web.SecurityFilterChain
@Configuration
@EnableWebSecurity
class SecurityConfig {
@Bean
fun passwordEncoder(): PasswordEncoder {
return PasswordEncoderFactories.createDelegatingPasswordEncoder()
}
@Bean
fun filterChain(http: HttpSecurity): SecurityFilterChain {
return http
.cors().disable()
.csrf().disable()
.formLogin().disable()
.build()
}
}

View File

@@ -0,0 +1,24 @@
package io.beaniejoy.dongnecafe.controller
import io.beaniejoy.dongnecafe.domain.member.model.request.SignInRequest
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/auth")
class AuthController(
private val authenticationManagerBuilder: AuthenticationManagerBuilder
) {
@PostMapping("/authenticate")
fun signIn(@RequestBody signInRequest: SignInRequest) {
val authenticationToken =
UsernamePasswordAuthenticationToken(signInRequest.email, signInRequest.password)
val authenticate = authenticationManagerBuilder.`object`.authenticate(authenticationToken)
}
}

View File

@@ -8,11 +8,11 @@ import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/api/members")
@RequestMapping("/auth/members")
class MemberController(
private val memberService: MemberService
) {
@PostMapping("/signup")
@PostMapping("/sign-up")
fun signUp(@RequestBody resource: MemberRegisterRequest): Long {
return memberService.registerMember(resource)
}

View File

@@ -4,13 +4,15 @@ import io.beaniejoy.dongnecafe.domain.member.entity.Member
import io.beaniejoy.dongnecafe.domain.member.model.request.MemberRegisterRequest
import io.beaniejoy.dongnecafe.domain.member.repository.MemberRepository
import io.beaniejoy.dongnecafe.error.MemberExistedException
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
@Service
@Transactional
class MemberService(
private val memberRepository: MemberRepository
private val memberRepository: MemberRepository,
private val passwordEncoder: PasswordEncoder
) {
fun registerMember(resource: MemberRegisterRequest): Long {
memberRepository.findByEmail(resource.email!!)?.also {
@@ -20,7 +22,7 @@ class MemberService(
val registeredMember = memberRepository.save(
Member.createMember(
email = resource.email!!,
password = resource.password!!,
password = passwordEncoder.encode(resource.password!!),
address = resource.address!!,
phoneNumber = resource.phoneNumber!!
)

View File

@@ -0,0 +1,6 @@
package io.beaniejoy.dongnecafe.domain.member.model.request
data class SignInRequest(
val email: String,
val password: String
)