Vous travaillez pour une entreprise qui souhaite proposer un système de Storage as a service (STaaS), permettant de mettre à disposition de ses clients un stockage de fichiers à distance. Vous êtes chargé d'élaborer une application web permettant aux clients de consulter et de gérer l'utilisation des disques qu'ils louent, et aux administrateurs de l'entreprise de visualiser les disques.
| Projet initial à utiliser |
|
|---|---|
| Outils | |
| Principales fonctionnalités |
|
| Livraison |
|
Les clients peuvent disposer d'espaces de stockage (nommés disques) permettant de stocker leurs données. Chaque disque est loué à un certain tarif par le client ; le tarif comprend :
Le client a la possibilité de changer de tarif à tout moment pour chaque disque, de façon à diminuer ou augmenter son quota, en fonction de ses besoins. L'historique des tarifs associés à un disque est conservé.
Le tarif courant appliqué à un disque est celui correspondant à la date la plus récente.
Chaque location de disque peut être associée à des services (backup, loadBalancer…).
L'historique d'occupation des disques est obtenu de manière automatisée par un script PHP lancé de manière quotidienne par une tâche CRON.
//TODO 1.1
A l'adresse MyDisques/index, on souhaite afficher les disques de l'utilisateur actuellement connecté.
L'utilisateur connecté est obtenu par l'appel de la méthode Auth::getUser().
| Elément | Indications |
|---|---|
| Contrôleur | MyDisques |
| Action | index |
| Utilisateur connecté | L'utilisateur connecté est obtenu par l'appel de la méthode Auth::getUser(). |
| Occupation, Quota | le quota est obtenu sur le tarif actuel du disque, la classe ModelUtils permet de connaître l'occupation en cours du disque |
| Composants visuels Bootstrap | on pourra utiliser les composants bootstrap Progressbar, GlyphButton, Listgroup |
| Accès à la config du cloud | Les disques clients sont localisés dans le dossier /files de l'application, et les disques y sont localisés sous le nom : $cloud→prefix-[disque.nom]. Cette configuration est définie dans le fichier de config.php dans la variable cloud, accessible depuis les contrôleurs par $GLOBALS[“config”]→cloud |
| Tailles en octets | Vous pourrez utiliser la méthode sizeConverter de ModelUtils |
Le style des progressbars doit donner une indication sur le taux d'occupation en % :
| Style | Valeurs |
|---|---|
| info | de 0 à 10% |
| success | de 10 à 50% |
| warning | de 50 à 80% |
| danger | plus de 80% |
//TODO 1.2
A l'adresse Scan/show/:idDisque, afficher l'interface suivante :
| Elément | Indications |
|---|---|
| Contrôleur | Scan |
| Action | show |
| Paramètre | idDisque |
| Utilisateur connecté | L'utilisateur connecté est obtenu par l'appel de la méthode Auth::getUser($controller) où $controller est le contrôleur actif. |
| Occupation, Quota | le quota est obtenu sur le tarif actuel du disque, la classe ModelUtils permet de connaître l'occupation en cours du disque |
| Composants visuels Bootstrap | on pourra utiliser les composants bootstrap Label, GlyphButton, Listgroup |
L'indicateur d'occupation (Label) doit donner une indication sur le taux d'occupation en % :
| Texte | Style | Valeurs |
|---|---|---|
| Peu occupé | info | de 0 à 10% |
| RAS | success | de 10 à 50% |
| Forte occupation | warning | de 50 à 80% |
| Proche saturation | danger | plus de 80% |
//TODO 1.3
A partir de l'adresse Disques/frm
Afficher le formulaire de création d'un disque.
Soumettre le formulaire à l'adresse Disques/update pour créer le disque puis rediriger vers l'adresse Scan/show/:idDisque
Penser à le créer physiquement.
//TODO 1.4
A partir de l'adresse Scan/show/:idDisque
Implémenter la modification du nom d'un Disque (avec renommage éventuel du dossier associé + vérification du nom)
//TODO 1.5
Implémenter la modification du tarif par le client (avec vérification de non dépassement du quota)
//TODO 2.1
| Elément | Indications |
|---|---|
| Contrôleur | Admin |
| Action | index |
| Indication “nouveau” | Affiche le nombre d'utilisateurs ou de disques créés dans la journée. |
| Badge du Bouton ouvrir | indique le nombre d'instances dans les tables |
//TODO 2.3
| Elément | Indications |
|---|---|
| Contrôleur | Admin |
| Action | disques |
| paramètre | idUtilisateur(Facultatif : si précisé affiche les disques de l'utilisateur correspondant) |
//TODO 3.1
| URL | Accès | Résultat/message |
|---|---|---|
| Admin/* | Accessible uniquement pour un Administrateur connecté | Afficher un message d'erreur “Accès à une ressource non autorisée” |
| Disques/index | Accessible uniquement pour un utilisateur connecté | Afficher message sur l'absence de connexion et proposer la connexion |
| Scan/index/:idDisque | Accessible uniquement pour un disque appartenant à l'utilisateur connecté | Afficher un message d'erreur “Accès à une ressource non autorisée” |
Remarque : L'administrateur hérite des droits de l'utilisateur.
//TODO 3.2
Le fil d'ariane (Breadcrumbs bootstrap) doit indiquer à tout moment la localisation de l'utilisateur à partir de sa page d'accueil :
Exemple :