Gestion des comptes Administrateur (Connexion avec LINQ et Profil)
continuous-integration/drone/push Build is failing Details

pull/63/head
Rémi LAVERGNE 2 years ago
parent 13194b8fd7
commit d10bfacd5e

@ -19,7 +19,7 @@ namespace GameAtlas.DataContractPersistance
public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); //Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/data";
public (ObservableCollection<Jeu>, List<Utilisateur>) ChargeDonnees()
public (ObservableCollection<Jeu>, List<Admin>, List<Utilisateur>) ChargeDonnees()
{
var serializer = new DataContractSerializer(typeof(DataToPersist));
DataToPersist data = new DataToPersist();
@ -28,10 +28,10 @@ namespace GameAtlas.DataContractPersistance
{
data = serializer.ReadObject(s) as DataToPersist;
}
return (data.jeux, data.utilisateurs);
return (data.jeux, data.admins, data.utilisateurs);
}
public void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Utilisateur> users)
public void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> users)
{
var serializer = new DataContractSerializer(typeof(DataToPersist));
@ -45,6 +45,7 @@ namespace GameAtlas.DataContractPersistance
DataToPersist data = new DataToPersist();
data.jeux = jeux;
data.admins = admins;
data.utilisateurs = users;
var settings = new XmlWriterSettings() { Indent = true };

@ -1,16 +1,17 @@
using GameAtlas.Models;
using System;
using System.Collections.Generic;
using GameAtlas.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GameAtlas.DataContractPersistance
{
public class DataToPersist
{
public ObservableCollection<Jeu> jeux { get; set; } = new ObservableCollection<Jeu>();
public List<Utilisateur> utilisateurs { get; set; } = new List<Utilisateur>();
}
}
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GameAtlas.DataContractPersistance
{
public class DataToPersist
{
public ObservableCollection<Jeu> jeux { get; set; } = new ObservableCollection<Jeu>();
public List<Admin> admins { get; set; } = new List<Admin>();
public List<Utilisateur> utilisateurs { get; set; } = new List<Utilisateur>();
}
}

@ -1,15 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace GameAtlas.Models
{
[DataContract]
public class Admin : Utilisateur
{
public Admin(string mail, string pseudo, string mdp) : base(mail, pseudo, mdp)
{
EstAdmin = true;
}
public void AjouterJeu(Jeu jeu) { }

@ -9,8 +9,8 @@ namespace GameAtlas.Models
{
public interface IPersistanceManager
{
(ObservableCollection<Jeu>,List<Utilisateur>) ChargeDonnees();
(ObservableCollection<Jeu>,List<Admin>,List<Utilisateur>) ChargeDonnees();
void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Utilisateur> utilisateurs);
void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> utilisateurs);
}
}

@ -31,6 +31,7 @@ namespace GameAtlas.Models
public IPersistanceManager Persistance { get; set; }
private Utilisateur connectedUser;
public Utilisateur ConnectedUser
{
get => connectedUser;
@ -40,7 +41,6 @@ namespace GameAtlas.Models
OnPropertyChanged();
}
}
private Utilisateur connectedUser;
public event PropertyChangedEventHandler? PropertyChanged;
@ -50,6 +50,7 @@ namespace GameAtlas.Models
public Manager(IPersistanceManager persistance)
{
Utilisateurs = new List<Utilisateur>();
Admins = new List<Admin>();
ListJeux = new ObservableCollection<Jeu>();
Persistance = persistance;
ConnectedUser = null;
@ -81,11 +82,16 @@ namespace GameAtlas.Models
{
var donnees = Persistance.ChargeDonnees();
foreach (var user in donnees.Item2)
foreach (var user in donnees.Item3)
{
AddUtilisateur(user);
}
foreach (var admin in donnees.Item2)
{
AddAdmin(admin);
}
foreach (var jeu in donnees.Item1)
{
AddJeux(jeu);
@ -95,7 +101,7 @@ namespace GameAtlas.Models
public void SauvegardeDonnees()
{
Persistance.SauvegardeDonnees(ListJeux, Utilisateurs);
Persistance.SauvegardeDonnees(ListJeux, Admins, Utilisateurs);
}
}

@ -10,6 +10,7 @@ using System.Threading.Tasks;
namespace GameAtlas.Models
{
[DataContract]
[KnownType(typeof(Admin))]
public class Utilisateur
{
[DataMember]
@ -21,6 +22,8 @@ namespace GameAtlas.Models
[DataMember]
public string DateCreation { get; private set; }
[DataMember]
public bool EstAdmin { get; set; }
[DataMember]
public ObservableCollection<Jeu> ListePossedes { get; private set; }
[DataMember]
public ObservableCollection<Jeu> ListeFavoris { get; private set; }
@ -30,9 +33,10 @@ namespace GameAtlas.Models
Mail = mail;
Pseudo = pseudo;
Mdp = mdp;
DateCreation = "Compte créer le "+DateTime.Today.ToString("d");
DateCreation = DateTime.Today.ToString("d");
ListePossedes = new ObservableCollection<Jeu>();
ListeFavoris = new ObservableCollection<Jeu>();
EstAdmin = false;
}

@ -10,22 +10,28 @@ namespace GameAtlas.Stub
{
public class Stub : IPersistanceManager
{
public (ObservableCollection<Jeu>,List<Utilisateur>) ChargeDonnees()
public (ObservableCollection<Jeu>,List<Admin>,List<Utilisateur>) ChargeDonnees()
{
List<Utilisateur> ListUsers = new List<Utilisateur>();
List<Admin> ListAdmins = new List<Admin>();
ObservableCollection<Jeu> ListJeu = new ObservableCollection<Jeu>();
Utilisateur userTest = new Utilisateur("test@gmail.com", "test", "Test1234");
Admin admin = new Admin("admin@example.com", "admin", "Admin1234");
ListUsers.Add(userTest);
Jeu TheLastOfUs = new Jeu("The last of Us Part 1","5 Fevrier 2023","Ps5 XOne Pc","dev","ed", 5, 487,"Aventure", "cover_lastofus1.png");
ListAdmins.Add(admin);
Jeu TheLastOfUs = new Jeu("The Last Of Us Part I","5 Fevrier 2023","PS5 XOne PC","dev","ed", 5, 487,"Aventure", "cover_lastofus1.png");
Jeu ForzaHorizon = new Jeu("Forza Horizon 5", "12 Mars 2023", "Ps5", "dev", "ed", 4, 420, "Course", "cover_forzahorizon5.png");
Jeu Test = new Jeu("The Legend of Zelda: Tears of the Kingdom", "8 Janvier 2023", "Switch Pc", "dev", "ed", 5, 250, "Aventure", "cover_zelda.png");
ListJeu.Add(TheLastOfUs);
ListJeu.Add(ForzaHorizon);
ListJeu.Add(Test);
return (ListJeu,ListUsers);
return (ListJeu,ListAdmins,ListUsers);
}
public void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Utilisateur> utilisateurs)
public void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> utilisateurs)
{
throw new NotImplementedException();
}

@ -88,7 +88,7 @@ public partial class PageConnexion : ContentPage
*/
public bool Verification(string username, string password)
{
foreach (Utilisateur user in ConnexionManager.Utilisateurs)
foreach (Utilisateur user in ConnexionManager.Utilisateurs.Concat(ConnexionManager.Admins))
{
if (user.Pseudo == username)
{
@ -101,9 +101,10 @@ public partial class PageConnexion : ContentPage
}
}
}
Debug.WriteLine("La connection a echouée (pseudo ou mot de passe invalide)");
Debug.WriteLine("La connexion a échoué (pseudo ou mot de passe invalide)");
DisplayAlert("Erreur", "Utilisateur ou Mot de Passe invalide.", "Ok");
ConnexionManager.ConnectedUser = null;
return false;
}
}

@ -33,11 +33,18 @@
<VerticalStackLayout Grid.Column="1" VerticalOptions="Center" Spacing="3">
<Label Text="{Binding ConnectedUser.Pseudo}" FontSize="20" FontFamily="AladinRegular" TextColor="{StaticResource Black}"/>
<Label Text="{Binding ConnectedUser.DateCreation}" FontSize="12" FontFamily="RobotoRegular" TextColor="{StaticResource Black}"/>
<Label FontSize="12" FontFamily="RobotoRegular" TextColor="{StaticResource Black}">
<Label.FormattedText>
<FormattedString>
<Span Text="Compte créer le "/>
<Span Text="{Binding ConnectedUser.DateCreation}"/>
</FormattedString>
</Label.FormattedText>
</Label>
</VerticalStackLayout>
<Grid Grid.Row="0" Grid.Column="2" RowDefinitions="50" ColumnDefinitions="50" HorizontalOptions="Start">
<Frame IsVisible="{Binding ConnectedUser.isAdmin}" WidthRequest="50" HeightRequest="50" CornerRadius="25" VerticalOptions="Start" IsClippedToBounds="True" BackgroundColor="{StaticResource Tertiary}">
<Frame IsVisible="{Binding ConnectedUser.EstAdmin}" WidthRequest="50" HeightRequest="50" CornerRadius="25" VerticalOptions="Start" IsClippedToBounds="True" BackgroundColor="{StaticResource Tertiary}">
<Image Source="shieldperson" HeightRequest="40"/>
<Frame.GestureRecognizers>

Loading…
Cancel
Save