Présentation

But du projet

Cahier des charges

L'application OpenBar, est

Installation en local

Installation d'une borne

Pour le moment l'installation est sensiblement la même. Nous n'avons pour le moment pas cherché à sécuriser les bornes comme elles avaient pu l'être auparavant. Nous sommes parti du principe que si un ordinateur se retrouvait inutilisable par la faute d'un élève malintentionné, celà se répercuterait sur les autres élèves et non sur le bar. "Leur problème pas le notre", s'il faut réinstaller un pc, un jour on fera un script d'installation et ça ne nous prendra pas plus de 5 minutes d'attention.

Installation du comptoir

Pour installer le comptoir, il vous faudra:

  • le package firefox
  • une version locale du dépôt nfc voir ici
  • un éditeur de texte
  • les droits d'administrateur sur le pc

Dans un premier temps, installez les dépendances à l'aide de la commande suivante:


sudo apt install pcsc-tools pcscd libpcsclite-dev libpcsclite1 libusb-dev libnfc-bin libnfc-dev libnfc5


Une fois ces dépenances installées, ajoutez un fichier /etc/modprobe.d/blacklist.conf contenant les lignes suivantes

blacklist pn533
blacklist pn533_usb
blacklist nfc

À quoi servent ces étapes ?

Le lecteur nfc fonctionne à l'aide d'un service qui entre en conflit avec certains drivers que nous avons blacklistés. Il dépend des packages précédemment installés.

Installation du service nfc

Afin que le service (executable en tache de fond pour vulgariser) soit lancé au démarrage, il faut télécharger le tar.gz nfc qui se trouve ici ici. À l'intérieur, vous trouverez un fichier .service que vous devrez placer dans /etc/systemd/system/nfc.service Le second est un executable auquel il faut ajouter les droits avec


chmod +x nfc


Pour vérifier l'installation, redémarrez le pc et lancez la commande:


systemctl status nfc

Une fois installé une première fois, l'executable se mettra à jour automatiquement si une nouvelle version est disponible.

Installation du pc admin

Frontend

borne

borne commande

borne index

comptoir

/comptoir/c

/comptoir/c/transactions

/comptoir/c/refils

Backend

Database

Procédures

Rechargement de carte

Création de menu

Réapprovisionnement

Bugs

Evidemment l'application contiendra des bugs, je vais essayer de lister ici les plus connus et donner une ou plusieurs méthodes pour les régler

NFC

Symptomes:

  • Le code pin ne se déclenche plus lorsque l'on badge sa carte

Causes potentielles:

  • Le service nfc d'une manière ou d'une autre, cause exacte inconnue à ce jour

Informations techniques

Le nfc fonctionne à l'aide d'un executable qui fournit à la page l'identifiant de la carte. Il est lancé au démarrage à l'aide d'un service, qui définit sous quelles conditions et comment lancer un executable. le statut d'un service est accessible par la commande systemctl restart [nom du service (ici nfc)].

Fix:

Il suffit de redémarrer le service nfc:

systemctl restart nfc # redémarre le service
systemctl status nfc # permet d'accéder au statut et de vérifier qu'il a été redémarré

Outils

Logs

Les logs sont accessible sur Portainer. Les logins sont présents sur le Vaulwarden

Vaultwarden

Vaultwarden est l'un des services hébergés par TN.NET, il sert au bar pour stocker tous les mdp utile à l'administration du bar. Le master pass au vaulwarden doit être transmis entre bureau de bar lors de passation
En cas de perte de ce mot de passe, adressez-vous aux administrateurs tn.net qui ont l'adresse de récupération de ce mail

MongoDB

La base de donnée est accessible via MongoDB-Compass. Lisez la documentation pour l'installation.
Pour le reste, ajoutez une connextion, déroulez les paramètres avancés (et ne touchez qu'à ces paramètres). Le mot de passe se trouve dans le vaulwarden du bar pour y accéder voir ici Le certificat se trouve sur le drive du bar, et devra être copié dans le répertoire info d'année en année afin de ne pas se perdre

Developper

Avis aux développers, le projet n'est pas facile à setup (du tout (du tout du tout (du tout du tout du tout (genre vraiment pas)))) Cette page est une version plus explicite que le readme du repo git.

  • Commencez par cloner le repo et rendez vous dans le dossier cloné.
  • Pour mettre en place le frontend:
    • copiez le fichier frontend/static/config.dev.json dans frontend/static/config.json
  • Pour le backend
    • Copiez le fichier backend/.env.example dans backend/.env
    • Il faut maintenant mettre en place l'authentification google:
      • Rendez-vous ici
      • Créez un nouveau projet
      • Allez sur ce projet dans l'écran de consentement OAuth
      • Une fois les cases remplies, enregistrez, et passez à l'étape suivante, qui est d'ajouter des champs d'application
      • Ajoutez /auth/userinfo.email, /auth/userinfo.profile et /auth/admin.directory.user.readonly
      • Il vous faut pour le dernier champ d'application avoir installé dans la bibliothèque l'api Admin SDK API
      • Rendez vous ensuite dans Identifiants
      • Créez un identifiant de type ID client OAuth
      • Autorisez l'url de redirection de votre backend, par défaut `http://localhost:8080/auth/google/callback
      • Vous pouvez désormais remplir les champs du .env
    • Maintenant, comme dans tout projet, il faut installer les dépendances
      • Dans le répertoire du projet executez docker compose up -d
      • Dans le répertoire backend executez task setup
      • Dans le répertoire frontend executez task setup
  • Vous pouvez désormais lancer les serveurs de frontend et backend
    • Dans le dossier backend: go run cmd/bar/main.go
    • Dans le dossier frontend: nmp run dev

Troubleshot