Auctions index and CORS filter

This commit is contained in:
2026-09-03 00:02:34 +03:00
parent f2ec6889cb
commit eadf793882
4 changed files with 23 additions and 2 deletions
+7
View File
@@ -20,6 +20,13 @@ class AuctionsController @Inject()(val controllerComponents: ControllerComponent
authenticatedAction: AuthenticatedAction, authenticatedAction: AuthenticatedAction,
val auctionPublisher: ActorRef[AuctionPublisher.Command], val auctionPublisher: ActorRef[AuctionPublisher.Command],
implicit val ec: ExecutionContext) extends BaseController { implicit val ec: ExecutionContext) extends BaseController {
def index = authenticatedAction.async { implicit request =>
for {
auctions <- auctionsDAO.list_available(request.user)
json = Json.toJson(auctions)
} yield Ok(json)
}
def create = authenticatedAction.async(parse.json) { implicit request => def create = authenticatedAction.async(parse.json) { implicit request =>
val auctionCreateDataResult = request.body.validate[AuctionCreateData] val auctionCreateDataResult = request.body.validate[AuctionCreateData]
auctionCreateDataResult.fold( auctionCreateDataResult.fold(
+1 -1
View File
@@ -17,7 +17,7 @@ class LoggingFilter @Inject()(implicit val mat: Materializer, ec: ExecutionConte
val endTime = System.currentTimeMillis() val endTime = System.currentTimeMillis()
val requestTime = endTime - startTime val requestTime = endTime - startTime
logger.info(s"${requestHeader.method} ${requestHeader.uri} ${result.header.status} $requestTime") logger.info(s"${requestHeader.method} ${requestHeader.uri} ${result.header.status} ${requestTime}ms")
result result
} }
+11 -1
View File
@@ -2,7 +2,7 @@ package dao
import models.{Auction, AuctionStatus} import models.{Auction, AuctionStatus}
import schemas.Auctions import schemas.Auctions
import schemas.auctionStatusColumnType import schemas.given
import play.api.db.slick.{DatabaseConfigProvider, HasDatabaseConfigProvider} import play.api.db.slick.{DatabaseConfigProvider, HasDatabaseConfigProvider}
import slick.jdbc.PostgresProfile import slick.jdbc.PostgresProfile
import slick.jdbc.PostgresProfile.api.* import slick.jdbc.PostgresProfile.api.*
@@ -15,6 +15,16 @@ import scala.util.Random
class AuctionsDAO @Inject()(protected val dbConfigProvider: DatabaseConfigProvider)(implicit val ec: ExecutionContext) class AuctionsDAO @Inject()(protected val dbConfigProvider: DatabaseConfigProvider)(implicit val ec: ExecutionContext)
extends HasDatabaseConfigProvider[PostgresProfile] { extends HasDatabaseConfigProvider[PostgresProfile] {
def list_available(user: models.User): Future[Seq[Auction]] = {
db.run {
Auctions.filter(row => (row.status === AuctionStatus.Ready) && (row.authorId =!= user.id.get)).result
}
}
def list_created_by(user: models.User): Future[Seq[Auction]] = {
db.run(Auctions.filter(_.authorId === user.id).result)
}
def create(name: String, startingPrice: BigDecimal, author: models.User): Future[Auction] = { def create(name: String, startingPrice: BigDecimal, author: models.User): Future[Auction] = {
val auction = Auction( val auction = Auction(
id = None, name = name, id = None, name = name,
+4
View File
@@ -2,9 +2,13 @@
play.http.filters=controllers.filters.Filters play.http.filters=controllers.filters.Filters
play.filters.enabled += "play.filters.cors.CORSFilter"
play.filters.csrf.header.bypassHeaders { play.filters.csrf.header.bypassHeaders {
X-Requested-With = "*" X-Requested-With = "*"
} }
play.filters.cors {
allowedOrigins = ["http://localhost:4321"]
}
play.modules.enabled += "mqttClient.Module" play.modules.enabled += "mqttClient.Module"