more initial impl of auth utils
This commit is contained in:
parent
b29d1a1ef1
commit
6c1220b544
|
@ -58,7 +58,7 @@ object Auth {
|
||||||
println(
|
println(
|
||||||
s"> access room for $roomName $roomPassword $nickName, to return stub 111"
|
s"> access room for $roomName $roomPassword $nickName, to return stub 111"
|
||||||
)
|
)
|
||||||
) >> IO.pure(Right(ResponseCookie("authcookie", "1")))
|
) >> IO.pure(Right(ResponseCookie("authcookieName", "1")))
|
||||||
|
|
||||||
override def deleteSession(sessionId: Long): IO[Unit] =
|
override def deleteSession(sessionId: Long): IO[Unit] =
|
||||||
IO(s"got request to leave for $sessionId")
|
IO(s"got request to leave for $sessionId")
|
||||||
|
@ -71,7 +71,7 @@ object Auth {
|
||||||
roomService: RoomService[F]
|
roomService: RoomService[F]
|
||||||
) extends Auth[F] {
|
) extends Auth[F] {
|
||||||
|
|
||||||
val authcookie = "authcookie"
|
val authcookieName = "authcookie"
|
||||||
|
|
||||||
override def joinRoom(
|
override def joinRoom(
|
||||||
roomName: String,
|
roomName: String,
|
||||||
|
@ -89,20 +89,30 @@ object Auth {
|
||||||
.leftMap(_.toString())
|
.leftMap(_.toString())
|
||||||
newSessionId = Random.nextLong()
|
newSessionId = Random.nextLong()
|
||||||
_ <- EitherT.liftF(sessions.update(_.updated(newSessionId, (roomId, playerId))))
|
_ <- EitherT.liftF(sessions.update(_.updated(newSessionId, (roomId, playerId))))
|
||||||
} yield ResponseCookie(name = authcookie, content = newSessionId.toString(), secure = true)
|
} yield ResponseCookie(
|
||||||
|
name = authcookieName,
|
||||||
|
content = newSessionId.toString(),
|
||||||
|
secure = true
|
||||||
|
)
|
||||||
|
|
||||||
result.value
|
result.value
|
||||||
}
|
}
|
||||||
|
|
||||||
override def authUser
|
override def authUser
|
||||||
: Kleisli[[A] =>> cats.data.OptionT[F, A], Request[F], (PlayerID, RoomID)] = {
|
: Kleisli[[A] =>> cats.data.OptionT[F, A], Request[F], (PlayerID, RoomID)] = {
|
||||||
// check authcookie presence, exchange it for playerID ad roomID
|
Kleisli { (request: Request[F]) =>
|
||||||
???
|
OptionT(sessions.get.map { sessionsMap =>
|
||||||
|
for {
|
||||||
|
authcookie <- request.cookies.find(_.name == authcookieName)
|
||||||
|
sessionId <- authcookie.content.toLongOption
|
||||||
|
(roomId, playerId) <- sessionsMap.get(sessionId)
|
||||||
|
} yield (playerId, roomId)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override def deleteSession(sessionId: Long): F[Unit] = {
|
override def deleteSession(sessionId: Long): F[Unit] = {
|
||||||
// i suppose leaving the room should just be authed route & method
|
sessions.update(_.removed(sessionId))
|
||||||
???
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ object Models {
|
||||||
final case class Room(
|
final case class Room(
|
||||||
id: RoomID,
|
id: RoomID,
|
||||||
players: List[Player],
|
players: List[Player],
|
||||||
owner: PlayerID,
|
owner: PlayerID, // TODO switch to nickname
|
||||||
password: String,
|
password: String,
|
||||||
allowedCards: List[String],
|
allowedCards: List[String],
|
||||||
round: RoundState,
|
round: RoundState,
|
||||||
|
|
Loading…
Reference in New Issue