No description
  • JavaScript 62.7%
  • EJS 26%
  • CSS 10.9%
  • Dockerfile 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-09 21:20:01 +02:00
public Voeg Pocket ID-login voor medewerkers toe 2026-09-09 21:20:01 +02:00
src Voeg Pocket ID-login voor medewerkers toe 2026-09-09 21:20:01 +02:00
test Voeg Pocket ID-login voor medewerkers toe 2026-09-09 21:20:01 +02:00
views Voeg Pocket ID-login voor medewerkers toe 2026-09-09 21:20:01 +02:00
.dockerignore feat: start Lokma urenregistratie v1.1 2026-08-19 10:21:42 +02:00
.env.example Voeg Pocket ID-login voor medewerkers toe 2026-09-09 21:20:01 +02:00
.gitignore feat: start Lokma urenregistratie v1.1 2026-08-19 10:21:42 +02:00
docker-compose.yml Voeg Pocket ID-login voor medewerkers toe 2026-09-09 21:20:01 +02:00
Dockerfile fix: use bundled SQLite binary in Docker build 2026-08-19 11:07:13 +02:00
package-lock.json Voeg Pocket ID-login voor medewerkers toe 2026-09-09 21:20:01 +02:00
package.json Voeg Pocket ID-login voor medewerkers toe 2026-09-09 21:20:01 +02:00
README.md Voeg Pocket ID-login voor medewerkers toe 2026-09-09 21:20:01 +02:00

Lokma Urenregistratie

Eenvoudige interne webapp om gewerkte uren van medewerkers vast te leggen.

Functies in versie 1.6

  • medewerkers toevoegen en inactief zetten
  • datum, begin- en eindtijd en pauze invoeren
  • gewerkte uren automatisch berekenen
  • registraties wijzigen en verwijderen
  • maandtotalen per medewerker
  • apart urenoverzicht met medewerker- en maandselectie
  • CSV-export voor salarisadministratie
  • beheerders melden zich aan via Pocket ID (OpenID Connect)
  • persoonlijke werknemerslogin met inlogcode en wachtwoord
  • werknemers kunnen als alternatief via Pocket ID aanmelden
  • werknemers kunnen alleen nieuwe uren voor zichzelf indienen
  • beheerders maken, resetten en verwijderen werknemerslogins
  • bijhouden wie een registratie heeft ingevuld en voor het laatst gewijzigd
  • responsive voor telefoon en pc, met mobiel hamburgermenu
  • diensten die na middernacht eindigen
  • healthcheck voor Docker en automatische tests voor tijdberekening

Starten met Docker

  1. Maak in Pocket ID een vertrouwelijke OIDC-client met:
    • callback-URL https://uren.lokmaborne.nl/auth/callback
    • logout callback-URL https://uren.lokmaborne.nl
    • PKCE ingeschakeld
  2. Stel in Dockhand de variabelen uit .env.example in. Gebruik een lange willekeurige SESSION_SECRET en plaats het Pocket ID-client secret uitsluitend in OIDC_CLIENT_SECRET. OIDC_EMPLOYEE_GROUP staat standaard op lokma_medewerkers.
  3. Start:
docker compose up -d --build
  1. Open https://uren.lokmaborne.nl.

Beheerder en werknemer

Pocket ID-gebruikers in de groep lokma_medewerkers krijgen werknemersrechten. Andere gebruikers die toegang hebben tot deze Pocket ID-client zijn beheerders. Beheerders kunnen medewerkers, werknemerslogins en alle uren beheren. Alleen beheerders kunnen bestaande registraties aanpassen of verwijderen en opmerkingen toevoegen.

Een beheerder maakt een werknemerslogin aan via Medewerkers → Inloggegevens beheren:

  1. Kies een unieke inlogcode van minimaal 3 tekens.
  2. Stel een wachtwoord van minimaal 8 tekens in.
  3. Deel beide gegevens persoonlijk met de werknemer.

Als alternatief kan de beheerder bij dezelfde medewerker onder Pocket ID-login beheren het e-mailadres uit Pocket ID invullen. De medewerker moet daarnaast lid zijn van de Pocket ID-groep lokma_medewerkers. Bij de eerste login wordt het vaste Pocket ID-account aan de medewerker gekoppeld; daarna blijft de koppeling op de stabiele Pocket ID-identiteit werken, ook als het e-mailadres later verandert.

Werknemers kunnen alleen voor zichzelf datum, begin- en eindtijd en pauze indienen. Een medewerker-ID of opmerking die handmatig wordt meegestuurd, wordt door de server genegeerd. Na het indienen ziet de werknemer de eigen laatste registraties alleen ter controle; wijzigen en verwijderen kan uitsluitend een beheerder.

Wachtwoorden worden gezouten en gehasht opgeslagen en kunnen niet worden teruggelezen. Een beheerder kan alleen een nieuw wachtwoord instellen. Na vijf mislukte inlogpogingen vanaf hetzelfde adres wordt de werknemerslogin vijftien minuten geblokkeerd.

Een gekoppeld Pocket ID-account dat niet meer in lokma_medewerkers zit, wordt geweigerd en krijgt nooit automatisch beheerrechten. Verwijder eerst de medewerkerkoppeling als zo'n Pocket ID-account bewust beheerder moet worden.

De SQLite-database staat in ./data/uren.sqlite en blijft bestaan bij een nieuwe container.

Controleren

npm test

De route /health geeft de status en appversie terug voor Docker-monitoring.

Bestaande uren van vóór de Pocket ID-koppeling blijven behouden en worden getoond met Invoerder onbekend.

Beveiliging

Commit nooit een .env-bestand of client secret. Als een geheim eerder in Git heeft gestaan, verwijder het niet alleen uit het bestand maar roteer het ook in Pocket ID.