add sessions
This commit is contained in:
parent
e1b901f01c
commit
907f76d11d
@ -16,6 +16,8 @@ trait UserSessionRepository {
|
|||||||
ipAddress: Option[String],
|
ipAddress: Option[String],
|
||||||
userAgent: Option[String]
|
userAgent: Option[String]
|
||||||
): IO[UUID]
|
): IO[UUID]
|
||||||
|
|
||||||
|
def updateTokens(sessionId: UUID, accessToken: String, refreshToken: String): IO[Int]
|
||||||
}
|
}
|
||||||
|
|
||||||
class UserSessionRepositoryImpl(transactor: Transactor[IO]) extends UserSessionRepository {
|
class UserSessionRepositoryImpl(transactor: Transactor[IO]) extends UserSessionRepository {
|
||||||
@ -31,4 +33,12 @@ class UserSessionRepositoryImpl(transactor: Transactor[IO]) extends UserSessionR
|
|||||||
VALUES ($userId, $accessToken, $refreshToken, $ipAddress, $userAgent)
|
VALUES ($userId, $accessToken, $refreshToken, $ipAddress, $userAgent)
|
||||||
""".update.withUniqueGeneratedKeys[UUID]("id").transact(transactor)
|
""".update.withUniqueGeneratedKeys[UUID]("id").transact(transactor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override def updateTokens(sessionId: UUID, accessToken: String, refreshToken: String): IO[Int] = {
|
||||||
|
sql"""
|
||||||
|
UPDATE user_sessions
|
||||||
|
SET access_token = $accessToken, refresh_token = $refreshToken
|
||||||
|
WHERE id = $sessionId
|
||||||
|
""".update.run.transact(transactor)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,7 +35,7 @@ class AuthService(
|
|||||||
sessionId <- userSessionRepository.insert(user.id, "temp", "temp", ipAddress, userAgent)
|
sessionId <- userSessionRepository.insert(user.id, "temp", "temp", ipAddress, userAgent)
|
||||||
tokens <- jwtService.createTokens(user.id, sessionId)
|
tokens <- jwtService.createTokens(user.id, sessionId)
|
||||||
(accessToken, refreshToken) = tokens
|
(accessToken, refreshToken) = tokens
|
||||||
// TODO: Update tokens in user_sessions table after creation
|
_ <- userSessionRepository.updateTokens(sessionId, accessToken, refreshToken)
|
||||||
// TODO: Save session to Redis
|
// TODO: Save session to Redis
|
||||||
} yield Right(LoginResponse(message = Tokens(accessToken = accessToken, refreshToken = refreshToken)))
|
} yield Right(LoginResponse(message = Tokens(accessToken = accessToken, refreshToken = refreshToken)))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user