in app/controllers/BulkDownloadsController.scala [224:257]
def initiateGuts(codeValue:String)(cb:(ServerTokenEntry, LightboxBulkEntry)=>Future[Result]) = {
serverTokenDAO.get(codeValue).flatMap({
case None=>
logger.error(s"No token exists for $codeValue")
Future(Forbidden(GenericErrorResponse("forbidden", "invalid or expired token").asJson))
case Some(Left(err))=>
logger.error(s"Could not verify one-time token: ${err.toString}")
Future(Forbidden(GenericErrorResponse("forbidden", "invalid or expired token").asJson))
case Some(Right(token))=>
val updatedToken = token.updateCheckExpired(maxUses=Some(1)).copy(uses = token.uses+1)
if(updatedToken.expired){
logger.error(s"Token ${updatedToken.value} is expired, denying access")
errorResponse(updatedToken)
} else {
token.associatedId match {
case None=>
logger.error(s"Token ${token.value} has no bulk associated with it!")
errorResponse(updatedToken)
case Some(associatedId)=>
if(associatedId=="loose"){
val looseBulkEntry = LightboxBulkEntry.forLoose(updatedToken.createdForUser.getOrElse("unknown"),-1)
cb(updatedToken, looseBulkEntry)
} else {
lightboxBulkEntryDAO.entryForId(UUID.fromString(associatedId)).flatMap({
case Some(Left(err)) => errorResponse(updatedToken)
case None => errorResponse(updatedToken)
case Some(Right(bulkEntry)) =>
cb(updatedToken, bulkEntry)
})
}
}
}
})
}