unused removed

This commit is contained in:
Andrey Kassaev 2024-01-01 11:23:39 +04:00
parent 5f0a7fe2a3
commit 60fe7d5abb
11 changed files with 9 additions and 162 deletions

View File

@ -1,7 +1,6 @@
package com.kassaev.notes.config
import com.kassaev.notes.repository.IUserRepository
import com.kassaev.notes.repository.UserRepository
import com.kassaev.notes.service.CustomUserDetailsService
import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean

View File

@ -18,7 +18,7 @@ class AuthController(
fun authenticate(@RequestBody authRequest: AuthenticationRequest): AuthenticationResponse =
authenticationService.authentication(authRequest)
@PostMapping("/refresh_old")
@PostMapping("/refresh")
fun refreshAccessToken(
@RequestBody request: RefreshTokenRequest
): TokenResponse =
@ -26,14 +26,6 @@ class AuthController(
?.mapToTokenResponse()
?: throw ResponseStatusException(HttpStatus.FORBIDDEN, "Invalid refresh token!")
@PostMapping("/refresh")
fun refreshAccessToken2(
@RequestBody request: RefreshTokenRequest
): TokenResponse =
authenticationService.refreshAccessToken2(request.token)
?.mapToTokenResponse()
?: throw ResponseStatusException(HttpStatus.FORBIDDEN, "Invalid refresh token!")
private fun String.mapToTokenResponse(): TokenResponse =
TokenResponse(
token = this

View File

@ -3,15 +3,7 @@ package com.kassaev.notes.controller.note
import com.kassaev.notes.model.Note
import com.kassaev.notes.service.NoteService
import lombok.AllArgsConstructor
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.DeleteMapping
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.PutMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.*
import java.util.*
@RestController
@ -19,9 +11,6 @@ import java.util.*
@AllArgsConstructor
class NoteController(val service: NoteService) {
// @Autowired
// lateinit var service: NoteService
@GetMapping("/all")
fun getAllNotes(): List<Note> {
return service.getAllNotes()

View File

@ -3,16 +3,9 @@ package com.kassaev.notes.controller.user
import com.kassaev.notes.model.Role
import com.kassaev.notes.model.User
import com.kassaev.notes.service.UserService
import org.springframework.data.jpa.domain.AbstractPersistable_.id
import org.springframework.http.HttpStatus
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.web.bind.annotation.DeleteMapping
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
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
import org.springframework.web.bind.annotation.*
import org.springframework.web.server.ResponseStatusException
@RestController

View File

@ -3,7 +3,6 @@ package com.kassaev.notes.model
import jakarta.persistence.Entity
import jakarta.persistence.Id
import jakarta.persistence.Table
import org.springframework.security.core.userdetails.UserDetails
@Entity
@Table(name = "refresh_tokens")

View File

@ -4,9 +4,6 @@ import com.kassaev.notes.model.User
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Query
import org.springframework.data.repository.query.Param
import java.awt.print.Book
import java.time.LocalDate
interface IUserRepository: JpaRepository<User, Long> {

View File

@ -1,17 +0,0 @@
package com.kassaev.notes.repository
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.stereotype.Repository
@Repository
class RefreshTokenRepository {
private val tokens = mutableMapOf<String, UserDetails>()
fun findUserDetailsByToken(token: String): UserDetails? =
tokens[token]
fun save(token: String, userDetails: UserDetails) {
tokens[token] = userDetails
}
}

View File

@ -1,57 +0,0 @@
package com.kassaev.notes.repository
import com.kassaev.notes.model.Role
import com.kassaev.notes.model.User
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.stereotype.Repository
@Repository
class UserRepository(
private val encoder: PasswordEncoder
) {
private val users = mutableListOf(
User(
id = 1,
email = "user1@mail.com",
password = encoder.encode("pass1"),
role = Role.USER
),
User(
id = 2,
email = "user2@mail.com",
password = encoder.encode("pass2"),
role = Role.USER
),
User(
id = 3,
email = "user3@mail.com",
password = encoder.encode("pass3"),
role = Role.ADMIN
),
)
fun save(user: User): Boolean {
val updated = user.copy(password = encoder.encode(
user.password
))
return users.add(updated)
}
fun findByEmail(email: String): User? =
users.firstOrNull { it.email == email }
fun findById(id: Long): User? =
users.firstOrNull { it.id == id }
fun findAll(): List<User> =
users
fun deleteById(id: Long): Boolean {
val foundUser = findById(id)
return foundUser?.let {
users.remove(it)
} ?: false
}
}

View File

@ -5,12 +5,11 @@ import com.kassaev.notes.controller.auth.AuthenticationRequest
import com.kassaev.notes.controller.auth.AuthenticationResponse
import com.kassaev.notes.model.RefreshToken
import com.kassaev.notes.repository.IRefreshTokenRepository
import com.kassaev.notes.repository.RefreshTokenRepository
import org.springframework.security.authentication.AuthenticationManager
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.stereotype.Service
import java.util.Date
import java.util.*
@Service
class AuthenticationService(
@ -18,8 +17,7 @@ class AuthenticationService(
private val userDetailsService: CustomUserDetailsService,
private val tokenService: TokenService,
private val jwtProperties: JwtProperties,
private val refreshTokenRepository: RefreshTokenRepository,
private val refreshTokenRepository2: IRefreshTokenRepository
private val refreshTokenRepository: IRefreshTokenRepository
) {
fun authentication(authRequest: AuthenticationRequest): AuthenticationResponse {
authManager.authenticate(
@ -34,13 +32,12 @@ class AuthenticationService(
val accessToken = generateAccessToken(user)
val refreshToken = generateRefreshToken(user)
refreshTokenRepository2.save(
refreshTokenRepository.save(
RefreshToken(
email = user.username,
token = refreshToken
)
)
// refreshTokenRepository2.save(refreshToken, user)
return AuthenticationResponse(
accessToken = accessToken,
@ -63,49 +60,13 @@ class AuthenticationService(
return extractedEmail?.let { email ->
val currentUserDetails = userDetailsService.loadUserByUsername(email)
val refreshTokenUserDetails = refreshTokenRepository.findUserDetailsByToken(token)
if (!tokenService.isExpired(token) && currentUserDetails.username == refreshTokenUserDetails?.username)
// TODO: check if this refresh token is the same token in db for this user <refresh token, user>. If so generate new access token and refresh token and update record in with newly created refresh token for this user.
val refreshTokenInDB = refreshTokenRepository.findByEmail(currentUserDetails.username)
if (!tokenService.isExpired(token) && currentUserDetails.username == refreshTokenInDB?.email)
generateAccessToken(currentUserDetails)
else
null
}
}
fun refreshAccessToken2(token: String): String? {
val extractedEmail = tokenService.extractEmail(token)
println()
println(extractedEmail)
println()
return extractedEmail?.let { email ->
val currentUserDetails = userDetailsService.loadUserByUsername(email)
println()
println("AAAAAAAAAAAAAAAA")
println(currentUserDetails.username)
println()
val refreshTokenInDB = refreshTokenRepository2.findByEmail(currentUserDetails.username)
// val refreshTokenUserDetails = refreshTokenRepository2.findUserDetailsByToken(token)
println()
println("BBBBBBBBBBB")
println(refreshTokenInDB?.email)
println()
if (!tokenService.isExpired(token) && currentUserDetails.username == refreshTokenInDB?.email){
// TODO: check if this refresh token is the same token in db for this user <refresh token, user>. If so generate new access token and refresh token and update record in with newly created refresh token for this user.
println()
println("PPPPPPPPPPPPPPPPPPAAAAAAAAAAAAAAAASSSSSSSSSSSSSSSEEEEEEEEEEEEEEEDDDDDDDDDDDD!!!")
println()
generateAccessToken(currentUserDetails)
} else
null
}
}
}

View File

@ -1,7 +1,6 @@
package com.kassaev.notes.service
import com.kassaev.notes.model.Note
//import com.kassaev.notes.repository.MockRepository
import com.kassaev.notes.repository.INoteRepository
import org.springframework.stereotype.Service
import java.util.*
@ -11,21 +10,17 @@ class NoteService(val repository: INoteRepository) {
fun getAllNotes(): List<Note>{
return repository.findAll()
// return repository.getAllNotes()
}
fun getNoteById(id: Long): Optional<Note> {
return repository.findById(id)
// return repository.getNoteById(id)
}
fun updateNote(note: Note): Note {
return repository.save(note)
// return repository.updateNote(note)
}
fun deleteNote(id: Long){
repository.deleteById(id)
// repository.deleteNote(id)
}
}

View File

@ -12,11 +12,7 @@ import java.util.Date
class TokenService(
jwtProperties: JwtProperties
) {
val sekret = jwtProperties.key
private val secretKey = Keys.hmacShaKeyFor(
jwtProperties.key.toByteArray()
)