Add logging when users login

This commit is contained in:
FyloZ 2021-12-22 16:21:44 -05:00
parent fe57745b63
commit b18ed35571
Signed by: william
GPG Key ID: 835378AE9AF4AE97
4 changed files with 25 additions and 10 deletions

View File

@ -41,6 +41,7 @@ class JwtAuthenticationFilter(
override fun attemptAuthentication(request: HttpServletRequest, response: HttpServletResponse): Authentication { override fun attemptAuthentication(request: HttpServletRequest, response: HttpServletResponse): Authentication {
val loginRequest = jacksonObjectMapper().readValue(request.inputStream, UserLoginRequest::class.java) val loginRequest = jacksonObjectMapper().readValue(request.inputStream, UserLoginRequest::class.java)
logger.debug("Login attempt for user ${loginRequest.id}...")
return authManager.authenticate(UsernamePasswordAuthenticationToken(loginRequest.id, loginRequest.password)) return authManager.authenticate(UsernamePasswordAuthenticationToken(loginRequest.id, loginRequest.password))
} }
@ -53,6 +54,10 @@ class JwtAuthenticationFilter(
val userDetails = auth.principal as UserDetails val userDetails = auth.principal as UserDetails
val token = jwtService.buildJwt(userDetails) val token = jwtService.buildJwt(userDetails)
with(userDetails.user) {
logger.info("User ${this.id} (${this.firstName} ${this.lastName}) has logged in successfully")
}
response.addHeader("Access-Control-Expose-Headers", authorizationCookieName) response.addHeader("Access-Control-Expose-Headers", authorizationCookieName)
response.addHeader(authorizationCookieName, "Bearer $token") response.addHeader(authorizationCookieName, "Bearer $token")
response.addCookie(authorizationCookieName, "Bearer$token") { response.addCookie(authorizationCookieName, "Bearer$token") {

View File

@ -7,6 +7,8 @@ import dev.fyloz.colorrecipesexplorer.model.account.User
import dev.fyloz.colorrecipesexplorer.service.users.JwtService import dev.fyloz.colorrecipesexplorer.service.users.JwtService
import dev.fyloz.colorrecipesexplorer.service.users.UserDetailsService import dev.fyloz.colorrecipesexplorer.service.users.UserDetailsService
import dev.fyloz.colorrecipesexplorer.service.users.UserService import dev.fyloz.colorrecipesexplorer.service.users.UserService
import mu.KLogger
import mu.KotlinLogging
import org.slf4j.Logger import org.slf4j.Logger
import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Bean
@ -39,9 +41,10 @@ abstract class BaseSecurityConfig(
private val userDetailsService: UserDetailsService, private val userDetailsService: UserDetailsService,
private val jwtService: JwtService, private val jwtService: JwtService,
private val environment: Environment, private val environment: Environment,
protected val logger: Logger,
protected val securityProperties: CreSecurityProperties protected val securityProperties: CreSecurityProperties
) : WebSecurityConfigurerAdapter() { ) : WebSecurityConfigurerAdapter() {
protected abstract val logger: Logger
protected val passwordEncoder = BCryptPasswordEncoder() protected val passwordEncoder = BCryptPasswordEncoder()
var debugMode = false var debugMode = false
@ -119,9 +122,10 @@ class SecurityConfig(
@Lazy private val userService: UserService, @Lazy private val userService: UserService,
jwtService: JwtService, jwtService: JwtService,
environment: Environment, environment: Environment,
logger: Logger,
securityProperties: CreSecurityProperties securityProperties: CreSecurityProperties
) : BaseSecurityConfig(userDetailsService, jwtService, environment, logger, securityProperties) { ) : BaseSecurityConfig(userDetailsService, jwtService, environment, securityProperties) {
override val logger = KotlinLogging.logger {}
@PostConstruct @PostConstruct
fun initWebSecurity() { fun initWebSecurity() {
if (emergencyMode) { if (emergencyMode) {
@ -165,9 +169,10 @@ class EmergencySecurityConfig(
userDetailsService: UserDetailsService, userDetailsService: UserDetailsService,
jwtService: JwtService, jwtService: JwtService,
environment: Environment, environment: Environment,
logger: Logger,
securityProperties: CreSecurityProperties securityProperties: CreSecurityProperties
) : BaseSecurityConfig(userDetailsService, jwtService, environment, logger, securityProperties) { ) : BaseSecurityConfig(userDetailsService, jwtService, environment, securityProperties) {
override val logger = KotlinLogging.logger {}
init { init {
emergencyMode = true emergencyMode = true
} }

View File

@ -5,6 +5,7 @@ import dev.fyloz.colorrecipesexplorer.config.annotations.PreAuthorizeViewUsers
import dev.fyloz.colorrecipesexplorer.model.account.* import dev.fyloz.colorrecipesexplorer.model.account.*
import dev.fyloz.colorrecipesexplorer.service.users.GroupService import dev.fyloz.colorrecipesexplorer.service.users.GroupService
import dev.fyloz.colorrecipesexplorer.service.users.UserService import dev.fyloz.colorrecipesexplorer.service.users.UserService
import mu.KotlinLogging
import org.springframework.context.annotation.Profile import org.springframework.context.annotation.Profile
import org.springframework.http.MediaType import org.springframework.http.MediaType
import org.springframework.security.access.prepost.PreAuthorize import org.springframework.security.access.prepost.PreAuthorize

View File

@ -1,7 +1,7 @@
package dev.fyloz.colorrecipesexplorer.service.jobs package dev.fyloz.colorrecipesexplorer.service.jobs
import dev.fyloz.colorrecipesexplorer.service.TouchUpKitService import dev.fyloz.colorrecipesexplorer.service.TouchUpKitService
import org.slf4j.Logger import mu.KotlinLogging
import org.springframework.context.annotation.Profile import org.springframework.context.annotation.Profile
import org.springframework.scheduling.annotation.Scheduled import org.springframework.scheduling.annotation.Scheduled
import org.springframework.stereotype.Component import org.springframework.stereotype.Component
@ -9,18 +9,22 @@ import org.springframework.stereotype.Component
@Component @Component
@Profile("!emergency") @Profile("!emergency")
class TouchUpKitRemover( class TouchUpKitRemover(
private val touchUpKitService: TouchUpKitService, private val touchUpKitService: TouchUpKitService
private val logger: Logger
) { ) {
private val logger = KotlinLogging.logger {}
@Scheduled(cron = "0 0 0 * * *") @Scheduled(cron = "0 0 0 * * *")
fun execute() { fun execute() {
logger.debug("Executing expired touch up kits removal job... ")
removeExpiredKits() removeExpiredKits()
} }
private fun removeExpiredKits() { private fun removeExpiredKits() {
logger.info("Removing expired touch up kits...")
with(touchUpKitService.getAll().filter(touchUpKitService::isExpired)) { with(touchUpKitService.getAll().filter(touchUpKitService::isExpired)) {
this.forEach(touchUpKitService::delete) this.forEach {
logger.debug("Removed expired touch up kit ${it.id} (${it.project} ${it.buggy})")
touchUpKitService.delete(it)
}
logger.info("Removed ${this.size} expired touch up kits") logger.info("Removed ${this.size} expired touch up kits")
} }
} }