Skip to content

Commit

Permalink
Merge pull request #30 from vtfk/preview
Browse files Browse the repository at this point in the history
Only contactTeacher and groupAccess can view files
  • Loading branch information
jorgtho authored Mar 31, 2023
2 parents 7c0e510 + 378c283 commit 8fdd23f
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 17 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ REACT_APP_SENTRY_DSN=%dsn-url%
REACT_APP_SENTRY_ENV=production
```

## Vercel preview
If you need to test your code before deploying to Vercel, commit and push your changes to a branch named "preview". This will generate a preview deployment using the dev-api. The url for visiting the preview is [generated based on the branch name](https://vercel.com/docs/concepts/deployments/generated-urls#url-with-git-branch), and the branch-genereated url is also set up in the app registration for redirection, so you can test authentication as well.

## Sentry

This application uses [Sentry](http://sentry.io/) to log FrontEnd erros. To activate Sentry logging, add correct *dsn* (Data Source Name) from your Sentry project into `REACT_APP_SENTRY_DSN` in your `.env` file. *Environment is used from `NODE_ENV`, or it can be specified in `REACT_APP_SENTRY_ENV`.
Expand Down
11 changes: 9 additions & 2 deletions src/Layout/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export function Layout () {
<img alt='logo' src='/logo.png' height='40px' width='40px' />
</div>
<div className='text' onClick={() => navigate('/')}>
Elevmappa
Elevdok (tidligere Elevmappa)
</div>
</div>

Expand Down Expand Up @@ -62,7 +62,14 @@ export function Layout () {
showInfoMsg &&
<div className='infoBox'>
<p>
<strong>Info: </strong>I forbindelse med splittingen av fylket er det satt i gang en jobb med å se på tilgangsstyringer i ulike digitale løsninger. Vi har i denne sammenhengen startet arbeidet med å se på tilgangsstyringen i blant annet Elevmappa. Som resultat av dette arbeidet vil det bli innført noen endringer i elevmappa fra og med <strong>fredag 31. mars kl. 15:00</strong>. Dere vil få mer informasjon om denne endringen ved egen skole.
<strong>Informasjon om endring i tilgangsstyring</strong><br />
<ul>
<li>Dette er en løsning som gir oversikt over eller lesetilgang til elevdokumenter som ligger arkivert i fylkets sak -og arkivsystem ("P360").</li>
<li>Kontaktlærer har lesetilgang til elevdokumenter tilknyttet kontaktelever.</li>
<li>Faglærer får se en oversikt over titlene på elevdokumentene, og må derfor henvende seg til sin nærmeste leder ved tjenstlig behov for å lese et dokument. Leder åpner dokumentet i "P360" og lar faglærer lese det.</li>
<li>Alle oppslag i elevdokumenter loggføres av systemet.</li>
<li>Løsningen har fått nytt navn, og heter nå "Elevdok".</li>
</ul>
</p>
<p class="butt" onClick={() => { setShowInfoMsg(false) }}>Lukk info</p>
</div>
Expand Down
60 changes: 46 additions & 14 deletions src/Pages/Student/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,18 @@ import { useAPI } from '../../hooks/useAPI'
import './style.scss'

const PersonInfo = ({ person }) => {
const lastNameWithContactTeacher = person.contactTeacher ? `${person.lastName} (KL)` : person.lastName
const contactTeacherTxt = person.contactTeacher ? 'Du er kontaktlærer' : ''
return (
<PersonCard
firstName={person.firstName}
lastName={person.lastName}
lastName={lastNameWithContactTeacher}
largeName={person.fullname}
>
<div className='extra-info'>
<span>{person.mail}</span>
<span>{person.mainGroupName}</span>
<span>{contactTeacherTxt}</span>
</div>
</PersonCard>
)
Expand Down Expand Up @@ -79,6 +82,10 @@ export function Student () {
return file.title
}

const canViewFile = (accessType, contactTeacher) => {
return accessType === 'groupAccess' || contactTeacher
}

function onDocumentLoadSuccess ({ numPages }) {
setNumPages(numPages)
}
Expand All @@ -104,30 +111,55 @@ export function Student () {
return (
<div className='document' key={index}>
<div className='document-header'>{document.title}</div>
<InfoProp header='Ansvarlig virksomhet' value={document.responsibleEnterprise || 'Ukjent'} />
<InfoProp header='Sendt dato' value={document.displayDate} />
<InfoProp header='Dok. nr.' value={`${document.documentNumber}${document.source ? ` (${document.source})` : ''}` || 'Ukjent'} />
<InfoProp header='Dokumentarkiv' value={document.documentArchive || 'Ukjent'} />
<InfoProp header='Dokumentkategori' value={document.category || 'Ukjent'} />
<InfoProp header='Tilgangskode' value={document.accessCodeDescription || 'Ukjent'} />
<InfoProp header='Fra' value={getContactNames(document.contacts, 'Avsender')} />
<InfoProp header='Til' value={getContactNames(document.contacts, 'Mottaker')} />
<div className='toggle' onClick={() => toggleExpandedDocument(document.documentNumber)}>
<Icon name={expandedDocument === document.documentNumber ? 'chevronUp' : 'chevronDown'} size='small' /> Filer ({document.files.length})
</div>
{
expandedDocument === document.documentNumber && !canViewFile(items.accessType, items.contactTeacher) &&
<div className="accessMessage">
<br />
<em><strong>OBS!</strong> {`Du er ikke kontaktlærer for ${items.firstName} ${items.lastName} og har derfor ikke tilgang til å åpne filer`}</em>
</div>
}
{
expandedDocument === document.documentNumber && document.files.map(file => {
return (
<IconButton
className='file'
key={file.recno}
bordered
icon={documentFileLoading.error ? 'error' : 'pdf'}
spinner={documentFileLoading.recno === file.recno && !documentFileLoading.error}
disabled={document.disableFiles || (documentFileLoading.recno === file.recno && !documentFileLoading.error)}
onClick={() => { getDocumentFile(document, { file: document.documentNumber, recno: file.recno }) }}
title={document.disableFiles ? 'Fil kun tilgjengelig i arkiv' : 'Klikk for å åpne filen'}
>{getFileTitle(document, file)}
</IconButton>
)
if (canViewFile(items.accessType, items.contactTeacher)) {
return (
<IconButton
className='file'
key={file.recno}
bordered
icon={documentFileLoading.error ? 'error' : 'pdf'}
spinner={documentFileLoading.recno === file.recno && !documentFileLoading.error}
disabled={document.disableFiles || (documentFileLoading.recno === file.recno && !documentFileLoading.error)}
onClick={() => { getDocumentFile(document, { file: document.documentNumber, recno: file.recno }) }}
title={document.disableFiles ? 'Fil kun tilgjengelig i arkiv' : 'Klikk for å åpne filen'}
>{getFileTitle(document, file)}
</IconButton>
)
} else {
return (
<IconButton
className='file'
key={file.recno}
bordered
icon={documentFileLoading.error ? 'error' : 'pdf'}
spinner={documentFileLoading.recno === file.recno && !documentFileLoading.error}
disabled={true}
onClick={() => { getDocumentFile(document, { file: document.documentNumber, recno: file.recno }) }}
title={`Du er ikke kontaktlærer for ${items.firstName} ${items.lastName} og har derfor ikke tilgang til å åpne filen`}
>{getFileTitle(document, file)}
</IconButton>
)
}
})
}

Expand Down
2 changes: 1 addition & 1 deletion src/Pages/Students/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export function Students () {
(students.length > config.studentsPrPage ? students.slice(paginationFrom, paginationTo) : students).map((student, index) => {
return (
<div className='student' key={index} onClick={() => handleStudentClick(student.userName)}>
<div className='student-name' title='Navn'>{student.fullName}</div>
<div className='student-name' title={student.contactTeacher ? 'Du er kontaktlærer for denne eleven' : 'Du er ikke kontaktlærer for denne eleven'}>{student.fullName} <strong>{student.contactTeacher ? '(KL)' : ''}</strong></div>
<div className='student-class' title='Klasse'>{student.mainGroupName}</div>
</div>
)
Expand Down

1 comment on commit 8fdd23f

@vercel
Copy link

@vercel vercel bot commented on 8fdd23f Mar 31, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.