Skip to content

Commit

Permalink
siivottu turhia metodeita, draft lähetyksen hausta käyttöoikeusrajauk…
Browse files Browse the repository at this point in the history
…silla
  • Loading branch information
marjakari committed Jan 26, 2024
1 parent 84a087e commit 3660653
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 224 deletions.
105 changes: 41 additions & 64 deletions integraatio/src/test/scala/fi/oph/viestinvalitys/LocalUtil.scala
Original file line number Diff line number Diff line change
Expand Up @@ -163,63 +163,59 @@ object LocalUtil {
val kantaOperaatiot = new KantaOperaatiot(DbUtil.database)
val lahetyksia = kantaOperaatiot.getLahetykset(Option.empty, Option.apply(20))
if(lahetyksia.isEmpty || lahetyksia.length < 3) {
// lähetyksiä joissa useita viestejä
/*
otsikko: String,
omistaja: String, lahettavaPalvelu: String,
lahettavanVirkailijanOID: Option[String],
lahettaja: Kontakti,
replyTo: Option[String],
prioriteetti: Prioriteetti,
sailytysAika: Int
*/
val lahetys = kantaOperaatiot.tallennaLahetys(
"Testiotsikko",
"omistaja",
"hakemuspalvelu",
Option.apply("0.1.2.3"),
Kontakti(Option.apply("Testi Virkailija"), "[email protected]"),
Option.apply("[email protected]"),
Prioriteetti.NORMAALI,
365
)
// lähetyksiä joissa räätälöity viesti useilla vastaanottajilla
Range(0, 25).map(counter => {
val lahetys = kantaOperaatiot.tallennaLahetys(
"Testiotsikko "+counter,
"omistaja",
"hakemuspalvelu",
Option.apply("0.1.2.3"),
Kontakti(Option.apply("Testi Virkailija"+counter), "[email protected]"+counter),
Option.apply("[email protected]"),
Prioriteetti.NORMAALI,
365
)
// viestit lähetystunnuksella
Range(0, 25).map(viestinro => {
kantaOperaatiot.tallennaViesti("Viestin testiotsikko " + viestinro,
"Viestin sisältö " + viestinro,
SisallonTyyppi.TEXT,
Set(Kieli.FI),
Map.empty,
Option.empty,
Option.empty,
Option.empty,
Seq(Kontakti(Option.apply("Vastaanottaja " + viestinro), "vastaanottaja" + viestinro + "@example.com")),
Seq.empty,
Option.empty,
Option.apply(lahetys.tunniste),
Option.empty,
Option.apply(365),
Set(SecurityConstants.SECURITY_ROOLI_KATSELU_FULL),
Map("avain" -> Seq("arvo")),
"omistaja")
})
})
// lähetys jossa samalla viestillä useita vastaanottajia
val lahetys2 = kantaOperaatiot.tallennaLahetys(
"Testiotsikko2",
"omistaja",
"hakemuspalvelu",
Option.apply("0.1.2.3"),
Kontakti(Option.apply("Testi Virkailija"), "testi[email protected]"),
Kontakti(Option.apply("Joku Virkailija"), "joku[email protected]"),
Option.apply("[email protected]"),
Prioriteetti.NORMAALI,
365
)
// viestit lähetystunnuksella
kantaOperaatiot.tallennaViesti("Viestin testiotsikko 1",
"Viestin sisältö",
SisallonTyyppi.TEXT,
Set(Kieli.FI),
Map.empty,
Option.empty,
Option.empty,
Option.empty,
Range(0, 25).map(suffix => Kontakti(Option.apply("Vastaanottaja" + suffix), "vastaanottaja" + suffix + "@example.com")),
Seq.empty,
Option.empty,
Option.apply(lahetys.tunniste),
Option.empty,
Option.apply(365),
Set(SecurityConstants.SECURITY_ROOLI_KATSELU_FULL),
Map("avain" -> Seq("arvo")),
"omistaja")
kantaOperaatiot.tallennaViesti("Viestin testiotsikko 2",
"Viestin sisältö",
kantaOperaatiot.tallennaViesti("Massaviestin testiotsikko",
"Massaviestin sisältö",
SisallonTyyppi.TEXT,
Set(Kieli.FI),
Map.empty, // maskit
Option.empty, // läh. oid
Option.empty, // lähettäjä
Option.empty, // replyto
Range(0, 3).map(suffix => Kontakti(Option.apply("Vastaanottaja" + suffix), "vastaanottaja" + suffix + "@example.com")),
Range(0, 20).map(suffix => Kontakti(Option.apply("Vastaanottaja" + suffix), "vastaanottaja" + suffix + "@example.com")),
Seq.empty,
Option.empty,
Option.apply(lahetys2.tunniste),
Expand All @@ -230,7 +226,7 @@ object LocalUtil {
"omistaja")
// tyhjä lähetys
val lahetys3 = kantaOperaatiot.tallennaLahetys(
"Testiotsikko3",
"Orpo lähetys",
"omistaja",
"osoitepalvelu",
Option.apply("0.1.2.3"),
Expand All @@ -239,28 +235,9 @@ object LocalUtil {
Prioriteetti.NORMAALI,
365
)
/*
otsikko: String,
sisalto: String,
sisallonTyyppi: SisallonTyyppi,
kielet: Set[Kieli],
maskit: Map[String, Option[String]],
lahettavanVirkailijanOID: Option[String],
lahettaja: Option[Kontakti],
replyTo: Option[String],
vastaanottajat: Seq[Kontakti],
liiteTunnisteet: Seq[UUID],
lahettavaPalvelu: Option[String],
lahetysTunniste: Option[UUID],
prioriteetti: Option[Prioriteetti],
sailytysAika: Option[Int],
kayttooikeusRajoitukset: Set[String],
metadata: Map[String, Seq[String]],
omistaja: String
*/
// viesti ilman lähetystunnusta
kantaOperaatiot.tallennaViesti("Viestin testiotsikko 1",
"Viestin sisältö",
kantaOperaatiot.tallennaViesti("Tärkeää asiaa",
"Tärkeä sisältö",
SisallonTyyppi.TEXT,
Set(Kieli.FI),
Map.empty,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,30 +76,6 @@ case class PalautaLahetysFailureResponse(
@BeanProperty virhe: String,
) extends PalautaLahetysResponse

class PalautaViestitResponse() {}

@JsonInclude(JsonInclude.Include.NON_ABSENT)
case class ViestiResponse(
@BeanProperty lahetysTunniste: String,
@BeanProperty lahettavapalvelu: String,
@BeanProperty otsikko: String,
@BeanProperty tunniste: String,
@BeanProperty sisalto: String,
@BeanProperty sisallonTyyppi: String,
@BeanProperty lahettavanVirkailijanOID: String,
@BeanProperty replyTo: String,
@BeanProperty omistaja: String
)

@JsonInclude(JsonInclude.Include.NON_ABSENT)
case class PalautaViestitSuccessResponse(
@BeanProperty viestit: java.util.List[ViestiResponse],
) extends PalautaViestitResponse

case class PalautaViestitFailureResponse(
@BeanProperty virhe: String,
) extends PalautaViestitResponse

class VastaanottajatResponse() {}

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Expand Down Expand Up @@ -131,70 +107,6 @@ class LahetysResource {

val LOG = LoggerFactory.getLogger(classOf[LahetysResource]);

@GetMapping(
path = Array(GET_VIESTIT_LAHETYSTUNNISTEELLA_PATH),
produces = Array(MediaType.APPLICATION_JSON_VALUE)
)
@Operation(
summary = "Palauttaa listan viestejä lähetystunnisteella",
description = "Palauttaa lähetyksen viestien tiedot raportointikäyttöliittymälle",
responses = Array(
new ApiResponse(responseCode = "200", description = "Palauttaa viestit", content = Array(new Content(schema = new Schema(implementation = classOf[PalautaViestitSuccessResponse])))),
new ApiResponse(responseCode = "400", description = RESPONSE_400_DESCRIPTION, content = Array(new Content(schema = new Schema(implementation = classOf[PalautaLahetysFailureResponse])))),
new ApiResponse(responseCode = "403", description = KATSELU_RESPONSE_403_DESCRIPTION, content = Array(new Content(schema = new Schema(implementation = classOf[Void])))),
new ApiResponse(responseCode = "410", description = KATSELU_RESPONSE_410_DESCRIPTION, content = Array(new Content(schema = new Schema(implementation = classOf[Void]))))
))
def lueLahetyksenViestit(@PathVariable(LAHETYSTUNNISTE_PARAM_NAME) lahetysTunniste: String): ResponseEntity[PalautaViestitResponse] =
val securityOperaatiot = new SecurityOperaatiot
val kantaOperaatiot = new KantaOperaatiot(DbUtil.database)

LogContext(lahetysTunniste = lahetysTunniste)(() =>
try
Right(None)
.flatMap(_ =>
// tarkistetaan katseluoikeus
if (!securityOperaatiot.onOikeusKatsella())
Left(ResponseEntity.status(HttpStatus.FORBIDDEN).build())
else
Right(None))
.flatMap(_ =>
// validoidaan tunniste
val uuid = ParametriUtil.asUUID(lahetysTunniste)
if (uuid.isEmpty)
Left(ResponseEntity.status(HttpStatus.BAD_REQUEST).body(PalautaViestitFailureResponse(LAHETYSTUNNISTE_INVALID)))
else
Right(uuid.get))
.flatMap(tunniste =>
// haetaan lähetys
val lahetys = kantaOperaatiot.getLahetys(tunniste)
if (lahetys.isEmpty)
Left(ResponseEntity.status(HttpStatus.GONE).build())
else
Right(lahetys.get))
.flatMap(lahetys =>
// tarkistetaan oikeudet lähetykseen
val lahetyksenOikeudet: Set[String] = kantaOperaatiot.getLahetystenKayttooikeudet(Seq(lahetys.tunniste)).getOrElse(lahetys.tunniste, Set.empty)
val onLukuOikeudet = securityOperaatiot.onOikeusKatsellaEntiteetti(lahetys.omistaja, lahetyksenOikeudet)
if (!onLukuOikeudet)
Left(ResponseEntity.status(HttpStatus.FORBIDDEN).build())
else
Right(lahetys))
.map(lahetys =>
// haetaan viestit
val viestit = kantaOperaatiot.getLahetyksenViestit(lahetys.tunniste)
ResponseEntity.status(HttpStatus.OK).body(PalautaViestitSuccessResponse(
viestit.map(viesti => ViestiResponse(
lahetys.tunniste.toString, lahetys.lahettavaPalvelu, lahetys.otsikko,
viesti.tunniste.toString, viesti.sisalto, viesti.sisallonTyyppi.toString,
viesti.lahettavanVirkailijanOID.getOrElse(""), viesti.replyTo.getOrElse(""), viesti.omistaja
)).asJava
)))
.fold(e => e, r => r).asInstanceOf[ResponseEntity[PalautaViestitResponse]]
catch
case e: Exception =>
LOG.error("Viestien lukeminen epäonnistui", e)
ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(PalautaViestitFailureResponse(RaportointiAPIConstants.VIESTIT_LUKEMINEN_EPAONNISTUI)))

@GetMapping(
path = Array(GET_LAHETYKSET_LISTA_PATH),
produces = Array(MediaType.APPLICATION_JSON_VALUE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,5 @@ class SecurityOperaatiot {
def onOikeusKatsella(): Boolean =
SecurityConstants.KATSELU_ROLES.intersect(kayttajanOikeudet).size>0

def getKayttajanOikeudet(): Set[String] = kayttajanOikeudet
}
Loading

0 comments on commit 3660653

Please sign in to comment.