Compare commits

...

23 Commits

Author SHA1 Message Date
Christian Landgren a8281d4370
trigger build 2024-04-30 23:13:02 +02:00
Christian Landgren 098bc544f2
correct context 2024-04-30 22:51:48 +02:00
Christian Landgren c16d60c2e2
Feat: pull image from github registry 2024-04-30 22:44:11 +02:00
Christian Landgren a7fa22cd54
Update website-build-and-push-registry.yml 2024-04-30 22:42:02 +02:00
Christian Landgren a7b9d81714
Trigger build 2024-04-30 13:18:06 +02:00
Christian Landgren b8ed895e52
Use semver patches for build to trigger new versions in docker registry 2024-04-30 13:16:47 +02:00
Christian Landgren caafb59f8d
Trigger build 2024-04-30 13:13:03 +02:00
Christian Landgren 81e448c035
Update and rename docker-publish.yml to website-build-and-push-registry.yml 2024-04-30 13:12:08 +02:00
Christian Landgren 62de54ef80
Ignore buildstep for website 2024-04-30 13:11:13 +02:00
Christian Landgren d5e4bfd149
Trigger build 2024-04-30 12:48:32 +02:00
Christian Landgren 28e1481e3f
Build and push website to ghcr.io 2024-04-30 12:44:44 +02:00
semantic-release-bot f2a87117ba chore(release): 2.17.0 [skip ci]
# [2.17.0](https://github.com/kolplattformen/skolplattformen/compare/v2.16.1...v2.17.0) (2024-04-29)

### Features

