Files
Vivier/aide/administration.fr.md
T

24 KiB

Rôle du gestionnaire

Le gestionnaire des comptes a les mêmes droits que les autres sur les profils. Il a en plus le menu Gestion :

  • Comptes : inviter, créer, modifier, désactiver un compte, remettre à zéro une double authentification, lever un blocage
  • Connexions : le journal de chaque essai de connexion
  • Journal : les actions sur tous les profils
  • Conservation et Corbeille : la durée de conservation et la suppression des profils
  • Sauvegarde : état, lancement, téléchargement
  • Erreurs : les erreurs imprévues, avec leur référence

Il a aussi l'export CSV de la liste des profils, l'alerte de sauvegarde sur son tableau de bord et ce guide d'administration.

Le premier compte créé est gestionnaire. Il peut confier ce rôle à d'autres comptes. Gardez au moins deux gestionnaires : si l'un perd son téléphone et ses codes de secours, l'autre remet sa double authentification à zéro.

Le guide Sécurité, lisible par tous, explique les protections aux utilisateurs. Cette page dit comment les gérer.

Comptes

Menu Gestion, Comptes.

Inviter une personne

La voie conseillée : personne d'autre que la personne ne connaît son mot de passe.

  1. Bloc Inviter une personne : saisissez son nom, facultatif, puis Créer un lien d'invitation.
  2. Copiez le lien affiché et envoyez-le à la personne, par email ou messagerie interne. Il ne s'affiche qu'une fois.
  3. La personne ouvre le lien, choisit son identifiant et son mot de passe, puis active la double authentification. Son compte est actif tout de suite.

Le lien sert une seule fois et expire après 48 heures. Liens en cours liste les liens pas encore utilisés. Annuler le lien le rend inutilisable. Lien perdu ou expiré : créez-en un autre.

Le lien d'invitation reprend l'adresse de la page ouverte. Pour la fixer, renseignez la clé adresse de config/config.php.

Créer un compte

Vous pouvez aussi créer le compte vous-même.

  1. Saisissez le nom de la personne.
  2. Choisissez son identifiant : 3 à 40 caractères, lettres sans accent, chiffres, point, tiret.
  3. Choisissez un mot de passe provisoire : 12 caractères au moins.
  4. Cliquez sur Créer le compte, puis transmettez l'identifiant et le mot de passe à la personne, de vive voix ou par un canal différent de l'identifiant.

À sa première connexion, la personne choisit son propre mot de passe, puis active la double authentification.

Lire la liste des comptes

Chaque compte affiche son identifiant, son rôle, l'état de sa double authentification et sa dernière connexion. Double authentification à activer signale un compte qui ne l'a pas encore faite. Mot de passe à changer signale un mot de passe provisoire pas encore remplacé.

Modifier un compte

Sous chaque compte, Modifier le nom, l'identifiant ou le mot de passe. Laissez le mot de passe vide pour le garder.

Un nouveau mot de passe est provisoire : la personne le change à sa prochaine connexion, et ses sessions ouvertes se ferment. Pour le donner, retapez votre propre mot de passe.

  • Désactiver le compte : la personne ne peut plus se connecter et ses sessions se ferment aussitôt. Ses actions restent dans le journal. Réactiver le compte rétablit l'accès.
  • Confier la gestion des comptes : le compte devient gestionnaire. Retirer la gestion des comptes fait l'inverse. Retapez votre mot de passe pour confirmer.
  • Ses connexions ouvre le journal des connexions de ce compte.

Vous ne pouvez ni désactiver votre propre compte, ni retirer votre propre rôle. Un compte ne se supprime pas : le journal garde ses actions.

Mot de passe oublié

Donnez un mot de passe provisoire par Modifier le nom, l'identifiant ou le mot de passe. La personne le remplace à la connexion.

Téléphone perdu

La personne se connecte d'abord avec un code de secours, puis configure une autre application depuis Mon compte.

