Üldreeglid Goal BE teenustele
Eesmärgi päringute üldkontroll
Kõikidele eesmärgiga seotud päringutele rakendub üldkontroll, mis määrab, kas päringu algatanud kasutajal on õigus vaadata või hallata vastava eesmärgi andmeid. Enne päringu täitmist kontrollib süsteem järgmist:
- Eesmärk eksisteerib ja ei ole arhiveeritud.
- Kasutajal on piisavad õigused eesmärgi andmetele ligi pääsemiseks või nende muutmiseks.
Kui kõik tingimused on täidetud, täidetakse päring. Kui mõni tingimus ei vasta nõuetele, katkestatakse päringu töötlemine ja tagastatakse veakood.
Alljärgnevalt on kirjeldatud kontrollide täpne loogika eri tüüpi eesmärkide puhul.
Eesmärgile rakendatavad kontrollid
Eesmärgi päringute edukaks täitmiseks peab olema täidetud üks järgmistest tingimustest:
- Kasutajal on seos eesmärgi asutuse või ametikohaga:
- Asutusepõhine eesmärk (Goal.goalScope = "INSTITUTIONAL")
- Goal.institution.id = Kasutaja poolt valitud rolliga seotud asutus = EHIS x-tee teenus GET/users/v1/users.response.data.users.institution.id/token
- Goal.jobsite = NULL
- Goal.personalCode = NULL
- Isikupõhine eesmärk (Goal.goalScope = "INDIVIDUAL")
- Kui päring on andmete vaatamiseks:
- Goal.personalCode = Kasutaja isikukood
- Kui päring on andmete muutmiseks:
- Goal.institution.id = Kasutaja poolt valitud rolliga seotud asutus = EHIS x-tee teenus GET/users/v1/users.response.data.users.institution.id/token
- Goal.jobsite = Kasutaja poolt valitud rolliga seotud ametikoht = EHIS x-tee teenus GET/users/v1/userAccounts.response.data.jobsiteList
- Goal.personalCode = Kasutaja isikukood
- Kui päring on andmete vaatamiseks:
- Asutusepõhine eesmärk (Goal.goalScope = "INSTITUTIONAL")
- Kasutajal puudub seos asutuse või ametikohaga, kuid ta on lisatud meeskonnaliikmena:
- Goal.goalScope = "INDIVIDUAL" või "INSTITUTIONAL"
- Kasutaja peab olema lisatud eesmärgi meeskonda.
- Goal.teamMembers.id = GoalTeamMember.id, mille personalCode = kasutaja isikukood
Üldreegel:
- Ainult arhiveerimata eesmärkide andmeid saab hallata.
- Kõik kasutajad saavad vaadata eesmärkide andmeid, kui nad omavad vastavaid õigusi.
Kontrollide teostamise loogika
Allpool on kirjeldatud täpne loogika, kuidas süsteem teostab ülalkirjeldatud kontrollid:
- Süsteem kontrollib, kas eesmärk eksisteerib (goalId):
- Süsteem otsib Objektid#Goal objekti, mille:
- id = Sisendis esitatud "goalId" väärtus.
- Kui eesmärki ei leita, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem otsib Objektid#Goal objekti, mille:
- Süsteem kontrollib, kas eesmärk ei ole arhiveeritud:
- Kui päring on POST, PUT, PATCH või DELETE, peab archived=false.
Kui eesmärk ei vasta tingimustele, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem kontrollib kasutaja õigusi eesmärgi pärimiseks või haldamiseks:
- Kui eesmärk on asutusepõhine (Objektid#Goal.goalScope = "INSTITUTIONAL"):
- Süsteem kontrollib, kas kasutaja on seotud eesmärgi asutusega:
- Objektid#Goal.institution.id = EHIS x-tee teenus GET/users/v1/users.response.data.users.institution.id/token.
- Kui mitte, siis kontrollitakse, kas kasutaja on eesmärgi meeskonnas:
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- personalCode = Päringu käivitanud kasutaja isikukood
- Süsteem kontrollib, kas Objektid#Goal.teamMembers seas on vähemalt üks leitud meeskonnaliikmetest (Objektid#GoalTeamMember.id).
- Kui kasutajat ei leita meeskonnast, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- Süsteem kontrollib, kas kasutaja on seotud eesmärgi asutusega:
- Kui eesmärk on isikupõhine (Objektid#Goal.goalScope = "INDIVIDUAL"):
- Süsteem kontrollib, kas päringu käivitanud kasutaja on eesmärgi omanik:
Süsteem kontrollib, kas Objektid#Goal.personalCode = kasutaja isikukood.
Kui jah:
Kui päring on POST, PUT, PATCH või DELETE päringuga, kontrollitakse, kas eesmärk on seotud kasutaja aktiivse ametikohaga:
jobsite = üks nimekirjas "EHIS x-tee teenus GET/users/v1/userAccounts.response.data.jobsiteList" sisalduvatest ametikohtadest.
Kui tingimused ei vasta nõuetele, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Kui kasutaja ei ole eesmärgi omanik (Objektid#Goal.personalCode != kasutaja isikukood):
- Süsteem kontrollib, kas kasutaja on eesmärgi meeskonnas:
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- personalCode = kasutaja isikukood.
- Süsteem kontrollib, kas sisendis esitatud eesmärgi Objektid#Goal.teamMembers seas on vähemalt üks leitud meeskonnaliikmetest (Objektid#GoalTeamMember.id).
- Kui ükski tingimustest ei ole täidetud, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- Süsteem kontrollib, kas kasutaja on eesmärgi meeskonnas:
- Süsteem kontrollib, kas päringu käivitanud kasutaja on eesmärgi omanik:
- Kui eesmärk on asutusepõhine (Objektid#Goal.goalScope = "INSTITUTIONAL"):