* 🎸 Added privacy policy for Öppna Elevappen on the site ([6eb6d3a](6eb6d3a6e3))
2024-04-29 22:26:21 +02:00
Kajetan Kazimierczak 6eb6d3a6e3 feat: 🎸 Added privacy policy for Öppna Elevappen on the site 2024-04-29 22:24:08 +02:00
Kajetan Kazimierczak c0e6ce9e06
chore: 🤖 Bumped version to 3.0.10 (#672) 2024-04-09 22:01:46 +02:00
Weblate (bot) c9907a68b6
Translations update from Hosted Weblate (#669)
* Translated using Weblate (Spanish)

Currently translated at 100.0% (114 of 114 strings)

Translation: Skolplattformen/App translations
Translate-URL: https://hosted.weblate.org/projects/skolplattformen/app-translation/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (114 of 114 strings)

Translation: Skolplattformen/App translations
Translate-URL: https://hosted.weblate.org/projects/skolplattformen/app-translation/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (114 of 114 strings)

Translation: Skolplattformen/App translations
Translate-URL: https://hosted.weblate.org/projects/skolplattformen/app-translation/es/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (114 of 114 strings)

Translation: Skolplattformen/App translations
Translate-URL: https://hosted.weblate.org/projects/skolplattformen/app-translation/nl/

---------

Co-authored-by: Sergio Avalos <sergio.avalos@gmail.com>
Co-authored-by: Karin Nygårds <karinnygards@gmail.com>
Co-authored-by: Raul Jimenez <rauljim@gmail.com>
Co-authored-by: Mikachu <micah.sh@proton.me>
2024-04-09 21:17:12 +02:00
Kajetan Kazimierczak 320ab1f1f5
Merge pull request #671 from kolplattformen/chore/v3.0.9
chore: 🤖 Bumped version to 3.0.9
2024-04-09 21:13:06 +02:00
Kajetan Kazimierczak 7962234e26 chore: 🤖 Bumped version to 3.0.9 2024-04-09 21:11:58 +02:00
Kajetan Kazimierczak b66f56b312
Update Podfile.lock 2024-04-09 20:51:08 +02:00
Kajetan Kazimierczak 442aad7fda
Update README.md
one more year...
2024-04-09 20:17:05 +02:00
semantic-release-bot 1f2c7ee762 chore(release): 2.16.1 [skip ci]
## [2.16.1](https://github.com/kolplattformen/skolplattformen/compare/v2.16.0...v2.16.1) (2024-04-09)

### Bug Fixes

* 🐛 Site moved to new url ([c93e27b](c93e27bec0))
2024-04-09 20:15:57 +02:00
Kajetan Kazimierczak d51cfe36fe
chore: 🤖 Updated TimeTable URLs (#670)
* chore: 🤖 Updated TimeTable URLs

* test: 💍 fixed failing tests
2024-04-09 20:13:11 +02:00
Kajetan Kazimierczak c93e27bec0 fix: 🐛 Site moved to new url 2024-02-13 15:32:29 +01:00
Kajetan Kazimierczak 84ddda3f46
Update routes.ts 2024-02-13 08:52:03 +01:00
20 changed files with 351 additions and 65 deletions

View File

@ -4,6 +4,8 @@ on:
push:
branches:
- main
paths-ignore:
- 'apps/website/**'
jobs:
build:

View File

@ -0,0 +1,81 @@
name: Docker
# Build to docker registry. This will trigger an update event from the Kubernetes cluster
on:
push:
branches: [ "main" ]
# Publish semver tags as releases.
tags: [ 'v*.*.*' ]
paths:
- 'apps/website/**'
pull_request:
branches: [ "main" ]
env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
# This is used to complete the identity challenge
# with sigstore/fulcio when running outside of PRs.
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
if [[ $GITHUB_REF == refs/tags/production* ]]; then
npm version major
elif [[ $GITHUB_REF == refs/tags/staging* ]]; then
npm version minor
else
npm version patch
fi
- name: 📝 Get Current Version
id: package-version
uses: martinbeentjes/npm-get-version-action@main
# Set up BuildKit Docker container builder to be able to build
# multi-platform images and export cache
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0
with:
context: apps/website
push: ${{ github.event_name != 'pull_request' }}
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.package-version.outputs.current-version}},
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@ -1,3 +1,17 @@
# [2.17.0](https://github.com/kolplattformen/skolplattformen/compare/v2.16.1...v2.17.0) (2024-04-29)
### Features
* 🎸 Added privacy policy for Öppna Elevappen on the site ([6eb6d3a](https://github.com/kolplattformen/skolplattformen/commit/6eb6d3a6e3b62d1ee1aabb46e6f514cc4ec909e8))
## [2.16.1](https://github.com/kolplattformen/skolplattformen/compare/v2.16.0...v2.16.1) (2024-04-09)
### Bug Fixes
* 🐛 Site moved to new url ([c93e27b](https://github.com/kolplattformen/skolplattformen/commit/c93e27bec05582be2c0b0e63ba5ab47b1688b8d8))
# [2.16.0](https://github.com/kolplattformen/skolplattformen/compare/v2.15.10...v2.16.0) (2023-11-02)

View File

@ -194,7 +194,7 @@ If you're offended by this initiative, rest assured there is no reason to be —
## License
Öppna skolplattformen is copyright 20202023 Not Free Beer AB.
Öppna skolplattformen is copyright 20202024 Not Free Beer AB.
Licensed under the [Apache License, Version 2.0](LICENSE) (the "License"); you may use Öppna skolplattformen in compliance with the License. A copy of the License is included with this repository.

View File

@ -139,7 +139,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 20000
versionName "3.0.8"
versionName "3.0.10"
}
splits {
abi {

View File

@ -646,4 +646,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: f4a92b32cc4938e15ad7ccfefe9898548670abed
COCOAPODS: 1.12.0
COCOAPODS: 1.14.2

View File

@ -794,7 +794,7 @@
ENABLE_BITCODE = NO;
INFOPLIST_FILE = app/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 3.0.8;
MARKETING_VERSION = 3.0.10;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@ -823,7 +823,7 @@
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = app/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 3.0.8;
MARKETING_VERSION = 3.0.10;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",

View File

@ -4,13 +4,18 @@
"noNewNewsItemsThisWeek": "No hay noticias nuevas esta semana.",
"backToChild": "Volver al niño",
"title": "Noticias de Skolplattformen",
"published": "Publicada"
"published": "Publicada",
"updated": "Actualizado",
"search": {
"placeholder": "Buscar en las noticias…"
}
},
"navigation": {
"notifications": "Notificaciones",
"news": "Noticias",
"calender": "Calendario",
"menu": "Menú"
"menu": "Menú",
"classmates": "Compañeros de clase"
},
"language": {
"changeLanguage": "Cambiar idioma",
@ -25,20 +30,28 @@
"loading": "Cargando…",
"confirm": "Confirmar",
"title": "Öppna skolplattformen",
"cancel": "Anular"
"cancel": "Anular",
"tomorrow": "Mañana",
"logoutAndClearPersonalData": "Cierre la sesión y borre sus datos personales",
"logoutAndClearAllDataInclSettings": "Cierre la sesión y borre todos sus datos incluyendo sus configuraciones"
},
"children": {
"viewStatus": "Ver estado en skolplattformen.org",
"tryAgain": "Intentar otra vez",
"title": "Tus hijos",
"noKids_title": "Sin niños"
"noKids_title": "Sin niños",
"loadingErrorHeading": "¡Ahijoles!",
"loadingErrorInformationText": "La página no pudo ser cargada. Intente de nuevo o mire su estado actual en skolplattformen.org.",
"noKids_description": "No hay infantes registrados en la ciudad de Estocolmo con su número de identificación personal"
},
"calender": {
"showCalenderActions": "Mostrar acciones de calendario",
"saveToCalenderSuccess": "✔️ Guardado en el calendario",
"saveToCalenderError": "Algo salió mal",
"saveToCalender": "Guardar en calendario",
"approveAccessToCalender": "Tienes que aprobar el acceso a tu calendario"
"approveAccessToCalender": "Tienes que aprobar el acceso a tu calendario",
"emptyText": "No hay algo que mostrar",
"emptyHeadline": "El calendario está un poco vacío"
},
"auth": {
"words": {
@ -60,8 +73,8 @@
"fast": "rápida",
"fun": "divertido"
},
"subtitle": "La alternativa {{word}}",
"placeholder_SocialSecurityNumber": "Tu personnummer",
"subtitle": "La alternativa de {{word}}",
"placeholder_SocialSecurityNumber": "Tu número de identidad personal",
"loginFailed": "No se pudo iniciar sesión. Vuelva a intentarlo.",
"chooseLoginMethod": "Elija el método de inicio de sesión",
"bankid": {
@ -72,17 +85,27 @@
},
"loginAsTestUser": "Inicie sesión como usuario de pruebas",
"a11y_change_language": "Elija su idioma",
"a11y_image_two_boys": "Fotografia de dos personas mirando su telefono movil"
"a11y_image_two_boys": "Fotografia de dos personas mirando su telefono movil",
"chooseSchoolPlatform": "Elija la plataforma",
"a11y_clear_social_security_input_field": "Borrar el campo del número de identificación personal",
"loginSuccessful": "Se ha iniciado la sesión correctamente, cargando…",
"freja": {
"OpenManually": "Abrir Freja eID+ manualmente",
"OpenOnThisDevice": "Abrir Freja eID+ en este dispositivo",
"Waiting": "Esperando a Freja eID+…"
},
"a11y_select_login_method": "Seleccione el metodo para iniciar sesión"
},
"abscense": {
"title": "Informar ausencia",
"startTime": "hora de inicio",
"selectAbscenseStartTime": "Elige la hora de inicio",
"personalNumberMissing": "Falta el personnummer",
"invalidPersonalNumber": "El personnumer no es válido",
"personalNumberMissing": "Falta el número personal",
"invalidPersonalNumber": "Número personal inválido",
"entireDay": "Día completo",
"endTime": "hora de finalización",
"selectAbscenseEndTime": "Elige la hora de finalización"
"selectAbscenseEndTime": "Elige hora de finalización",
"childsPersonalNumber": "Numero de identificación del infante (personnummer)"
},
"abbrevations": {
"upperSecondarySchool": "Escuela Secundaria Obligatoria",
@ -92,5 +115,42 @@
},
"notifications": {
"notificationTitle": "Notificación: {{message}} ({{dateCreated}})"
},
"contact": {
"home": "Dirección",
"email": "Correo electrónico",
"call": "Llamar",
"a11y_show_contact_info_button_label": "Mostrar información de contacto",
"a11y_show_contact_info_button_hint": "Muestra información de contacto",
"sms": "Mensaje de texto"
},
"settings": {
"language": "Idioma",
"useSystemTheme": "Use el aspecto claro/oscuro dispositivo",
"licenses": "Licencias",
"themeAuto": "Automático",
"appearance": "Diseño",
"theme": "Aspecto",
"settings": "Configuraciones"
},
"themes": {
"dark": "Oscuro",
"light": "Claro"
},
"menu": {
"emptyText": "No hay nada para esta semana",
"emptyHeadline": "El menu del almuerzo se ve algo vacio"
},
"classmates": {
"class": "Clase",
"child": "Infante",
"contactsForGuardiansFor": "Información de contacto de los tutores de"
},
"schedule": {
"gymBag": "Mochila de gimnasio",
"end": "Termina",
"start": "Inicia",
"lunch": "Almuerzo",
"week": "Semana"
}
}

View File

@ -10,7 +10,8 @@
"socialSecurityNumber": "Burgerservicenummer",
"cancel": "Annuleren",
"logoutAndClearAllDataInclSettings": "Log uit en wis alle gegevens inclusief instellingen",
"logoutAndClearPersonalData": "Uitloggen en persoonlijke gegevens wissen"
"logoutAndClearPersonalData": "Uitloggen en persoonlijke gegevens wissen",
"tomorrow": "Morgen"
},
"auth": {
"placeholder_SocialSecurityNumber": "Jouw burgerservicenummer",
@ -46,7 +47,14 @@
"a11y_select_login_method": "Selecteer de inlogmethode",
"a11y_clear_social_security_input_field": "Wis het veld voor het burgerservicenummer",
"a11y_image_two_boys": "Foto van twee mensen die naar hun mobiele telefoons kijken",
"a11y_change_language": "Selecteer je taal"
"a11y_change_language": "Selecteer je taal",
"chooseSchoolPlatform": "Platform kiezen",
"freja": {
"OpenManually": "Freja eID+ handmatig openen",
"Waiting": "Wachten op Freja eID+…",
"OpenOnThisDevice": "Freja eID+ openen op dit apparaat"
},
"loginSuccessful": "Inloggen gelukt, laden…"
},
"abbrevations": {
"preSchool": "Peuterschool",
@ -98,7 +106,9 @@
"approveAccessToCalender": "Je moet de toegang tot je agenda goedkeuren",
"saveToCalenderError": "Er is iets fout gegaan",
"saveToCalenderSuccess": "✔️ Opgeslagen in kalender",
"saveToCalender": "Opslaan in kalender"
"saveToCalender": "Opslaan in kalender",
"emptyHeadline": "De kalender ziet er nogal leeg uit",
"emptyText": "Kon niets vinden om te laten zien"
},
"notifications": {
"notificationTitle": "Melding: {{message}} ({{dateCreated}})"
@ -114,10 +124,11 @@
"end": "Eind",
"gymBag": "Sporttas",
"lunch": "Middageten",
"start": "Start"
"start": "Start",
"week": "Week"
},
"contact": {
"a11y_show_contact_info_button_hint": "Toon contactgegevens",
"a11y_show_contact_info_button_hint": "Toont contactgegevens",
"email": "E-mail",
"home": "Adres",
"call": "Telefoongesprek",

View File

@ -56,6 +56,11 @@ const Footer = () => {
Integritetspolicy
</Link.Internal>
</li>
<li>
<Link.Internal href="/integritetspolicy-elevapp">
Integritetspolicy ElevApp
</Link.Internal>
</li>
<li>
<Link.Internal href="/qa">Frågor och svar</Link.Internal>
</li>

View File

@ -0,0 +1,105 @@
import Link from './Link'
const PrivacyElevApp = () => {
return (
<div>
<div className="max-w-6xl mx-auto px-5 md:px-0 my-5 md:my-24 prose dark:prose-dark">
<h1>Öppna Elevappen</h1>
<h2>Integritetspolicy</h2>
<p>
"Öppna Elevappen", hädanefter "appen", byggs av "Not free beer
AB" som en kommersiell app. Appen hämtar all information från
respektive skolplattform, hädanefter Skolplattformen, efter
inloggning via respektive plattforms inloggningsmetod. Appens funktion är därmed direkt knuten till
att Skolplattformen fungerar. Vi kan endast ta ansvar för att vår kod
fungerar inte deras.
</p>
<p>
Denna sida är till för att informera våra besökare och användare om
våra policies gällande insamling och hantering av personlig
information från användare av tjänsten.
</p>
<h3>TLDR (~kort sammanfattning ren svenska)</h3>
<p>
All information i appen kommer från Skolplattformen. Informationen
lämnar aldrig din telefon. Vi är snudd integritetsfanatiker och
skulle aldrig drömma om att samla in information om dig eller dina
barn. Det enda som lagras är sånt som lagras i din telefon för att det
ska snabbare att använda appen. Om vi börjar samla loggar för att
lättare kunna lösa eventuella buggar kommer vi se till att de inte
innehåller någon som helst information om dig - bara om koden.
</p>
<h3>Insamling och användning av personlig information</h3>
<p>
All information som hämtas visas endast för inloggad användare.
Informationen cacheas den mobila enheten. Ingen information skickas
från den mobila enheten eller lagras, analyseras eller processas någon
annanstans.
</p>
<p>
Inga tredjepartssystem har tillgång till någon del av informationen.
</p>
<h3>Loggning av data</h3>
<p>
För närvarande sker ingen loggning av data. Detta kan komma att
ändras. Om sker kommer loggad data att vara strikt begränsad till
systeminformation såsom namn mobil enhet och operativsystemversion
samt information om eventuella fel som uppstått i användningen. Ingen
personlig information härrörande från Skolplattformen kommer att
samlas in.
</p>
<h3>Cookies</h3>
<p>
Cookies är filer med små mängder data som används för att identifiera
användaren. Dessa används av Skolplattformen och skickas endast dit.
Cookies sparas lokalt i enheten och rensas när en inloggad session
avslutas.
</p>
<h3>Säkerhet</h3>
<p>
Vi har gjort vårt yttersta för att säkerställa säkerheten för din
information. Detta innebär i praktiken att vi aldrig skickar vidare
någon personlig data från din mobila enhet. All personlig information
levereras från Skolplattformen och därmed är du i slutänden hänvisad
till att lita säkerheten i det systemet. I fall vi, i arbetet
med att bygga denna app, har upptäckt potentiella svagheter i
Skolplattformen har vi vidtagit steg för att rapportera detta ett
ansvarsfullt sätt. Detta kommer vi göra även fortsättningsvis. Kom
ihåg att elektronisk lagring och överföring över Internet aldrig kan
garanteras vara 100% säker.
</p>
<h3>Integritet för barn</h3>
<p>
Appen läser information från system som hanterar barn under 13 år.
Oavsett barnets ålder skickar vi ingen information vidare från din
enhet. Den information du får tillgång via appen är samma som du når
via Skolplattformen.
</p>
<h3>Förändringar av integritetspolicyn</h3>
<p>
Denna integritetspolicy kan komma att uppdateras. Eftersom vi inte
samlar in någon information om våra användare kan vi tyvärr inte
kontakta dig om sker. Vi kommer dock informera om det i appen. Om
du vill vara den säkra sidan kan du återbesöka den här sidan och
.
</p>
<p>
Denna integritetspolicy gäller fr.o.m. 2024-04-29. Ändringar i denna
policy finns dokumenterade vår{' '}
<Link.External href="https://github.com/kolplattformen/skolplattformen/">
GitHub
</Link.External>
.
</p>
<h3>Kontakta oss</h3>
<p>
Tveka inte att kontakta oss om du har några frågor eller förslag till
förbättringar av denna integritetspolicy. Skicka ett mail till{' '}
<a href="mailto:dev@skolplattformen.org">dev@skolplattformen.org</a>.
</p>
</div>
</div>
)
}
export default PrivacyElevApp

View File

@ -35,7 +35,7 @@ spec:
requests:
cpu: 100m
memory: 100Mi
image: skolplattformen/web
image: ghcr.io/kolplattformen/skolplattformen
ports:
- containerPort: 3000

View File

@ -1,6 +1,6 @@
{
"name": "skolplattformen-site",
"version": "1.0.0",
"version": "1.0.4",
"main": "index.js",
"license": "MIT",
"dependencies": {

View File

@ -0,0 +1,8 @@
import { NextPage } from 'next'
import PrivacyElevApp from '../components/PrivacyElevApp'
const IntegrityElevAppPage: NextPage = () => {
return <PrivacyElevApp />
}
export default IntegrityElevAppPage

View File

@ -1,29 +1,29 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`handles route calender 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/Calender/GetSchoolCalender?childId=123&rowLimit=50"`;
exports[`handles route calender 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/Calender/GetSchoolCalender?childId=123&rowLimit=50"`;
exports[`handles route children 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/GetChildren"`;
exports[`handles route children 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/GetChildren"`;
exports[`handles route classmates 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/contacts/GetStudentsByClass?studentId=123"`;
exports[`handles route classmates 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/contacts/GetStudentsByClass?studentId=123"`;
exports[`handles route image 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/NewsBanner?url=https://example.com/img.png"`;
exports[`handles route image 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/NewsBanner?url=https://example.com/img.png"`;
exports[`handles route login with personal number 1`] = `"https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvaGVt&initialize=bankid&personalNumber=201701012393&_=1618404258782"`;
exports[`handles route login with personal number 1`] = `"https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d&initialize=bankid&personalNumber=201701012393&_=1618404258782"`;
exports[`handles route login without personal number 1`] = `"https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvaGVt&initialize=bankid&_=1618404258782"`;
exports[`handles route login without personal number 1`] = `"https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d&initialize=bankid&_=1618404258782"`;
exports[`handles route menuChoice 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelChoice?childId=123"`;
exports[`handles route menuChoice 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelChoice?childId=123"`;
exports[`handles route menuList 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelList?childId=123"`;
exports[`handles route menuList 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelList?childId=123"`;
exports[`handles route menuRss 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelRSS?childId=123"`;
exports[`handles route menuRss 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/Matsedel/GetMatsedelRSS?childId=123"`;
exports[`handles route news 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/News/GetNewsArchive?bannerImageLimit=5000&childId=123"`;
exports[`handles route news 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/News/GetNewsArchive?bannerImageLimit=5000&childId=123"`;
exports[`handles route newsDetails 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/News/GetNewsArticle?newsItemId=321&childId=123"`;
exports[`handles route newsDetails 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/News/GetNewsArticle?newsItemId=321&childId=123"`;
exports[`handles route notifications 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/notifications/getnotifications?childId=123"`;
exports[`handles route notifications 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/notifications/getnotifications?childId=123"`;
exports[`handles route schedule 1`] = `"https://etjanst.stockholm.se/vardnadshavare/inloggad2/Calender/GetSchema?childId=123&startDate=2021-01-01&endDate=2021-01-01"`;
exports[`handles route schedule 1`] = `"https://etjanster.stockholm.se/vardnadshavare/inloggad2/Calender/GetSchema?childId=123&startDate=2021-01-01&endDate=2021-01-01"`;
exports[`handles route user 1`] = `"https://etjanst.stockholm.se/vardnadshavare/base/getuserdata"`;
exports[`handles route user 1`] = `"https://etjanster.stockholm.se/vardnadshavare/base/getuserdata"`;

View File

@ -44,12 +44,12 @@ const s24Init = {
headers: {
accept: 'application/json, text/javascript, */*; q=0.01',
referer:
'https://fns.stockholm.se/ng/timetable/timetable-viewer/fns.stockholm.se/',
'https://websthlm.skola24.se/ng/timetable/timetable-viewer/fns.stockholm.se/',
'accept-language': 'en-US,en;q=0.9,sv;q=0.8',
'cache-control': 'no-cache',
'content-type': 'application/json',
pragma: 'no-cache',
host: 'fns.stockholm.se',
host: 'websthlm.skola24.se',
'x-scope': '8a22163c-8662-4535-9050-bc5e1923df48',
},
}
@ -307,9 +307,9 @@ export class ApiSkolplattformen extends EventEmitter implements Api {
const url = routes.children
const session = this.getRequestInit({
headers: {
Accept: 'application/json;odata=verbose',
Host: 'etjanst.stockholm.se',
Referer: 'https://etjanst.stockholm.se/vardnadshavare/inloggad2/hem',
Accept: 'application/json, text/plain, */*',
Host: 'etjanster.stockholm.se',
Referer: 'https://etjanster.stockholm.se/vardnadshavare/inloggad2/hem',
},
})
const response = await this.fetch('children', url, session)
@ -586,7 +586,6 @@ export class ApiSkolplattformen extends EventEmitter implements Api {
getPersonalTimetablesResponse: { childrenTimetables },
},
} = await response.json()
return childrenTimetables as Skola24Child[]
}
@ -633,6 +632,7 @@ export class ApiSkolplattformen extends EventEmitter implements Api {
week,
width: 1227,
year,
schoolYear: 'b976f986-4308-4583-b39e-2d3933094eb2',
}
const session = this.getRequestInit({
...s24Init,

View File

@ -72,7 +72,7 @@ describe('news', () => {
)
expect(item.imageUrl).toEqual('A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg')
expect(item.fullImageUrl).toEqual(
'https://etjanst.stockholm.se/Vardnadshavare/inloggad2/NewsBanner?url=A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg'
'https://etjanster.stockholm.se/Vardnadshavare/inloggad2/NewsBanner?url=A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg'
)
expect(item.imageAltText).toEqual('Nyhetsbild. Bildtext ej tillgänglig.')
expect(item.intro).toEqual(

View File

@ -2,7 +2,7 @@ import { NewsItem, parseDate, toMarkdown } from '@skolplattformen/api'
import { etjanst } from './etjanst'
const IMAGE_HOST =
'https://etjanst.stockholm.se/Vardnadshavare/inloggad2/NewsBanner?url='
'https://etjanster.stockholm.se/Vardnadshavare/inloggad2/NewsBanner?url='
export const newsItem = ({
newsId,

View File

@ -1,28 +1,28 @@
// BankId
export const login = (personalNumber?: string) => {
const baseUrl =
'https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvaGVt'
'https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d'
const optionalPersonalNumber =
personalNumber === undefined ? '' : `&personalNumber=${personalNumber}`
return `${baseUrl}&initialize=bankid${optionalPersonalNumber}&_=${Date.now()}`
}
export const loginStatus = (order: string) =>
`https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvaGVt&verifyorder=${order}&_=${Date.now()}`
`https://login003.stockholm.se/NECSadcmbid/authenticate/NECSadcmbid?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d&verifyorder=${order}&_=${Date.now()}`
export const loginCookie =
'https://login003.stockholm.se/NECSadcmbid/authenticate/SiteMinderAuthADC?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvR2V0Q2hpbGRyZW4%3d'
'https://login003.stockholm.se/NECSadcmbid/authenticate/SiteMinderAuthADC?TYPE=33554433&REALMOID=06-42f40edd-0c5b-4dbc-b714-1be1e907f2de&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2fmbid%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d'
// Freja
export const frejaLogin =
'https://login003.stockholm.se/NECSadcfreja/authenticate/NECSadcfreja?action=init&return_url=https%3A%2F%2Flogin003.stockholm.se%2FNECSadcfreja%2Fauthenticate%2FNECSadcfreja'
export const frejaLoginStatus =
'https://login003.stockholm.se/NECSadcfreja/authenticate/NECSadcfreja?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvaGVt&action=checkstatus'
'https://login003.stockholm.se/NECSadcfreja/authenticate/NECSadcfreja?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d&action=checkstatus'
export const frejaReturnUrl =
'https://login003.stockholm.se/NECSadcfreja/authenticate/NECSadcfreja?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvT3ZlcnNpa3Q%3d'
'https://login003.stockholm.se/NECSadcfreja/authenticate/NECSadcfreja?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d'
export const frejaLoginCookie =
'https://login003.stockholm.se/NECSadcfreja/authenticate/SiteMinderAuthADCFREJA?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0LnN0b2NraG9sbS5zZS92YXJkbmFkc2hhdmFyZS9pbmxvZ2dhZDIvT3ZlcnNpa3Q%3d'
'https://login003.stockholm.se/NECSadcfreja/authenticate/SiteMinderAuthADCFREJA?TYPE=33554433&REALMOID=06-89cf916c-9764-45fa-8690-eaf3fe9282bc&GUID=1&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=IfNE0iMOtzq2TcxFADHylR6rkmFtwzoxRKh5nRMO9NBqIxHrc38jFyt56FASdxk1&TARGET=-SM-HTTPS%3a%2f%2flogin001%2estockholm%2ese%2fNECSadc%2ffreja%2fb64startpage%2ejsp%3fstartpage%3daHR0cHM6Ly9ldGphbnN0ZXIuc3RvY2tob2xtLnNlL3ZhcmRuYWRzaGF2YXJlL2lubG9nZ2FkMi9oZW0%3d'
const urlLoggedIn = `https://etjanst.stockholm.se/vardnadshavare/inloggad2`
const urlLoggedIn = `https://etjanster.stockholm.se/vardnadshavare/inloggad2`
export const children = `${urlLoggedIn}/GetChildren`
@ -39,7 +39,7 @@ export const schoolContacts = (childId: string, schoolId: string) =>
`${urlLoggedIn}/contacts/GetSchoolContacts?schoolId=${schoolId}&studentId=${childId}&schoolForm=Klasslista`
export const user =
'https://etjanst.stockholm.se/vardnadshavare/base/getuserdata'
'https://etjanster.stockholm.se/vardnadshavare/base/getuserdata'
export const news = (childId: string) =>
`${urlLoggedIn}/News/GetNewsArchive?bannerImageLimit=5000&childId=${childId}`
@ -64,22 +64,22 @@ export const menuChoice = (childId: string) =>
export const schedule = (childId: string, fromDate: string, endDate: string) =>
`${urlLoggedIn}/Calender/GetSchema?childId=${childId}&startDate=${fromDate}&endDate=${endDate}`
export const cdn = 'https://etjanst.stockholm.se/vardnadshavare/base/cdn'
export const cdn = 'https://etjanster.stockholm.se/vardnadshavare/base/cdn'
export const auth = 'https://etjanst.stockholm.se/vardnadshavare/base/auth'
export const auth = 'https://etjanster.stockholm.se/vardnadshavare/base/auth'
export const startBundle =
'https://etjanst.stockholm.se/vardnadshavare/bundles/start'
'https://etjanster.stockholm.se/vardnadshavare/bundles/start'
export const hemPage =
'https://etjanst.stockholm.se/vardnadshavare/inloggad2/hem'
'https://etjanster.stockholm.se/vardnadshavare/inloggad2/hem'
export const navigationControllerScript =
'https://etjanst.stockholm.se/vardnadshavare/bundles/navigationController'
'https://etjanster.stockholm.se/vardnadshavare/bundles/navigationController'
export const baseEtjanst = 'https://etjanst.stockholm.se'
export const baseEtjanst = 'https://etjanster.stockholm.se'
export const childcontrollerScript = `https://etjanst.stockholm.se/vardnadshavare/bundles/childcontroller?v=${Date.now()}`
export const childcontrollerScript = `https://etjanster.stockholm.se/vardnadshavare/bundles/childcontroller?v=${Date.now()}`
export const createItemConfig =
'https://raw.githubusercontent.com/kolplattformen/embedded-api/main/config.json'
@ -94,13 +94,13 @@ export const samlResponseUrl =
'https://stockholm-sso.skola24.se/nssso/saml-2.0/response'
export const timetables =
'https://stockholm.skola24.se/ng/api/services/skola24/get/personal/timetables'
'https://websthlm.skola24.se/api/services/skola24/get/personal/timetables'
export const renderKey =
'https://stockholm.skola24.se/ng/api/get/timetable/render/key'
export const timetable = 'https://stockholm.skola24.se/ng/api/render/timetable'
'https://websthlm.skola24.se/api/get/timetable/render/key'
export const timetable = 'https://websthlm.skola24.se/api/render/timetable'
export const topologyConfigUrl =
'https://fantomenkrypto.vercel.app/api/getConfig'
export const selectChild =
'https://etjanst.stockholm.se/vardnadshavare/inloggad2/SelectChild'
'https://etjanster.stockholm.se/vardnadshavare/inloggad2/SelectChild'

View File

@ -1,6 +1,6 @@
{
"name": "skolplattformen",
"version": "2.16.0",
"version": "2.17.0",
"license": "MIT",
"scripts": {
"start": "nx start",