From 6c1220b544b2238dcdc8d3f23fef6683e30d952e Mon Sep 17 00:00:00 2001 From: efim Date: Wed, 26 Apr 2023 08:39:43 +0400 Subject: [PATCH] more initial impl of auth utils --- .../sunshine/planningpoker/Auth.scala | 24 +++++++++++++------ .../sunshine/planningpoker/Models.scala | 2 +- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/backend/src/main/scala/industries/sunshine/planningpoker/Auth.scala b/backend/src/main/scala/industries/sunshine/planningpoker/Auth.scala index 47b6f57..0b35c49 100644 --- a/backend/src/main/scala/industries/sunshine/planningpoker/Auth.scala +++ b/backend/src/main/scala/industries/sunshine/planningpoker/Auth.scala @@ -58,7 +58,7 @@ object Auth { println( 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] = IO(s"got request to leave for $sessionId") @@ -71,7 +71,7 @@ object Auth { roomService: RoomService[F] ) extends Auth[F] { - val authcookie = "authcookie" + val authcookieName = "authcookie" override def joinRoom( roomName: String, @@ -89,20 +89,30 @@ object Auth { .leftMap(_.toString()) newSessionId = Random.nextLong() _ <- 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 } override def authUser : 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] = { - // i suppose leaving the room should just be authed route & method - ??? + sessions.update(_.removed(sessionId)) } } diff --git a/common/src/main/scala/industries/sunshine/planningpoker/Models.scala b/common/src/main/scala/industries/sunshine/planningpoker/Models.scala index ebab018..f8d47f0 100644 --- a/common/src/main/scala/industries/sunshine/planningpoker/Models.scala +++ b/common/src/main/scala/industries/sunshine/planningpoker/Models.scala @@ -63,7 +63,7 @@ object Models { final case class Room( id: RoomID, players: List[Player], - owner: PlayerID, + owner: PlayerID, // TODO switch to nickname password: String, allowedCards: List[String], round: RoundState,