From ee6c10da5579d174f8c5887f91c3c45a5cbfc02a Mon Sep 17 00:00:00 2001 From: "yannis.doumir_fernandes" Date: Fri, 3 Nov 2023 12:54:34 +0100 Subject: [PATCH] responsablan can modify is password --- app | Bin 53136 -> 43264 bytes donnee/mdp.txt | 2 +- src/app/core_logic/responsable.c | 45 +++++++++++++++++++++++ src/app/core_logic/responsable.h | 6 +++- src/app/interface/interface_resp.c | 56 +++++++++++++++++++++++++++-- 5 files changed, 104 insertions(+), 5 deletions(-) diff --git a/app b/app index 94e4fd661d4e16d72c5d6a9e0b66b4e04f3e26a5..c7174a6d1a09690d09fdb4042d8c44d8a1fe5792 100755 GIT binary patch literal 43264 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 literal 53136 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 diff --git a/donnee/mdp.txt b/donnee/mdp.txt index af51f1e..3d7ac61 100644 --- a/donnee/mdp.txt +++ b/donnee/mdp.txt @@ -1 +1 @@ -qtqnqtq 5 \ No newline at end of file +yescdsds 10 \ No newline at end of file diff --git a/src/app/core_logic/responsable.c b/src/app/core_logic/responsable.c index 46462c8..e2d6cf7 100644 --- a/src/app/core_logic/responsable.c +++ b/src/app/core_logic/responsable.c @@ -9,6 +9,8 @@ #include "responsable.h" #include "../interface/interface_resp.h" +#define MAX_SIZE_MDP 20 + /** * @brief Charge les informations des articles à partir d'un fichier dans des tableaux. * @@ -268,3 +270,46 @@ int decodageMDP(char *mdpEnter) return -2; } } + +void chiffrementCesar(char *mdp, int decalage) { + int i; + int longueur = strlen(mdp); + for (i = 0; i < longueur; ++i) + { + if (mdp[i] >= 'a' && mdp[i] <= 'z') { + mdp[i] = 'a' + (mdp[i] - 'a' + decalage) % 26; + } else if (mdp[i] >= 'A' && mdp[i] <= 'Z') + { + mdp[i] = 'A' + (mdp[i] - 'A' + decalage) % 26; + } + } +} + +int verifModifMDP(char *mdp, char *confirmMDP, int decalage) +{ + if ( strcmp(mdp, confirmMDP) == 0 ) + { + enregistrerMotDePasse(mdp, decalage); + return 0; + } + fprintf(stderr, "\tLes mot de passe ne sont pas identiques !\n"); + return -1; + +} + +int enregistrerMotDePasse(char *mdp, int decalage) +{ + FILE *fe; + fe = fopen("donnee/mdp.txt", "w"); + if (fe == NULL) + { + fprintf(stderr,"Erreur lors de l'ouverture du fichier.\n"); + return -1; + } + + chiffrementCesar(mdp, decalage); + + fprintf(fe,"%s %d", mdp, decalage); + fclose(fe); + return 0; +} \ No newline at end of file diff --git a/src/app/core_logic/responsable.h b/src/app/core_logic/responsable.h index 24cadc4..b3d3471 100644 --- a/src/app/core_logic/responsable.h +++ b/src/app/core_logic/responsable.h @@ -117,4 +117,8 @@ int decodageMDP(char *mdpEnter); * @param texte chaine de caractère comparé avec le mot de passe du fichier. * @param decalage entier qui sert de clé pour déchiffrer le mot de passe. */ -void dechiffrerCesar(char *texte, int decalage); \ No newline at end of file +void dechiffrerCesar(char *texte, int decalage); + +void chiffrementCesar(char *mdp, int decalage); +int verifModifMDP(char *mdp, char *confirmMDP, int decalage); +int enregistrerMotDePasse(char *mdp, int decalage); \ No newline at end of file diff --git a/src/app/interface/interface_resp.c b/src/app/interface/interface_resp.c index 3d20807..ce5e4ff 100644 --- a/src/app/interface/interface_resp.c +++ b/src/app/interface/interface_resp.c @@ -11,7 +11,8 @@ #define MAX_CLIENTS 100 #define MAX_ARTICLES 100 -#define MENU_QUIT 11 +#define MAX_SIZE_MDP 20 +#define MENU_QUIT 12 /** * @brief Affiche le menu principal de l'interface du responsable. @@ -34,7 +35,8 @@ void affiche_resp(void) { printf("||\t8 : Ajouter un client\t\t\t\t\t||\n"); printf("||\t9 : Modifier le statut du client\t\t\t||\n"); printf("||\t10 : Supprimer un client\t\t\t\t||\n"); - printf("||\t11 : Quittez.\t\t\t\t\t\t||\n"); + printf("||\t11 : Modifier le mot de passe\t\t\t\t||\n"); + printf("||\t12 : Quittez.\t\t\t\t\t\t||\n"); printf("+----------------------------------------------------------------+\n"); } @@ -351,6 +353,52 @@ void suppressionClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLo return; } +void affichModifMDP() +{ + int choix, decalage; + char newMDP[MAX_SIZE_MDP], confirmMDP[MAX_SIZE_MDP]; + printf("\t /!/ Vous entrez dans le menu de modification du mot de passe /!/\n"); + printf("\t Êtes-vous sur de vouloir changer le mot de passe ?\n Si oui, entrez 0 et sinon entrez 1\n"); + while (scanf("%d", &choix) !=1 || choix < 0 || choix > 1) + { + printf("/!/ Entrez une valeur valide /!/"); + } + if ( choix == 1 ) + { + printf("\t Vous quittez le menu de modification du mot de passe.\n"); + return; + } + else + { + printf("Veuillez entrer le nouveau mot de passe.\n\n\tMAXIXMUM 20 CARACTERES ET SEULEMENT DES LETTRES\n"); + while (scanf("%s", newMDP) != 1) + { + printf("Veuillez recommencer la saisie : "); + } + printf("Veuillez entrer à nouveau le mot de passe.\n"); + while (scanf("%s", confirmMDP) != 1) + { + printf("Veuillez recommencer la saisie : "); + } + printf("\t Veuillez entrer le nouveau décalage\n"); + while (scanf("%d", &decalage) != 1 || decalage < 0) + { + printf("\t Veuillez entrer un nombre valide : "); + } + int verif = verifModifMDP(newMDP, confirmMDP, decalage); + if ( verif == 0 ) + { + printf("\t Mot de passe modifié !\n"); + return; + } + else + { + printf("\t/!/ Erreur lors du changement de mot de passe. /!/\n"); + return; + } + } +} + /** * @brief Fonction de menu pour le responsable. * @@ -382,7 +430,6 @@ void global_resp() { int tLogArticle = chargementArticles(tRef, tPoids, tVol, tPrix, MAX_ARTICLES); int tLogClient = charger_clients(tNumClient, tCagnotte, tSus, MAX_CLIENTS); - do { menu_resp(&choix); switch (choix) { @@ -417,6 +464,9 @@ void global_resp() { suppressionClient(tNumClient, tCagnotte ,tSus , &tLogClient); break; case 11: + affichModifMDP(); + break; + case 12: sauvegardArticles(tRef, tPoids, tVol, tPrix, tLogArticle); sauvegarde_clients(tNumClient, tCagnotte, tSus, tLogClient); printf("Sauvegarde des articles effectuée.\n");