ajout de la modification de compte
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
4bc4b40226
commit
df98379df7
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
|
x:Class="MangaMap.Views.loginModifyPage"
|
||||||
|
Title="loginModifyPage">
|
||||||
|
<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
|
||||||
|
|
||||||
|
<Label Text="Modifier son compte MapManga" FontSize="Large" Margin="0,0,0,20" TextColor="#ffffff"/>
|
||||||
|
|
||||||
|
<Entry x:Name="nameEntry" Placeholder="Nom" Margin="0,0,0,10" Style="{StaticResource Champs}"/>
|
||||||
|
|
||||||
|
<Entry x:Name="firstNameEntry" Placeholder="Prénom" Margin="0,0,0,10" Style="{StaticResource Champs}"/>
|
||||||
|
|
||||||
|
<Entry x:Name="ageEntry" Placeholder="Âge" Margin="0,0,0,10" Style="{StaticResource Champs}"/>
|
||||||
|
|
||||||
|
<Entry x:Name="emailEntry" Placeholder="Email" Margin="0,0,0,10" Style="{StaticResource Champs}"/>
|
||||||
|
|
||||||
|
<Entry x:Name="usernameEntry" Placeholder="Nom d'utilisateur" Margin="0,0,0,10" Style="{StaticResource Champs}"/>
|
||||||
|
|
||||||
|
<Entry x:Name="passwordEntry" Placeholder="Mot de passe" Margin="0,0,0,10" Style="{StaticResource ChampsMdp}"/>
|
||||||
|
|
||||||
|
<Entry x:Name="confirmPasswordEntry" Placeholder="Confirmer le mot de passe" Margin="0,0,0,20" Style="{StaticResource ChampsMdp}"/>
|
||||||
|
|
||||||
|
<Button Text="Modifier" Clicked="OnModifiedClicked" Style="{StaticResource Bouton}"/>
|
||||||
|
|
||||||
|
</StackLayout>
|
||||||
|
</ContentPage>
|
@ -0,0 +1,128 @@
|
|||||||
|
using Models;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace MangaMap.Views;
|
||||||
|
|
||||||
|
public partial class loginModifyPage : ContentPage
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Référence au gestionnaire de l'application.
|
||||||
|
/// </summary>
|
||||||
|
public Manager my_manager => (App.Current as App).MyManager;
|
||||||
|
public Utilisateur utilisateurModify;
|
||||||
|
|
||||||
|
public loginModifyPage(Utilisateur u)
|
||||||
|
{
|
||||||
|
utilisateurModify = u;
|
||||||
|
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gestionnaire d'événement lorsqu'un utilisateur clique sur le bouton "Inscription".
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender">L'objet qui a déclenché l'événement.</param>
|
||||||
|
/// <param name="e">Arguments de l'événement.</param>
|
||||||
|
async void OnModifiedClicked(object sender, System.EventArgs e)
|
||||||
|
{
|
||||||
|
// Récupérer les valeurs des entrées
|
||||||
|
string nom = nameEntry.Text;
|
||||||
|
string prenom = firstNameEntry.Text;
|
||||||
|
int age = Convert.ToInt32(ageEntry.Text);
|
||||||
|
string email = emailEntry.Text;
|
||||||
|
string pseudo = usernameEntry.Text;
|
||||||
|
string password = passwordEntry.Text;
|
||||||
|
string confirmPassword = confirmPasswordEntry.Text;
|
||||||
|
|
||||||
|
foreach (Utilisateur u in my_manager.Utilisateurs)
|
||||||
|
{
|
||||||
|
if (u.Email == email || u.Pseudo == pseudo)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "L'utilisateur existe déjà.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérifier si les mots de passe correspondent
|
||||||
|
if (password != confirmPassword)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Les mots de passe ne correspondent pas", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nom != null)
|
||||||
|
utilisateurModify.nom = nom;
|
||||||
|
|
||||||
|
if (prenom != null)
|
||||||
|
utilisateurModify.prenom = prenom;
|
||||||
|
|
||||||
|
if (age > 0)
|
||||||
|
utilisateurModify.age = age;
|
||||||
|
|
||||||
|
if (email != null)
|
||||||
|
{
|
||||||
|
// Vérifier que l'e-mail a la bonne forme
|
||||||
|
if (!Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$"))
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "L'e-mail n'est pas valide.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
utilisateurModify.Email = email;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pseudo != null)
|
||||||
|
utilisateurModify.Pseudo = pseudo;
|
||||||
|
|
||||||
|
if (password != null)
|
||||||
|
{
|
||||||
|
if (IsPasswordStrong(password) == false)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Le mot de passe n'est pas assez fort", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
utilisateurModify.MotDePasse = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
my_manager.sauvegarder();
|
||||||
|
await Shell.Current.GoToAsync("//page/homePage");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Vérifie si un mot de passe est suffisamment fort.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="password">Le mot de passe à vérifier.</param>
|
||||||
|
/// <returns>True si le mot de passe est suffisamment fort, sinon False.</returns>
|
||||||
|
bool IsPasswordStrong(string password)
|
||||||
|
{
|
||||||
|
// Vérifier si le mot de passe est assez long
|
||||||
|
if (password.Length < 8)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérifier si le mot de passe contient au moins une majuscule, une minuscule et un chiffre
|
||||||
|
bool hasUppercase = false;
|
||||||
|
bool hasLowercase = false;
|
||||||
|
bool hasDigit = false;
|
||||||
|
|
||||||
|
foreach (char c in password)
|
||||||
|
{
|
||||||
|
if (char.IsUpper(c))
|
||||||
|
{
|
||||||
|
hasUppercase = true;
|
||||||
|
}
|
||||||
|
else if (char.IsLower(c))
|
||||||
|
{
|
||||||
|
hasLowercase = true;
|
||||||
|
}
|
||||||
|
else if (char.IsDigit(c))
|
||||||
|
{
|
||||||
|
hasDigit = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return hasUppercase && hasLowercase && hasDigit;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue