Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] TOR-2210 OmaData OAuth2: Näytä kansalaiskälissä myös OAuth2-rajapinnan kautta katselut #400

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions frontend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ cp .env-example .env

## Sovelluksen ajaminen paikallisesti

Käynnistä sovellus kehitysmoodissa, jolloin se käyttää `mock`-hakemistossa olevaa mock-API:a ja Webpack lataa automaattisesti sovelluksen uudelleen selaimessa, kun teet muutoksia:
Käynnistä sovellus kehitysmoodissa, jolloin se käyttää `mock`-hakemistossa olevaa mock-API:a ja Webpack lataa
automaattisesti sovelluksen uudelleen selaimessa, kun teet muutoksia:

```shell
npm run start:local
Expand All @@ -41,7 +42,8 @@ npm run start:local:nologin

Nyt voit mennä selaimella osoitteeseen http://localhost:8080/ .

Vaihtoehtoisesti voit tehdä lokaalin dev-buildin (`npm run build:local`) ja tarjoilla `dist`-hakemistossa olevat tiedostot jollain toisella HTTP-palvelinsovelluksella.
Vaihtoehtoisesti voit tehdä lokaalin dev-buildin (`npm run build:local`) ja tarjoilla `dist`-hakemistossa olevat
tiedostot jollain toisella HTTP-palvelinsovelluksella.

Saat [Oppija-raamit](https://github.com/Opetushallitus/oppija-raamit) käyttöön `PROXY_OPPIJA_RAAMIT` -ympäristömuuttujan avulla seuraavasti:

Expand All @@ -62,7 +64,9 @@ Jest-yksikkötestit:
npm run unit
```

