Enoncé du Mini-Projet Mini-projet à réaliser et à rendre à deux Comptera à 50% dans votre note finale. Dans le cadre de ce mini-projet vous allez devoir réaliser toute la spécification d'une API ReST dans un premier temps, puis le développement de cette API dans un second temps Le besoin Vous souhaitez proposer à vos utilisateurs une API qui permettra de gérer le fonctionnement d'une messagerie instantanée type Discord Sur cette messagerie, un Utilisateur doit pouvoir : S'inscrire sur n'importe quel serveur (les serveurs sont ouverts à tous les utilisateurs) Quitter un serveur Créer un serveur (il en devient administrateur) Poster un message sur un channel d'un des serveurs sur lesquels il est inscrit Editer ou supprimer un message qu'il a lui même posté Voir les messages de tous les utilisateurs sur chacun des channels auxquels il a accès Un Administrateur est un Utilisateur un peu spécial, possédant un plus haut niveau de permissions sur un ou plusieurs serveurs. En plus des actions d'un Utilisateur, il peut aussi : Editer et supprimer un serveur sur lequel il est administrateur Créer, éditer et supprimer un channel (sur un serveur sur lequel il est administrateur) Désinscrire un utilisateur d'un serveur (sur lequel il est administrateur) Supprimer tout message de n'importe quel utilisateur (y compris d'un autre administrateur) sur un serveur sur lequel il est administrateur Enfin, un administrateur peut aussi nommer administrateur un autre utilisateur inscrit sur un serveur sur lequel il est administrateur L'objectif de votre API est de permettre à vos partenaires de développer des clients pouvant être des clients légers, des Progressive Web App ou des clients lourds. Votre API sera un CRUD tournant autour des notions d'utilisateurs, administrateurs, serveurs, channels et messages. 1ère étape - Spécifications (8 points) Vous allez commencer par créer la spécification de cette API, et plus précisément : Toute la description des ressources et des end-points nécessaires La documentation complète de l'API Vous ferez ce travail au format OpenAPI et utiliserez l'éditeur OpenAPI de votre choix (Swagger, Stoplight, Apibldr, ...). L'API que vous définirez doit couvrir tous les besoins basiques de la messagerie instantanée. De plus, il est souhaité que votre API soit HATEOAS (niveau 3 du modèle de Maturité de Richardson). Vous êtes libre d'utiliser ou non un format normé de réponse (JSON-LD, HAL, JSON-API etc ...), la note ne tiendra pas compte de ce choix. La pertinence des choix de conception que vous ferez sera cependant prise en compte dans la note. Enfin, vous devrez documenter autant que possible chaque fonctionnalité, chaque end-point, l'objectif étant que cette documentation soit totalement suffisante pour vos utilisateurs pour exploiter l'intégralité des fonctionnalités de votre API. Cette documentation devrait aussi permettre à quelqu'un qui souhaiterait implémenter votre API de pouvoir le faire. 2ème étape - Sécurité (4 points) En plus du travail de spécification à réaliser, vous rédigerez également un document de sécurité détaillant tout ce qu'il faudra/faudrait mettre en place (d'un point de vue technique) pour répondre au mieux aux besoins suivant : L'accès à votre API sera gratuit, chaque utilisateur utilisant votre messagerie instantanée communiquera avec votre API, il faudra obligatoirement authentifier les utilisateurs. Et une fois l'utilisateur authentifié, il faudra s'assurer qu'il a bien les autorisations nécessaires pour effectuer l'action intentée. Une utilisateur n'ayant pas la permission de réaliser une action devra recevoir un code HTTP approprié. Vous ne voulez pas qu'un utilisateur puisse flooder un serveur. Que faire pour garder le contrôle ? L'API doit être robuste aux principales failles du top 10 API OWASP. Les attaques de type injection (SQL, XSS etc) ne doivent notamment pas réussir. Vous expliquerez au mieux ce qui vous semble le plus pertinent à mettre en place pour répondre à tous ces besoins, en vous appuyant sur les solutions vues en cours ainsi que sur vos recherches. Vous expliquerez aussi les limites de ces solutions. 3ème étape - Mise en œuvre (8 points) Dans la mesure du possible, vous tenterez de réaliser une mise en œuvre de l'API que vous venez de spécifier. Il est vous est conseillé de développer votre API avec Node.js, même si vous restez libres de choisir une autre technologie (Java, PHP, Python, ...). Si vous ne choisissez pas Node.js, vous expliquerez les raisons de votre choix. Vous pouvez vous inspirer de ce tuto pour débuter votre API : https://practicalprogramming.fr/node-js-api Vous devrez aussi créer une base de données dans une technologie adaptée au langage que vous avez choisi. Vous pouvez par exemple utiliser le service cloud MongoDB Atlas si vous développez votre API avec Node.js, votre base de données sera ainsi déjà hébergée. L'objectif est dans un premier temps d'avoir une API pleinement fonctionnelle et conforme à vos spécifications. Ensuite vous tenterez d'appliquer les solutions en terme de sécurité que vous avez évoquées à l'étape précédente. Vous êtes libres d'utiliser les frameworks et/ou librairies de votre choix. Vous trouverez de l'aide sur les middlewares à utiliser avec Node.js et Express pour gérer les token sur cette page : https://developer.okta.com/blog/2019/02/14/modern-token-authentication-in-node-with-express Vous déposerez votre code complet sur un repository public de gitHub et vous expliquerez dans le readme de ce repository toutes les étapes à réaliser pour récupérer votre code et le faire fonctionner en local. L'API doit pouvoir être redéployée et fonctionnelle en suivant ces indications. Objectif : en s'appuyant sur votre spécification, et en utilisant Postman, toutes les opérations du CRUD doivent être réalisables sur votre API une fois celle-ci déployée Il ne vous est pas demandé de développer un CLIENT à votre API. Si vous n'arrivez pas à tout coder, et que vous procédez à des simplifications, vous expliquerez les différences entre la spécification et le développement. Rendu du projet Vous déposerez sur Moodle une archive zip au nom du binôme, contenant les éléments suivant : Un export de la spécification de votre API au format OpenAPI (format JSON ou YAML) Un fichier texte readme.txt contenant l'URL vers le repository gitHub contenant le code de votre API Le fichier de sécurité expliquant les choses à mettre en place d'un point de vue de la sécurité (.doc, .pdf, .ppt, ...)
Il s'agit d'utiliser les connaissances acquises en HTML, CSS et Javascript et PHP pour réaliser un (mini) site de commerce électronique (e-commerce). Je vous laisse le choix du thème. Ce site prendra la forme de plusieurs pages HTML (au minimum trois) partageant un même style visuel, dont la template est celle réalisée en TPs : ● Une page d’accueil ● Une page d'authentification (connexion et inscription). ● D’autres pages portant sur les éléments illustrant le thème que vous aurez choisi (affichage des produits). ● Au minimum un document CSS et un autre document Javascript externes. ● Au minimum un script PHP et une base de données MySQL. Votre travail consiste en : ● L'utilisation de la structure des documents HTML créée précédemment lors des Tps ; ● La réalisation du contenu de ces documents ; ● La réalisation des feuilles de style mettant en forme ces documents ; ● La réalisation de documents dynamiques Javascript. ● Connexion de la partie Front (client) au serveur. Vos pages devront être agréables à consulter. Vous ferez donc attention au choix des couleurs et ferez en sorte que les textes soient facilement lisibles. Les images seront également dimensionnées de manière adaptée à la page. 1/3 Compte-tenu de la taille maximale des archives que vous pouvez rendre (Maximum 50 Mo par projet), vous éviterez d'intégrer à votre projet des vidéos ou des images dont les fichiers sont trop volumineux. La page d’accueil présentera le thème choisi et introduira les autres pages sous forme de Menu qui contiendra donc des liens vers elles. La page d’accueil aura pour nom nécessairement index.html ou index.php. Toutes les autres pages doivent avoir également un Menu (un lien vers la page d’accueil est obligatoire). Un minimum de texte est demandé. Vous ne pouvez pas en mettre trop peu au risque que vos pages paraissent vides. Vous n'êtes pas obligés de produire du contenu original et vous pouvez recopier des informations trouvées sur le web (mais sans copier la structure des pages dont vous vous inspirez). Collectez les informations qui constitueront le contenu de vos documents (texte, images, données pour les tables, etc.). Vous pouvez sans problème reprendre des contenus trouvés sur d'autres sites, l'objectif ici est l'écriture des documents HTML avec des feuilles CSS et de documents Javascript, pas la production d'un contenu original. Vous ferez cependant attention à avoir assez de contenu pour pouvoir diversifier les feuilles de style que vous écrirez et mettre en évidence votre travail. L'utilisation de templates est strictement interdite. La seule template autorisée est celle développée lors des Tps précédents (TP2 et TP3). Rendez votre travail sous la forme d'une archive (.rar, .zip ou .7z) en un seul fichier compressé. Le contenu de ce dossier à compresser sera organisé ainsi : ● Le fichier index.html ou index.php sera placé dans ce dossier ; ● Les autres fichiers html seront placés dans un sous-dossier html ; ● Un sous-dossier de nom css contiendra les fichiers css que vous aurez définis ; ● Un sous-dossier de nom images contiendra les fichiers sources des images qui sont utilisées dans votre projet ; ● Un sous dossier de nom js contiendra les fichiers source Javascript ; ● Les fichiers php sont placés dans un dossier nommé back ; ● Un script SQL de votre base de données (*.sql) ; ● Un fichier lisezmoi.txt avec vos nom et prénom, groupe et section. 2/3 Le dernier délai de la remise du travail est pour le Jeudi 23 Septembre 2021 à 23h59. Le lien sera disponible à partir du Jeudi 02 Septembre à 00h01. L’archive qui contiendra votre travail doit être téléversée (upload) sur la plateforme E-Learning de l'université à l'adresse suivante : https://teleensm.ummto.dz/mod/assign/view.php?id=46326 (disponible à partir du Jeudi 02 Septembre 2021 à 00h01) Le nombre d’étudiants par groupe doit être entre 3 et 6. Le respect strict des consignes ci-dessus est obligatoire.
27/100 healthActive repository
HTMLNo license
⑂ 2 forks◯ 0 issuesUpdated Feb 21, 2025