---
# System prepended metadata

title: Projet TechnoWeb Licence 3

---

# Projet TechnoWeb Licence 3
> Mathis DEVIGNE
> [time=Jeu, 30 mars, 2023 10:16]
> Vous pouvez voir ce fichier plus proprement en HTML à l'adresse : https://hackmd.io/@mdevigne/S1fpRGGxh


## Sommaire
[TOC]

## Schéma de la base de données

![](https://i.imgur.com/A7Rdiw1.png)

Le role des clients est définis par un varchar de la forme d'un tableau (ex : ```["ROLE_SUPER_ADMIN"]```).

## Organisation du code

### Organisation personnelle
Mon organisation sur le projet à été de d'abord créer une base avec toute l'architecture des twig (la base et le squelette du site), un début de menu, la page d'accueuil, les produits, leurs controlleurs et leurs vues.

Puis avec security j'ai ajouter les clients, la connexion, les pages admin, super-admin only pour gérer les clients, créer des produits etc...

J'ai ensuite créer la table panier, l'ai relié au clients et produits, puis ses controlleurs et vues.

J'ai commencé le rapport, et j'ai relu en profondeur le sujet, noté tous les détails restant, bugfixe et tester manuellement toutes mes routes.


### Controlleurs

#### BienvenueControlleur
Ce controlleur a juste une action afficher la page d'accueil. Cette action est relié à un twig ayant son propre css rajouté.

#### MenuControlleur
Ce controlleur a une action appelé dans vente.html.twig, qui renvoie la vue de menu.html.twig avec en paramètre un tableau pour les options du menu.

#### ProduitControlleur
Il possède une action pour lister tous les produits et une pour en ajouter, accessible seulement au administrateur.

#### SecurityControlleur
Controlleur généré par Security permettant la connexion et la déconnexion, avec une redirection ajoutée lors du login. 

#### ClientControlleur
Ce controlleur sert à la gestion des clients, c'est à dire se créer son compte, modifier son profil, gérer les utilisateurs pours les administrateurs et créer des admins pour les super-admins.


#### PanierControlleur
Ce controlleur permet d'afficher, vider ou commander son panier. Il contient aussi les actions permettant d'ajouter un produit ou de le supprimer de sont panier.

## Comment créer un service dans Symfony
Un service pour Symfony est une classe. Dans le projet, j'ai créer le service PasswordService vérifiant si le mots de passe est assez sécurisé.

![](https://i.imgur.com/kWinJO2.png)

Cette classe est définie dans le namespace App\Service et a une fonction public pour la vérification. Je l'ai créé dans le dossier src/Service.

Pour utiliser le service, il suffit de mettre un paramètre de sa classe dans une méthode et Symfony le définira automatiquement.

![](https://i.imgur.com/O7gByiq.png)

Et pour utiliser ses méthodes : 

![](https://i.imgur.com/kDrB5eT.png)


## Points particuliers sur ce que vous avez fait sur le framework

Je n'ai noté de points particuliers lors du déroulement du projet. 