Testissä on käytetty [Jestin snapshoteja](https://jestjs.io/docs/en/snapshot-testing). Jos teet toiminnallisen muutoksen, joka aiheuttaa olemassaolevan snapshotin muuttumisen, voit päivittää snapshotin komennolla `npm run unit -- -u`, mutta ole tarkkana ettet vahingossa tallenna rikkinäisiä snapshoteja versionhallintaan.
Testissä on käytetty [Jestin snapshoteja](https://jestjs.io/docs/en/snapshot-testing). Jos teet toiminnallisen muutoksen,
joka aiheuttaa olemassaolevan snapshotin muuttumisen, voit päivittää snapshotin komennolla `npm run unit -- -u`, mutta
ole tarkkana ettet vahingossa tallenna rikkinäisiä snapshoteja versionhallintaan.

## Koodityylit

Expand Down
3 changes: 1 addition & 2 deletions frontend/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ module.exports = {
],
moduleFileExtensions: ['js', 'jsx', 'json'],
moduleNameMapper: {
'\\.(svg)$': '<rootDir>/src/__mocks__/filemock.js',
'Resources/mapping/usagePermissionDescriptions': '<rootDir>/resources/mapping/usagePermissionDescriptions.json'
'\\.(svg)$': '<rootDir>/src/__mocks__/filemock.js'
},
snapshotSerializers: ['enzyme-to-json/serializer'],
coverageThreshold: {
Expand Down
15 changes: 13 additions & 2 deletions frontend/mock/api.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,16 @@
}
],
"timestamps": ["2018-09-19T12:05:26.432+03", "2018-09-20T16:01:44.543+03"],
"serviceName": "koski"
"serviceName": "koski",
"isMyDataUse": true,
"isJakolinkkiUse": false
},
{
"organizations": [],
"timestamps": ["2023-09-16T12:05:26.432+03", "2023-09-20T16:01:44.543+03"],
"serviceName": "koski",
"isMyDataUse": true,
"isJakolinkkiUse": true
},
{
"organizations": [
Expand Down Expand Up @@ -89,7 +98,9 @@
"2018-07-11T14:44:14.543+03",
"2018-06-27T00:47:38.321+03"
],
"serviceName": "koski"
"serviceName": "koski",
"isMyDataUse": false,
"isJakolinkkiUse": false
},
{
"organizations": [
Expand Down
4 changes: 0 additions & 4 deletions frontend/mock/mapping/usagePermissionDescriptions.json

This file was deleted.

15 changes: 8 additions & 7 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 19 additions & 4 deletions frontend/resources/mapping/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,15 @@
"sv": "På den här sidan kan du granska och administrera de tillstånd du har givit om dina uppgifter. Du ser här dessutom vilka aktörer, t.ex. myndigheter, som har använt dina uppgifter.",
"en": "On this page you can inspect and manage permissions you have given to use your data. You can also check which organisations (e.g. authorities) have used your data."
},
"Tietoja käyttäneissä toimijoissa on listattuna kaikki ne kerrat, kun tietojasi on katsottu tai niitä on haettu toiseen järjestelmään automatisoidusti. Tietojasi voivat hakea automaattisesti Opetushallituksen eri järjestelmät, viranomaiset tai ne kolmannet osapuolet, joille olet erikseen antanut luvan hyödyntää tietojasi Oma Opintopolusta. Opetushallituksen ja viranomaisten automaattiset haut tapahtuvat yleensä ruuhka-aikojen ulkopuolella, lähinnä ilta- tai yöaikaan.": {
"fi": "Tietoja käyttäneissä toimijoissa on listattuna kaikki ne kerrat, kun tietojasi on katsottu tai niitä on haettu toiseen järjestelmään automatisoidusti. Tietojasi voivat hakea automaattisesti Opetushallituksen eri järjestelmät, viranomaiset tai ne kolmannet osapuolet, joille olet erikseen antanut luvan hyödyntää tietojasi Oma Opintopolusta. Opetushallituksen ja viranomaisten automaattiset haut tapahtuvat yleensä ruuhka-aikojen ulkopuolella, lähinnä ilta- tai yöaikaan.",
"sv": "I aktörer som använt uppgifter är listade alla de gånger då dina uppgifter har granskats eller hämtats automatiskt till ett annat system. Dina uppgifter kan automatiskt hämtas av olika system från Utbildningsstyrelsen, myndigheter eller de tredje parter som du specifikt har gett tillstånd att använda dina uppgifter från Min Studieinfo. Utbildningsstyrelsens och myndigheternas automatiska sökningar sker vanligtvis utanför rusningstider, främst på kvällar eller nätter.",
"en": "Organizations that have used your data includes each occasion when your data has been viewed or automatically retrieved to another system. Your data can be automatically retrieved by various systems from the Finnish National Agency for Education, authorities, or third parties to whom you’ve specifically granted permission to use your data from My Studyinfo. Automatic searches by the Finnish National Agency for Education and authorities typically occur outside peak hours, primarily in the evenings or at night."
"Tietoja käyttäneissä toimijoissa on listattuna kaikki ne kerrat, kun ...": {
"fi": "Tietoja käyttäneissä toimijoissa on listattuna niitä kertoja, kun tietojasi on katsottu tai niitä on haettu toiseen järjestelmään automatisoidusti. Tietojasi voivat hakea automaattisesti Opetushallituksen eri järjestelmät, viranomaiset tai ne kolmannet osapuolet, joille olet erikseen antanut luvan hyödyntää tietojasi Oma Opintopolusta. Opetushallituksen järjestelmien ja viranomaisten automaattiset haut tapahtuvat yleensä ruuhka-aikojen ulkopuolella, lähinnä ilta- tai yöaikaan. Joidenkin Opetushallituksen ylläpitämien järjestelmien opintotietojen haut näkyvät vain kyseisen järjestelmän lokitiedoissa, eivätkä listaudu Tietojani käyttäneet toimijat -näkymään. Tilastoinnissa tai erilaisissa tiedonsiirtojen tarkistusraporteissa ja massahakutoiminnallisuuksissa käytettyjen tietojen käyttökertoja ei ole koostettuna Tietojani käyttäneet toimijat -näkymään.",
"sv": "TOOO: Tietoja käyttäneissä toimijoissa on listattuna niitä kertoja, kun tietojasi on katsottu tai niitä on haettu toiseen järjestelmään automatisoidusti. Tietojasi voivat hakea automaattisesti Opetushallituksen eri järjestelmät, viranomaiset tai ne kolmannet osapuolet, joille olet erikseen antanut luvan hyödyntää tietojasi Oma Opintopolusta. Opetushallituksen järjestelmien ja viranomaisten automaattiset haut tapahtuvat yleensä ruuhka-aikojen ulkopuolella, lähinnä ilta- tai yöaikaan. Joidenkin Opetushallituksen ylläpitämien järjestelmien opintotietojen haut näkyvät vain kyseisen järjestelmän lokitiedoissa, eivätkä listaudu Tietojani käyttäneet toimijat -näkymään. Tilastoinnissa tai erilaisissa tiedonsiirtojen tarkistusraporteissa ja massahakutoiminnallisuuksissa käytettyjen tietojen käyttökertoja ei ole koostettuna Tietojani käyttäneet toimijat -näkymään.",
"en": "TODO: Tietoja käyttäneissä toimijoissa on listattuna niitä kertoja, kun tietojasi on katsottu tai niitä on haettu toiseen järjestelmään automatisoidusti. Tietojasi voivat hakea automaattisesti Opetushallituksen eri järjestelmät, viranomaiset tai ne kolmannet osapuolet, joille olet erikseen antanut luvan hyödyntää tietojasi Oma Opintopolusta. Opetushallituksen järjestelmien ja viranomaisten automaattiset haut tapahtuvat yleensä ruuhka-aikojen ulkopuolella, lähinnä ilta- tai yöaikaan. Joidenkin Opetushallituksen ylläpitämien järjestelmien opintotietojen haut näkyvät vain kyseisen järjestelmän lokitiedoissa, eivätkä listaudu Tietojani käyttäneet toimijat -näkymään. Tilastoinnissa tai erilaisissa tiedonsiirtojen tarkistusraporteissa ja massahakutoiminnallisuuksissa käytettyjen tietojen käyttökertoja ei ole koostettuna Tietojani käyttäneet toimijat -näkymään."
},
"Tietojani käyttäneet toimijat -näkymässä ovat listattuna myös ...": {
"fi": "Tietojani käyttäneet toimijat -näkymässä ovat listattuna myös omien opintosuoritusten jakolinkkien käyttökerrat. Tämä tarkoittaa tilannetta, kun olet luonut Oma Opintopolku -palvelussa jakolinkin omista opintosuorituksistasi ja jakanut sen eteenpäin haluamallesi kolmannelle osapuolelle. Tietojani käyttäneet toimijat -näkymässä ei ole kuitenkaan saatavilla tietoa, kuka tai mikä taho linkin on avannut. Ainoastaan linkin katselu- tai käyttökerrat ovat nähtävissä palvelussa.",
"sv": "TODO: Tietojani käyttäneet toimijat -näkymässä ovat listattuna myös omien opintosuoritusten jakolinkkien käyttökerrat. Tämä tarkoittaa tilannetta, kun olet luonut Oma Opintopolku -palvelussa jakolinkin omista opintosuorituksistasi ja jakanut sen eteenpäin haluamallesi kolmannelle osapuolelle. Tietojani käyttäneet toimijat -näkymässä ei ole kuitenkaan saatavilla tietoa, kuka tai mikä taho linkin on avannut. Ainoastaan linkin katselu- tai käyttökerrat ovat nähtävissä palvelussa.",
"en": "TODO: Tietojani käyttäneet toimijat -näkymässä ovat listattuna myös omien opintosuoritusten jakolinkkien käyttökerrat. Tämä tarkoittaa tilannetta, kun olet luonut Oma Opintopolku -palvelussa jakolinkin omista opintosuorituksistasi ja jakanut sen eteenpäin haluamallesi kolmannelle osapuolelle. Tietojani käyttäneet toimijat -näkymässä ei ole kuitenkaan saatavilla tietoa, kuka tai mikä taho linkin on avannut. Ainoastaan linkin katselu- tai käyttökerrat ovat nähtävissä palvelussa."
},
"Taulukko tietojen käyttökerroista": {
"fi": "Näytä tietojen käyttökerrat",
Expand Down Expand Up @@ -156,5 +161,15 @@
"fi": "Tarkasteltava henkilö:",
"sv": "Person vars uppgifter granskas",
"en": "Person who’s data is being viewed"
},
"Opintosuorituksista tehdyn jakolinkin tuntematon käyttäjä": {
"fi": "Opintosuorituksista tehdyn jakolinkin tuntematon käyttäjä",
"sv": "TODO: Opintosuorituksista tehdyn jakolinkin tuntematon käyttäjä",
"en": "TODO: Opintosuorituksista tehdyn jakolinkin tuntematon käyttäjä"
},
"Oma opintopolku -palvelussa luomiesi omien opintosuoritusten jakolinkkien käyttökerrat": {
"fi": "Oma opintopolku -palvelussa luomiesi omien opintosuoritusten jakolinkkien käyttökerrat",
"sv": "TODO: Oma opintopolku -palvelussa luomiesi omien opintosuoritusten jakolinkkien käyttökerrat",
"en": "TODO: Oma opintopolku -palvelussa luomiesi omien opintosuoritusten jakolinkkien käyttökerrat"
}
}
5 changes: 0 additions & 5 deletions frontend/resources/mapping/usagePermissionDescriptions.json

This file was deleted.

8 changes: 6 additions & 2 deletions frontend/src/component/Header.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,15 @@ const Header = ({ selectedHetu, onSelectHetu }) => (
</H1>
<Description>
<p>{t`Tällä sivulla voit tarkastella ja hallinnoida antamiasi käyttölupia tietoihisi. Lisäksi näet mitkä toimijat, esim. viranomaiset, ovat käyttäneet tietojasi.`}{'*'}</p>
<p>{t`Tietoja käyttäneissä toimijoissa on listattuna kaikki ne kerrat, kun tietojasi on katsottu tai niitä on haettu toiseen järjestelmään automatisoidusti. Tietojasi voivat hakea automaattisesti Opetushallituksen eri järjestelmät, viranomaiset tai ne kolmannet osapuolet, joille olet erikseen antanut luvan hyödyntää tietojasi Oma Opintopolusta. Opetushallituksen ja viranomaisten automaattiset haut tapahtuvat yleensä ruuhka-aikojen ulkopuolella, lähinnä ilta- tai yöaikaan.`}</p>
<p>{t`Tietoja käyttäneissä toimijoissa on listattuna kaikki ne kerrat, kun ...`}</p>
{
/* TODO: Toistaiseksi anonyymit suoritusjakolinkkien katselut eivät näy, koska ne puuttuvat DynamoDB:stä */
/* <p>{t`Tietojani käyttäneet toimijat -näkymässä ovat listattuna myös ...`}</p> */
}
</Description>

<StudentInfo selectedHetu={selectedHetu} onSelectHetu={onSelectHetu}/>
<NavBar />
<NavBar/>
</header>
)
Header.propTypes = ({
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/component/__snapshots__/Header.test.jsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ exports[`Header should be rendered 1`] = `
*
</p>
<p>
Tietoja käyttäneissä toimijoissa on listattuna kaikki ne kerrat, kun tietojasi on katsottu tai niitä on haettu toiseen järjestelmään automatisoidusti. Tietojasi voivat hakea automaattisesti Opetushallituksen eri järjestelmät, viranomaiset tai ne kolmannet osapuolet, joille olet erikseen antanut luvan hyödyntää tietojasi Oma Opintopolusta. Opetushallituksen ja viranomaisten automaattiset haut tapahtuvat yleensä ruuhka-aikojen ulkopuolella, lähinnä ilta- tai yöaikaan.
Tietoja käyttäneissä toimijoissa on listattuna niitä kertoja, kun tietojasi on katsottu tai niitä on haettu toiseen järjestelmään automatisoidusti. Tietojasi voivat hakea automaattisesti Opetushallituksen eri järjestelmät, viranomaiset tai ne kolmannet osapuolet, joille olet erikseen antanut luvan hyödyntää tietojasi Oma Opintopolusta. Opetushallituksen järjestelmien ja viranomaisten automaattiset haut tapahtuvat yleensä ruuhka-aikojen ulkopuolella, lähinnä ilta- tai yöaikaan. Joidenkin Opetushallituksen ylläpitämien järjestelmien opintotietojen haut näkyvät vain kyseisen järjestelmän lokitiedoissa, eivätkä listaudu Tietojani käyttäneet toimijat -näkymään. Tilastoinnissa tai erilaisissa tiedonsiirtojen tarkistusraporteissa ja massahakutoiminnallisuuksissa käytettyjen tietojen käyttökertoja ei ole koostettuna Tietojani käyttäneet toimijat -näkymään.
</p>
</p>
<h3
Expand Down
12 changes: 7 additions & 5 deletions frontend/src/component/organization/Organization.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,28 @@ import { lensPath, view } from 'ramda'
import Expander from 'component/generic/widget/Expander'
import OrganizationDetails from 'component/organization/OrganizationDetails'
import LogEntries from 'component/log-entries/LogEntries'
import t from 'util/translate'

/*
TODO: Currently we just take the first organization alternative (its name and oid). This must be changed.
*/
const nameLens = lensPath(['0', 'name'])
const oidLens = lensPath(['0', 'oid'])

const title = organizations => view(nameLens, organizations)

const Organization = ({ organizationAlternatives, timestamps, serviceName }) => (
<Expander title={title(organizationAlternatives)} serviceName={serviceName}>
<OrganizationDetails organizationOid={view(oidLens, organizationAlternatives)} />
const Organization = ({ organizationAlternatives, timestamps, serviceName, isMyDataUse, isJakolinkkiUse }) => (
<Expander title={isJakolinkkiUse ? t('Opintosuorituksista tehdyn jakolinkin tuntematon käyttäjä') : title(organizationAlternatives)} serviceName={serviceName}>
<OrganizationDetails isMyDataUse={isMyDataUse} isJakolinkkiUse={isJakolinkkiUse}/>
<LogEntries timestamps={timestamps}/>
</Expander>
)

Organization.propTypes = {
organizationAlternatives: PropTypes.array.isRequired,
timestamps: PropTypes.array.isRequired,
serviceName: PropTypes.string.isRequired
serviceName: PropTypes.string.isRequired,
isMyDataUse: PropTypes.bool,
isJakolinkkiUse: PropTypes.bool
}

export default Organization
13 changes: 7 additions & 6 deletions frontend/src/component/organization/OrganizationDetails.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react'
import PropTypes from 'prop-types'
import styled from 'styled-components'
import t from 'util/translate'
import { getTranslatedUsagePermissionDescription, isMydataPartner } from 'util/usagePermissionDescriptions'
import { getTranslatedUsagePermissionDescription } from 'util/usagePermissionDescriptions'
import { Bold } from 'ui/typography'
import constants from 'ui/constants'
import media from 'ui/media'
Expand Down Expand Up @@ -31,27 +31,28 @@ const Description = styled.div`
font-size: ${constants.font.size.s};
`

const weblink = oid => (isMydataPartner(oid)
const weblink = isMyDataUse => (isMyDataUse
? t('omadata-link')
: t('tietosuojaseloste-link')
)

const OrganizationDetails = ({ organizationOid }) => (
const OrganizationDetails = ({ isMyDataUse, isJakolinkkiUse }) => (
<Details>
<Description>
<Bold>{t`Tietojen käyttölupa`}:</Bold> {getTranslatedUsagePermissionDescription(organizationOid)}
<Bold>{t`Tietojen käyttölupa`}:</Bold> {getTranslatedUsagePermissionDescription(isMyDataUse, isJakolinkkiUse)}
</Description>

<ExternalLink
text={t`Tarkempi kuvaus lähetetyistä tiedoista`}
url={weblink(organizationOid)}
url={weblink(isMyDataUse)}
openInNewTab={true}
/>
</Details>
)

OrganizationDetails.propTypes = {
organizationOid: PropTypes.string.isRequired
isMyDataUse: PropTypes.bool,
isJakolinkkiUse: PropTypes.bool
}

export default OrganizationDetails
4 changes: 3 additions & 1 deletion frontend/src/component/organization/Organizations.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const Organizations = ({ translatedOrganizations }) => (
<OrganizationsHeader/>

{
translatedOrganizations.map(({ organizations, timestamps, serviceName }) => {
translatedOrganizations.map(({ organizations, timestamps, serviceName, isMyDataUse, isJakolinkkiUse }) => {
const key = map(view(oidLens), organizations).join(',')

return (
Expand All @@ -20,6 +20,8 @@ const Organizations = ({ translatedOrganizations }) => (
organizationAlternatives={organizations}
timestamps={timestamps}
serviceName={serviceName}
isMyDataUse={isMyDataUse}
isJakolinkkiUse={isJakolinkkiUse}
/>
)
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ exports[`Organization should render with organization permitted by user, and exp
>
Tietojen käyttölupa:
</b>
Olet antanut tälle palvelutarjoajalle luvan käyttää tietojasi.
Lakiin perustuva tiedonkäyttölupa.
</div>
<a
class="typography__Link-sc-1yq3b4j-5 eygBPc"
Expand Down
Loading
Loading