Voici mes (ThomasNoël) propositions pour le système de gestion des utilisateurs.

Idées générales

Le système se décompose en trois parties :

Une base de données
elle décrit l'ensemble des utilisateurs et des abonnements associés. Elle doit avoir un schéma simple mais permettant de multiples extensions. Voir ci-dessous pour ma proposition de structure.
Des logiciels de gestion de la base de données
de quoi remplir et gérer la base de données, notamment :
  1. une interface Web, rapide et ergonomique
  2. une interface en ligne de commande pour permettre une gestion "système"
  3. plus tard, un application native pour Gnome ou KDE
Des systèmes d'extraction vers le système
tout ce qu'il faut pour extraire les données systèmes, pas exemple:
  1. les fichiers /etc/passwd et /etc/shadow pour être utilisés sur un serveur NIS

  2. les fichiers /etc/aliases, /etc/postfix/virtual, etc, pour la messagerie

  3. une base de données d'authentification MySQL
  4. une base de données MySQL pour la messagerie
  5. un arbre LDAP
  6. etc. : tout autre système actuellement utilisé pour la gestion des services utilisateurs

Le logiciel de gestion de la base

En utilisant un système comme Django, on simplifie la programmation. Le mode objet devrait permettre de proposer des extensisons assez facilement. En outre, l'API de gestion étant disponible en Python, on peut l'utiliser directement pour écrire les outils en ligne de commande sans ré-inventer la roue.

L'idée est donc d'avoir un système Django/Python qui proposer toute l'API de gestion : ensuite au niveau des applications on n'aura qu'à appeler l'API, sans jamais toucher directement à la base de données (pas de requête SQL directe).

Les systèmes d'extraction

A partir d'un système comme Django, on peut extraire les données assez facilement via des templates. Pour la plupart des extractions il ne sera pas nécessaire à l'administrateur système de savoir programmer en Python.

Schéma de la base de données

Idées générales

Table utilisateurs

Table utilisateurs_extra

Table groupes

Table groupes_extra

Table abonnements

Table organismes

Table organismes_extra