From 60fe7d5abb460ea94d3541ff0af2bcad3c955528 Mon Sep 17 00:00:00 2001 From: Andrey Kassaev Date: Mon, 1 Jan 2024 11:23:39 +0400 Subject: [PATCH] unused removed --- .../com/kassaev/notes/config/Configuration.kt | 1 - .../notes/controller/auth/AuthController.kt | 10 +--- .../notes/controller/note/NoteController.kt | 13 +---- .../notes/controller/user/UserController.kt | 9 +-- .../com/kassaev/notes/model/RefreshToken.kt | 1 - .../notes/repository/IUserRepository.kt | 3 - .../repository/RefreshTokenRepository.kt | 17 ------ .../notes/repository/UserRepository.kt | 57 ------------------- .../notes/service/AuthenticationService.kt | 51 ++--------------- .../com/kassaev/notes/service/NoteService.kt | 5 -- .../com/kassaev/notes/service/TokenService.kt | 4 -- 11 files changed, 9 insertions(+), 162 deletions(-) delete mode 100644 src/main/kotlin/com/kassaev/notes/repository/RefreshTokenRepository.kt delete mode 100644 src/main/kotlin/com/kassaev/notes/repository/UserRepository.kt diff --git a/src/main/kotlin/com/kassaev/notes/config/Configuration.kt b/src/main/kotlin/com/kassaev/notes/config/Configuration.kt index e62645f..a034030 100644 --- a/src/main/kotlin/com/kassaev/notes/config/Configuration.kt +++ b/src/main/kotlin/com/kassaev/notes/config/Configuration.kt @@ -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 diff --git a/src/main/kotlin/com/kassaev/notes/controller/auth/AuthController.kt b/src/main/kotlin/com/kassaev/notes/controller/auth/AuthController.kt index 492d018..917e36c 100644 --- a/src/main/kotlin/com/kassaev/notes/controller/auth/AuthController.kt +++ b/src/main/kotlin/com/kassaev/notes/controller/auth/AuthController.kt @@ -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 diff --git a/src/main/kotlin/com/kassaev/notes/controller/note/NoteController.kt b/src/main/kotlin/com/kassaev/notes/controller/note/NoteController.kt index 55571dc..cb6fa66 100644 --- a/src/main/kotlin/com/kassaev/notes/controller/note/NoteController.kt +++ b/src/main/kotlin/com/kassaev/notes/controller/note/NoteController.kt @@ -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 { return service.getAllNotes() diff --git a/src/main/kotlin/com/kassaev/notes/controller/user/UserController.kt b/src/main/kotlin/com/kassaev/notes/controller/user/UserController.kt index f224161..4f4861e 100644 --- a/src/main/kotlin/com/kassaev/notes/controller/user/UserController.kt +++ b/src/main/kotlin/com/kassaev/notes/controller/user/UserController.kt @@ -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 diff --git a/src/main/kotlin/com/kassaev/notes/model/RefreshToken.kt b/src/main/kotlin/com/kassaev/notes/model/RefreshToken.kt index cf777f6..e485535 100644 --- a/src/main/kotlin/com/kassaev/notes/model/RefreshToken.kt +++ b/src/main/kotlin/com/kassaev/notes/model/RefreshToken.kt @@ -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") diff --git a/src/main/kotlin/com/kassaev/notes/repository/IUserRepository.kt b/src/main/kotlin/com/kassaev/notes/repository/IUserRepository.kt index 31d4f68..ac54d3a 100644 --- a/src/main/kotlin/com/kassaev/notes/repository/IUserRepository.kt +++ b/src/main/kotlin/com/kassaev/notes/repository/IUserRepository.kt @@ -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 { diff --git a/src/main/kotlin/com/kassaev/notes/repository/RefreshTokenRepository.kt b/src/main/kotlin/com/kassaev/notes/repository/RefreshTokenRepository.kt deleted file mode 100644 index 74155fd..0000000 --- a/src/main/kotlin/com/kassaev/notes/repository/RefreshTokenRepository.kt +++ /dev/null @@ -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() - - fun findUserDetailsByToken(token: String): UserDetails? = - tokens[token] - - fun save(token: String, userDetails: UserDetails) { - tokens[token] = userDetails - } -} \ No newline at end of file diff --git a/src/main/kotlin/com/kassaev/notes/repository/UserRepository.kt b/src/main/kotlin/com/kassaev/notes/repository/UserRepository.kt deleted file mode 100644 index 6c37395..0000000 --- a/src/main/kotlin/com/kassaev/notes/repository/UserRepository.kt +++ /dev/null @@ -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 = - users - - fun deleteById(id: Long): Boolean { - val foundUser = findById(id) - - return foundUser?.let { - users.remove(it) - } ?: false - } - -} \ No newline at end of file diff --git a/src/main/kotlin/com/kassaev/notes/service/AuthenticationService.kt b/src/main/kotlin/com/kassaev/notes/service/AuthenticationService.kt index a768b6e..2b24083 100644 --- a/src/main/kotlin/com/kassaev/notes/service/AuthenticationService.kt +++ b/src/main/kotlin/com/kassaev/notes/service/AuthenticationService.kt @@ -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 . 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 . 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 - } - } - } diff --git a/src/main/kotlin/com/kassaev/notes/service/NoteService.kt b/src/main/kotlin/com/kassaev/notes/service/NoteService.kt index 5d79233..c2b93fe 100644 --- a/src/main/kotlin/com/kassaev/notes/service/NoteService.kt +++ b/src/main/kotlin/com/kassaev/notes/service/NoteService.kt @@ -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{ return repository.findAll() -// return repository.getAllNotes() } fun getNoteById(id: Long): Optional { 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) } } \ No newline at end of file diff --git a/src/main/kotlin/com/kassaev/notes/service/TokenService.kt b/src/main/kotlin/com/kassaev/notes/service/TokenService.kt index 02f9764..476b6d3 100644 --- a/src/main/kotlin/com/kassaev/notes/service/TokenService.kt +++ b/src/main/kotlin/com/kassaev/notes/service/TokenService.kt @@ -12,11 +12,7 @@ import java.util.Date class TokenService( jwtProperties: JwtProperties ) { - val sekret = jwtProperties.key - - private val secretKey = Keys.hmacShaKeyFor( - jwtProperties.key.toByteArray() )