Plus de code de secours :

  1. Vérifiez qu'il s'agit bien de la personne : par téléphone, en personne. Une demande par email ne suffit pas.
  2. Sous son compte, Remettre à zéro la double authentification, puis retapez votre mot de passe.
  3. La personne active une nouvelle application à sa prochaine connexion. Ses sessions ouvertes sont fermées.

Connexions bloquées

Le bloc Connexions bloquées apparaît quand un blocage est en cours :

  • un identifiant bloqué depuis une adresse, après 5 échecs (15 minutes, puis 30 et 60)
  • une adresse bloquée pour tous les identifiants, après 20 échecs en une heure

Débloquer lève le blocage tout de suite. Faites-le seulement si vous savez qui essaie, par exemple un collègue qui s'est trompé de mot de passe. Des échecs en série depuis une adresse inconnue : laissez le blocage et regardez le journal des connexions.

Demandes faites avant la version 1.8

La page publique de demande de compte n'existe plus. Les demandes restées en attente s'affichent dans Demandes à valider. Accepter ouvre l'accès : la personne active la double authentification à sa connexion. Refuser efface la demande.

Journal des connexions

Menu Gestion, Connexions.

Chaque essai de connexion y figure : date, compte, identifiant saisi, adresse IP, réseau, navigateur, résultat. Filtrez par compte ou gardez les échecs seulement. Le journal garde 12 mois. La tâche planifiée et la connexion d'un gestionnaire effacent les lignes plus anciennes.

Résultat Sens
Connexion réussie Mot de passe et code bons
Mot de passe incorrect Identifiant connu ou non, mauvais mot de passe
Code incorrect Bon mot de passe, mauvais code de double authentification
Essai bloqué Essai refusé pendant un blocage
Compte désactivé Essai sur un compte désactivé

