Code Monkey home page Code Monkey logo

ledenadministratie's Introduction

Docker

DJO LedenAdministratie

Dit is de source voor de DJO Ledenadminstratie. Geschreven in Python/Django. Features:

Features

  • Leden informatie opslaan en bewerken, inclusief een foto en auto-generated thumbnail
  • Facturen aanmaken in PDF formaat (Aanpasbaar HTML/CSS template)
  • Facturen automatisch versturen via e-mail, reminders versturen
  • (Deel)betalingen van facturen bijhouden
  • Notities per lid, met auteur, datum en tijd
  • Todo lijst (notitie kan als TODO worden aangemerkt)
  • API voor DJO IDP en het Smoelenboek
  • Versturen van e-mail met HTML opmaak vanuit de leden-administratie
  • Ingebouwde OAuth2 server en user/password management met ondersteuning voor 2FA via OTP

Smoelenboek API

Via de smoelenboek API kun je een lijst opvragen met de volgende gegevens:

  • Voornaam + Achternaam
  • Dag aanwezig
  • Thumbnail in embedded JPG of PNG formaat

Om te authenticeren moet je een geldig DJO IDP Access Token in een 'Authorization' header meesturen. Zie verderop voor hoe je an zo'n token komt. Een aantal voorbeelden:

curl https://<ledensite>/api/v1/smoelenboek/ -H 'Authorization: Bearer fosjfweijfadojfeiojfaioejeijfeidojf'

Dit geeft:

"vrijdag": [
  {
    "id": "<member id>",
    "first_name": "<voornaam>",
    "last_name": "<achternaam>",
    "types": "begeleider,bestuur",
    "photo": "data:image/jpg:base64,<thumbnail base64 encoded>"
  },
  {
    "enzovoorts..."
  }
],
"zaterdag": [
  {
    "id": "<member id>",
    "first_name": "<voornaam>",
    "last_name": "<achternaam>",
    "types": "member",
    "photo": "data:image/jpg:base64,<thumbnail base64 encoded>"
  }
]

Je krijgt dus per dag een array van leden terug. Je kunt ook 1 specifieke dag opvragen:

curl https://<ledensite>/api/v1/smoelenboek/vrijdag/ -H 'Authorization: IDP fosjfweijfadojfeiojfaioejeijfeidojf'

Je krijgt dan dezelfde output als hierboven, alleen zal in dit geval de zaterdag array leeg zijn ("zaterdag": [])

Smoelenboek details van 1 lid opvragen

Als je alleen de foto van 1 gebruiker wilt opvragen, kan dat als volgt:

curl https://<ledensite>/api/v1/smoelenboek/<userid>/ -H 'Authorization: Bearer fosjfweijfadojfeiojfaioejeijfeidojf'

Je krijgt dan 1 json hash terug met de details van die user:

  {
    "id": "<member id>",
    "first_name": "<voornaam>",
    "last_name": "<achternaam>",
    "types": "begeleider,bestuur",
    "photo": "data:image/jpg:base64,<thumbnail base64 encoded>"
  }

Docker

Van dit project wordt automatisch een docker container gebouwd. Deze is hier te vinden:

https://github.com/djoamersfoort/LedenAdministratie/packages

Om de image te downloaden kun je dit doen: docker pull docker.pkg.github.com/djoamersfoort/ledenadministratie/ledenadministratie:latest Je moet dan wel eerst 'docker login' doen met je github username en een personal access token met packages:read scope.

OAuth2 server

De ledenadministratie bevat een ingebouwde OAuth2 server, voor het centraal authenticeren van gebruikers in andere applicaties. De gegevens voor het gebruik van deze server zijn als volgt:

Endpoint URL's

Met een access_token kun je vervolgens de user information API aanroepen:

User info Endpoint: https://leden.djoamersfoort.nl/api/v1/member/details

Deze laatste geeft, afhankelijk van de scopes waarvoor je geautoriseerd bent, de informatie van de ingelogde gebruiker terug in JSON formaat.

User information API

Voorbeeld response:

{
    "id": "111",
    "firstName": "Henk",
    "middleName": "",
    "lastName": "Jansen",
    "fullName": "Henk Jansen",
    "username": "[email protected]",
    "email": "[email protected]",
    "emailParents": "[email protected]",
    "dateOfBirth": "2020-06-01",
    "address": "Kerklaan 1",
    "zip": "1234 XX",
    "city": "Amsterdam",
    "phone": "0611111111",
    "memberStatus": true,
    "accountType": "begeleider,lid",
    "backendID": "456"
}

Let op: je krijgt alleen de velden die je via de OAUth scopes hebt aangevraagd terug. Zie hieronder voor een lijst met scopes die je kunt aanvragen.

OAUth scopes

Om de hoeveelheid gedeelde data zo veel mogelijk te beperken, moet een client applicatie 'scopes' aanvragen voor de diverse velden van de user API. De volgende scopes zijn mogelijk:

'user/basic': 'Je gebruikersnaam en gebruikers-id',
'user/email': 'Je e-mail adres',
'user/email-parents': 'Het e-mail adres van je ouders',
'user/date-of-birth': 'Je geboortedatum',
'user/address': 'Je adresgegevens',
'user/telephone': 'Je telefoonnummers',
'user/names': 'Je voornaam, achternaam en tussenvoegsels',

OAuth clients registreren

Elke gebruiker kan zelf OAuth clients registeren. Dat gaat als volgt:

  1. Log in via https://leden.djoamersfoort.nl/
  2. Je komt nu op je profiel pagina. Kies in het linker menu voor 'OAuth applicaties'
  3. Je ziet nu een lijst van jouw applicaties, en een knop om er 1 toe te voegen.
  4. Klik toevoegen en vul de diverse velden in. Gebruik de client id en client secret in je applicatie oauth client om gebruikers in te loggen via DJO.

ledenadministratie's People

Contributors

rmoesbergen avatar dependabot[bot] avatar wipeautcrafter avatar sverben avatar deepdesk-github-ci avatar

Stargazers

 avatar Maarten avatar

Watchers

James Cloos avatar  avatar  avatar

ledenadministratie's Issues

Ondersteuning resoluties < 1920 x 1080

Op resoluties < 1920 x 1080 ziet het hoofdscherm er niet echt goed uit, veel wrapping van kolommen en de knoppen voor edit en delete zijn niet zichtbaar.

Thumbnail genereren en opslaan

Bij het opslaan van een full-size foto, een thumbnail genereren en deze opslaan. In de smoelenboek api deze thumbnail standaard teruggeven ipv. full-size image.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.