mrkloan / loggia Goto Github PK
View Code? Open in Web Editor NEWLoggia is a unified solution for deploying a document sharing platform with access level control.
License: The Unlicense
Loggia is a unified solution for deploying a document sharing platform with access level control.
License: The Unlicense
En tant que Membre Administrateur, je souhaite pouvoir inscrire un nouveau Membre à partir des informations suivantes :
Une fois ces informations saisies par l'Administrateur, un e-mail est envoyé à l'adresse du nouveau Membre. Cet e-mail contient un lien vers une page lui permettant de définir un mot de passe pour son compte. Ce lien est accessible durant 48h.
En tant qu'Administrateur, je souhaite avoir accès à un tableau listant l'intégralité des Membres et des informations de leur compte à l'exception du hash de leur mot de passe.
Si aucun mot de passe n'est défini pour un compte, une icône et un message d'avertissement doivent être affichés à côté du nom du Membre : "Ce membre n'a pas défini de mot de passe.".
Enrichir les possibilités lors de la recherche de Document :
Une première implémentation de JWT a été mise en place aux prémices du projet. Il faudrait la revoir et assurer la couverture de cette fonctionnalité.
En tant qu'Archiviste, je souhaite pouvoir supprimer un Document publié.
Le fichier PDF lié au Document doit être supprimé du répertoire sur le serveur. Un message d'avertissement devra être affiché dans la fenêtre de confirmation : "En supprimant ce document, il sera irrémédiablement perdu. Souhaitez-vous vraiment continuer ?".
Une confirmation sera demandée à l'Archiviste : "Veuillez saisir le titre du document pour confirmer sa suppression.". Il devra alors re-saisir le Titre du Document pour confirmer sa suppression.
En tant que Développeur, je souhaite mettre en place un pipeline d'intégration continue en utilisant GitHub Actions.
L'objectif est d'exécuter automatiquement l'ensemble de la suite de tests du projet (./mvnw clean test
) lors du push d'un nouveau commit sur une PR et sur la branche master
.
L'objectif est de mettre en place les abstractions nécessaires à la journalisation d'information, ainsi qu'une première implémentation simple permettant de formater les événements journalisés au format JSON et les écrire dans un fichier avec une rotation quotidienne.
En tant qu'Archiviste, je souhaite pouvoir modifier toutes les informations d'un Document publié en suivant les même modalités que lors de la publication.
En cas de modification du fichier PDF, le nouveau fichier viendra écraser l'ancien dans le répertoire sur le serveur.
En tant que Membre, je souhaite pouvoir me connecter avec les informations suivantes :
Si ces informations correspondent au compte d'un Membre inscrit, un token JWT est généré pour ce Membre.
En cas d'échecs de connexion répétés de la part d'une même adresse IP, toutes les tentatives de connexion en provenance de adresse IP doivent être bloquées pour les 3 prochaines heures.
Lors de sa déconnexion, le token JWT du Membre est détruit.
En tant qu'Administrateur, je souhaite pouvoir mettre à jour les informations suivantes du compte d'un Membre depuis la liste des Membres inscrits :
En tant que Membre non connecté, je souhaite pouvoir cliquer sur un lien "Mot de passe oublié" sur le formulaire de connexion. Si l'adresse e-mail spécifiée correspond bien au compte d'un Membre, un e-mail lui est envoyé. Cet e-mail contient un lien vers une page lui permettant de définir un mot de passe pour son compte (voir #1).
En tant que Membre connecté, je souhaite pouvoir cliquer sur un lien "Modifier mon mot de passe" depuis le menu du site. Un e-mail est envoyé à l'adresse liée à mon compte. Cet e-mail contient un lien vers une page me permettant de définir un mot de passe pour mon compte (voir #1).
Sur la page d'accueil du site, afficher les X derniers Documents publiés.
Pouvoir filtrer par Auteur, Degré d'accès, Date de publication (voire entre deux dates ?).
En tant qu'Archiviste, je souhaite pouvoir publier un nouveau Document à partir des informations suivantes :
Pour le champ Auteur, il doit être possible de sélectionner l'un des Membres inscrits dans une liste déroulante triée par ordre alphabétique des noms de famille. Dans ce cas, le Prénom et le Nom du Membre seront utilisés pour valoriser le champ Auteur du Document.
Un Identifiant aléatoire sera généré pour le Document.
Le fichier PDF sera enregistré dans un répertoire sur le serveur et renommé en utilisant son Identifiant aléatoire et l'extension .pdf
.
En tant qu'Administrateur, je souhaite pouvoir supprimer complètement le compte d'un Membre. Une confirmation doit être demandée à l'Administrateur avant la suppression effective du compte. Aucune information ne doit persister suite à la suppression. Un Administrateur ne doit pas pouvoir supprimer son propre compte.
En tant que Membre, je souhaite pouvoir rechercher un Document depuis la page d'accueil du site.
Un champ de saisie unique permettra de saisir des mots-clés utilisés pour la recherche. Les mots-clés seront séparés par des espaces. Un Document est éligible s'il respecte les critères suivants :
ET
L'intégralité des Documents correspondant aux critères de recherche du Membre seront affichés sous forme de liste, avec toutes les informations du Document : Titre, Auteur, Mots-clés, Date de publication.
Un bouton de téléchargement ouvrira dans un nouvel onglet le lien de téléchargement du fichier PDF. L'accès à ce lien ne doit être permis qu'à un Membre connecté dont le Degré d'accès est supérieur ou égal au Degré d'accès du Document concerné. Le nom du fichier téléchargé respectera le pattern suivant : {Auteur} - {Titre} ({Date de publication}).pdf
.
Un bouton de partage permettra de copier le lien de téléchargement du fichier PDF dans le presse-papier.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.