L'alerte par email. Quand un compte gestionnaire se connecte depuis un réseau jamais vu pour ce compte, Vivier envoie un email aux adresses de comptes.notifier, ou à l'adresse d'expédition. Le réseau est la plage d'adresses (les trois premiers nombres d'une adresse IPv4). La première connexion d'un compte ne déclenche pas d'alerte.

Vous ne reconnaissez pas une connexion : changez le mot de passe du compte, remettez à zéro sa double authentification, puis fermez ses sessions en le désactivant et en le réactivant.

Erreurs

Menu Gestion, Erreurs.

Quand une page échoue, l'utilisateur lit « Une erreur est survenue » et une référence de six caractères. La page Erreurs liste les 300 dernières, avec la référence, la date, la page, la cause et l'endroit du code. Aucune donnée de candidat n'y figure. Transmettez la ligne à la personne qui maintient Vivier. Vider le journal efface la liste.

Suppression des profils et corbeille

Seul le gestionnaire supprime un profil : bouton Supprimer le profil en bas de la fiche, ou Supprimer sur la page Conservation. Les autres comptes ne voient pas ces boutons.

Ce que fait la suppression

Le profil part à la corbeille. Il disparaît aussitôt du Kanban, des profils, de la recherche, des besoins, du suivi, du tableau de bord, de l'export CSV et de la page Conservation. Sa fiche et ses documents ne s'ouvrent plus. Dans le journal, son nom est remplacé par sa référence.

La page Corbeille

Menu Gestion, Corbeille. Chaque ligne donne le profil, la date de suppression, le compte qui a supprimé et la date d'effacement.

  • Restaurer remet le profil en place, avec toutes ses données. Il revient en bas de sa colonne.
  • Effacer maintenant efface le profil sans attendre. L'action est sans retour.

L'effacement après 30 jours

Au bout de 30 jours, Vivier efface la fiche, le CV d'origine, la photo, les pièces jointes, les commentaires, les entretiens, les relances, les mots-clés et l'historique. Le journal garde une ligne : la référence du profil, le compte qui a supprimé et la date de mise à la corbeille. Aucun nom.

L'effacement se fait à trois moments : la tâche planifiée du dimanche, la connexion d'un gestionnaire, l'ouverture de la page Corbeille. Un profil peut donc rester quelques jours de plus si personne ne se connecte.

Le délai se règle par CORBEILLE_JOURS, en tête de src/bootstrap.php.

À savoir

  • Tant qu'un profil est à la corbeille, son adresse email reste prise. L'import du même candidat est refusé : restaurez le profil ou effacez-le.
  • Les sauvegardes déjà faites gardent les profils supprimés depuis. Une sauvegarde faite pendant les 30 jours contient les profils à la corbeille.

Sauvegarde

Menu Gestion, Sauvegarde.

Ce qui est sauvegardé

Élément Où Comment
Base de données Email et copie sur le serveur Chaque semaine, par la tâche planifiée
Fichiers : CV, rapports, pièces jointes, photos Téléchargement À la main, bouton Télécharger l'archive des fichiers, après avoir retapé votre mot de passe

La base contient les profils, les commentaires, les entretiens, les relances, les besoins, le journal et les comptes. Les fichiers sont trop lourds pour un email.

La sauvegarde hebdomadaire

La tâche planifiée de l'hébergement lance le script cron/sauvegarde.php. Le script :

  1. exporte toute la base dans un fichier SQL
  2. le compresse en zip
  3. garde une copie dans stockage/sauvegardes/
  4. envoie le zip aux adresses réglées dans config/config.php

Le fichier n'est pas chiffré. Il contient les données des candidats, les empreintes des mots de passe et les clés de double authentification chiffrées. Sa protection est celle des boîtes qui le reçoivent : mot de passe solide et double authentification.

Programmer la tâche chez OVH

  1. Espace client, hébergement, onglet Plus, Planificateur de tâches, Ajouter une planification.
  2. Commande : vivier/cron/sauvegarde.php. Langage : PHP 8.3.
  3. Fréquence : le jour et l'heure voulus. OVH ne règle pas les minutes : une tâche prévue à 6 h part entre 6 h 00 et 6 h 59.
  4. Adresse du rapport : facultative. OVH y envoie ce que le script affiche.

Vérifier que tout marche

  1. Page Sauvegarde, Envoyer un email d'essai, sans pièce jointe. Regardez les boîtes de réception, courriers indésirables compris.
  2. Cochez Envoyer aussi la sauvegarde par email, puis Sauvegarder maintenant.
  3. Ouvrez le zip reçu : il contient un fichier .sql.
  4. Après le premier passage de la tâche planifiée, vérifiez la ligne « Tâche planifiée » dans l'historique.

Si l'email arrive dans les courriers indésirables, créez une règle pour l'expéditeur. Le domaine de l'adresse d'expédition doit autoriser le serveur d'OVH dans son enregistrement SPF, et ne publier qu'un seul enregistrement SPF.

Les alertes

Signal Sens
Email « ÉCHEC de la sauvegarde » La sauvegarde a échoué, ou elle est faite mais son envoi a échoué
Bandeau rouge sur le tableau de bord Aucune sauvegarde réussie depuis plus de 8 jours, ou un problème à la dernière

Le bandeau couvre le cas où la tâche ne démarre plus ou l'email ne part plus : dans ce cas, aucun email d'alerte n'arrive.

Les copies sur le serveur

L'historique de la page liste chaque sauvegarde. Télécharger récupère le zip. Supprimer efface la copie du serveur, pas les emails reçus.

Le réglage semaines_conservees fixe la durée : 0 garde toutes les copies, un nombre supprime les copies plus anciennes.

Une copie garde les profils supprimés depuis. Pour respecter la durée de conservation des données, supprimez les copies et les emails de sauvegarde anciens.

Si le fichier devient trop lourd

Au-delà de taille_max_email, Vivier refait l'export sans l'index de recherche, qui se reconstruit. S'il reste trop lourd, l'email part sans pièce jointe et le fichier se télécharge dans Vivier.

Restaurer

  1. phpMyAdmin, base de Vivier, onglet Importer : chargez le fichier .sql extrait du zip. Il remplace toutes les tables.
  2. Par FTP, copiez les dossiers docs/ et photos/ de l'archive des fichiers dans stockage/.
  3. Si le fichier SQL annonce en tête que l'index de recherche n'est pas inclus : menu Gestion, Comptes, Réindexer tous les profils.
  4. Gardez config/cle-secrets.php, ou la clé cle_secrets : elle déchiffre les clés de double authentification de la sauvegarde.
  5. Connectez-vous. Les comptes, les mots de passe et la double authentification sont ceux du jour de la sauvegarde.

Téléchargez l'archive des fichiers le même jour que la sauvegarde de la base : la base ne retrouve que les fichiers qui existaient ce jour-là.

Installation sur l'hébergement OVH

Vivier demande PHP 8.3 et une base MySQL ou MariaDB. Aucun framework, aucune dépendance à installer.

  1. Espace client, onglet Bases de données : créez une base MySQL. Notez l'hôte, le nom, l'utilisateur et le mot de passe.
  2. phpMyAdmin, onglet Importer : chargez sql/schema.sql.
  3. Envoyez tout le dossier vivier/ par FTP, à côté de www/.
  4. Onglet Multisite : ajoutez le sous-domaine avec pour dossier racine vivier/public. Cochez SSL.
  5. Copiez config/config.exemple.php en config/config.php et renseignez la base.
  6. Ouvrez l'adresse du site en https://. La page de premier lancement crée votre compte, gestionnaire des comptes, puis vous fait activer la double authentification.
  7. Programmez la sauvegarde hebdomadaire.

Le dossier racine doit être vivier/public. Les autres dossiers restent ainsi inaccessibles par une adresse. Des fichiers .htaccess les bloquent aussi, en seconde protection.

Dossier Rôle
public/ Racine web : index.php, styles, scripts, polices
src/ Code PHP
vues/ Écrans
lang/ Traductions de l'interface et des CV
aide/ Les textes de cette aide
config/ Configuration
stockage/ CV, documents, photos, sauvegardes
cron/ Script de la sauvegarde hebdomadaire
sql/ Création de la base et migrations
claude/ Consignes, schéma et exemple du projet Claude d'analyse
tests/ Tests

Mise à jour

  1. Exportez la base dans phpMyAdmin, onglet Exporter.
  2. Exécutez dans l'ordre les fichiers sql/migration-*.sql qui n'ont pas encore été passés. La migration 1.5 ajoute la corbeille et les demandes de compte. Elle crée aussi le compte gestionnaire ypilla, ou met à jour son mot de passe et son rôle s'il existe. La migration 1.8 ajoute la double authentification, les invitations, le journal des connexions, la nationalité, le permis de travail, la disponibilité classée et les champs du CV Europass. Elle classe les disponibilités déjà saisies et garde le texte d'origine en note.
  3. Remplacez par FTP les dossiers public/, src/, vues/, lang/, aide/, cron/, sql/, claude/ et tests/. Gardez config/config.php et stockage/.
  4. Reportez dans config/config.php les nouvelles clés de config/config.exemple.php. En 1.8 : adresse, cle_secrets, securite.
  5. Le dossier config/ doit être accessible en écriture au premier lancement : Vivier y crée cle-secrets.php. Sinon, renseignez cle_secrets vous-même.
  6. Dans Vivier : menu Gestion, Comptes, Réindexer tous les profils, puis Traduire tous les profils.
  7. Dans le projet Claude d'analyse : remplacez les consignes, le schéma et l'exemple par ceux du dossier claude/.

Après la mise à jour 1.8, chaque compte active la double authentification à sa connexion suivante. Prévenez les utilisateurs : il leur faut leur téléphone.

Configuration

Tout se règle dans config/config.php. Ce fichier ne doit jamais être publié.

Clé Rôle
nom_app Le nom affiché dans l'en-tête
fuseau Le fuseau horaire des dates
db L'hôte, le port, le nom, l'utilisateur et le mot de passe de la base
societe Les mentions d'IT Club sur les CV exportés
claude La clé d'API, le modèle, la longueur maximale de réponse, le délai
sauvegarde Les destinataires, l'expéditeur, la durée des copies, la taille maximale d'un email
stockage Le dossier des fichiers, hors de la racine web
taille_max La taille maximale d'un fichier chargé, en octets
conservation_mois La durée de conservation d'un profil, en mois
comptes notifier : les adresses qui reçoivent l'alerte de connexion d'un gestionnaire depuis un nouveau réseau
adresse L'adresse publique de Vivier, reprise dans les liens d'invitation. Facultative
cle_secrets La clé de chiffrement des clés de double authentification. Vide : Vivier crée config/cle-secrets.php
securite mots_de_passe_fuites : false coupe le contrôle des mots de passe connus dans des fuites
https true en production : HTTPS obligatoire, en-tête HSTS, cookie de session limité à HTTPS

Analyse automatique

Pour l'activer, renseignez cle_api dans la clé claude de config/config.php. Sans clé, seul l'import par fichiers déjà analysés est proposé.

  • La clé se crée dans la console d'Anthropic. L'usage de l'API est facturé à part d'un abonnement Claude.
  • Formats lus : PDF, DOCX, ODT, MD, TXT.
  • Les consignes envoyées à Claude sont celles du dossier claude/. Les modifier change les deux voies d'analyse.
  • Le CV est transmis à Anthropic pour l'analyse.
  • Délai maximal : 240 secondes, réglable. Si l'hébergement coupe avant, passez par les fichiers déjà analysés.

Traduction des profils

Chaque profil s'affiche dans la langue de l'interface. Un recruteur en anglais lit les intitulés, la synthèse, les expériences et les points d'attention en anglais.

  • À l'import, Vivier prévoit la traduction du profil dans chaque langue de l'interface.
  • Les traductions se font en arrière-plan, une par une, tant qu'une page de Vivier reste ouverte chez un utilisateur.
  • Une fiche modifiée est de nouveau mise en file. En attendant, le texte d'origine s'affiche avec un bandeau.
  • Les commentaires, comptes rendus d'entretien, besoins clients et permis de travail ne sont pas traduits : ils restent dans la langue de leur auteur.
  • Les noms de technologies, d'entreprises, de clients et de projets restent tels quels.

Menu Gestion, Comptes, bloc Maintenance :

  • le nombre de traductions à faire
  • les traductions abandonnées après 3 essais, avec leur cause
  • Traduire tous les profils met en file chaque profil sans traduction à jour, et relance les traductions abandonnées

Sans analyse automatique, les traductions passent par un fichier, depuis l'aperçu du CV IT Club, comme avant.

Recherche : index et synonymes

Vivier range chaque fiche dans un index de recherche. L'index se met à jour à chaque import ou modification.

Réindexer tous les profils (menu Gestion, Comptes) reconstruit l'index. À relancer après une mise à jour de Vivier ou une restauration sans index.

Les synonymes se règlent dans la table synonymes_recherche, avec phpMyAdmin :

Type Effet Exemple
seniorite Le mot devient un filtre de séniorité senior vers confirme et expert
texte Le mot gagne une variante dev vers développeur

Un changement de synonyme agit tout de suite, sans réindexer.

Sécurité

Le guide Sécurité, dans l'aide, décrit les protections pour les utilisateurs. Voici ce qui vous revient.

Réglage Valeur Où
Double authentification Obligatoire pour tous, codes à 6 chiffres (RFC 6238), 10 codes de secours src/securite.php
Mot de passe 12 caractères au moins, 200 au plus, refusé s'il figure dans une fuite connue LONGUEUR_MOT_DE_PASSE, LONGUEUR_MAX_MOT_DE_PASSE
Empreinte du mot de passe Argon2id, recalculée à la connexion pour les anciens comptes hacher_mot_de_passe()
Blocage d'un identifiant 5 échecs : 15 min, puis 30 et 60 min ECHECS_SERIE, BLOCAGES_MINUTES
Blocage d'une adresse 20 échecs en une heure ECHECS_IP_HEURE
Session 2 h sans activité, 12 h au plus DUREE_INACTIVITE, DUREE_SESSION_MAX
Lien d'invitation 48 h, une seule fois INVITATION_HEURES
Journal des connexions 12 mois CONNEXIONS_MOIS

Les constantes se trouvent en tête de src/bootstrap.php et de src/securite.php.

Autres protections :

  • HTTPS obligatoire quand https vaut true : redirection des adresses en http:// et en-tête HSTS d'un an. Ne passez https à false que pour un essai sur un poste local.
  • Les clés de double authentification sont chiffrées (AES-256-GCM). La clé de chiffrement est dans config/cle-secrets.php, créé au premier besoin, ou dans la clé cle_secrets de config/config.php. Sauvegardez-la avec config.php : sans elle, chacun doit se connecter avec un code de secours puis réactiver sa double authentification.
  • Mots de passe vérifiés auprès du service Pwned Passwords : seuls les 5 premiers caractères de l'empreinte SHA-1 partent. Si le service ne répond pas, le mot de passe est accepté. securite.mots_de_passe_fuites à false coupe ce contrôle.
  • Votre mot de passe est redemandé pour confier ou retirer la gestion, donner un mot de passe à un autre compte, remettre à zéro une double authentification et télécharger l'archive des fichiers.
  • Export CSV, journal, conservation, corbeille, suppression des profils : gestionnaire seulement.
  • Site exclu des moteurs de recherche : en-tête X-Robots-Tag et balise robots sur chaque page.
  • Fichiers stockés hors de la racine web, sous un nom aléatoire.
  • Chaque action est tracée dans le journal, avec son auteur.
  • Aucun appel à un service externe, sauf l'API Claude quand l'analyse automatique est activée, et Pwned Passwords.

Langues

L'interface existe en français et en anglais. Les CV se génèrent en français, anglais et allemand.

Ajouter une langue d'interface :

  1. Copiez lang/en.php en lang/xx.php et traduisez les valeurs. Une clé non traduite s'affiche en français.
  2. Ajoutez la langue à LANGUES_INTERFACE dans src/i18n.php.
  3. Copiez aide/guide.en.md et aide/administration.en.md avec le code de la langue, et traduisez-les. Sans ces fichiers, l'aide s'affiche en français.

Pour une langue de CV, quelques dizaines de libellés suffisent : voir lang/de.php. La langue s'ajoute à LANGUES_CV.

Dépannage

Symptôme Cause probable Que faire
« Configuration absente » config/config.php manque Copiez config/config.exemple.php et renseignez-le
« Une erreur est survenue » Erreur côté serveur Menu Gestion, Erreurs : cherchez la référence donnée par l'utilisateur
Un utilisateur n'a plus son téléphone ni ses codes Double authentification perdue Vérifiez son identité, puis Remettre à zéro la double authentification
« Trop d'essais infructueux » Blocage après des échecs Attendez, ou Débloquer dans Comptes si vous savez qui essaie
Code de double authentification toujours refusé Heure du téléphone décalée Réglez l'heure du téléphone en automatique
Personne ne peut plus valider son code config/cle-secrets.php perdu ou changé Remettez le fichier d'origine. Sinon, chacun se connecte avec un code de secours et réactive sa double authentification
« Vivier ne s'utilise qu'en HTTPS » Formulaire envoyé en http:// Ouvrez l'adresse en https://. Vérifiez le certificat SSL du multisite
Profils restés en français en anglais Traductions pas faites Comptes, Traduire tous les profils, puis gardez une page ouverte
L'analyse automatique dépasse le délai Limite de durée de l'hébergement Passez par les fichiers déjà analysés
La recherche ne trouve rien Index vide Réindexer tous les profils
Aucun email de sauvegarde Tâche arrêtée, SPF, courriers indésirables Email d'essai, puis vérifiez la tâche dans l'espace client
Un chargement de fichier échoue Fichier au-dessus de 10 Mo Réduisez le fichier, ou relevez taille_max et la limite de PHP

Les tests se lancent en ligne de commande : php tests/test_import.php, puis de même pour test_recherche.php, test_photo.php, test_i18n.php, test_suivi.php, test_aide.php et test_securite.php.