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 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)); var serializer = new DataContractSerializer(typeof(DataToPersist));
DataToPersist data = new DataToPersist(); DataToPersist data = new DataToPersist();
@ -28,10 +28,10 @@ namespace GameAtlas.DataContractPersistance
{ {
data = serializer.ReadObject(s) as DataToPersist; 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)); var serializer = new DataContractSerializer(typeof(DataToPersist));
@ -45,6 +45,7 @@ namespace GameAtlas.DataContractPersistance
DataToPersist data = new DataToPersist(); DataToPersist data = new DataToPersist();
data.jeux = jeux; data.jeux = jeux;
data.admins = admins;
data.utilisateurs = users; data.utilisateurs = users;
var settings = new XmlWriterSettings() { Indent = true }; var settings = new XmlWriterSettings() { Indent = true };

@ -1,16 +1,17 @@
using GameAtlas.Models; using GameAtlas.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace GameAtlas.DataContractPersistance namespace GameAtlas.DataContractPersistance
{ {
public class DataToPersist public class DataToPersist
{ {
public ObservableCollection<Jeu> jeux { get; set; } = new ObservableCollection<Jeu>(); public ObservableCollection<Jeu> jeux { get; set; } = new ObservableCollection<Jeu>();
public List<Utilisateur> utilisateurs { get; set; } = new List<Utilisateur>(); 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;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.Serialization;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace GameAtlas.Models namespace GameAtlas.Models
{ {
[DataContract]
public class Admin : Utilisateur public class Admin : Utilisateur
{ {
public Admin(string mail, string pseudo, string mdp) : base(mail, pseudo, mdp) public Admin(string mail, string pseudo, string mdp) : base(mail, pseudo, mdp)
{ {
EstAdmin = true;
} }
public void AjouterJeu(Jeu jeu) { } public void AjouterJeu(Jeu jeu) { }

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

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

@ -10,22 +10,28 @@ namespace GameAtlas.Stub
{ {
public class Stub : IPersistanceManager 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<Utilisateur> ListUsers = new List<Utilisateur>();
List<Admin> ListAdmins = new List<Admin>();
ObservableCollection<Jeu> ListJeu = new ObservableCollection<Jeu>(); ObservableCollection<Jeu> ListJeu = new ObservableCollection<Jeu>();
Utilisateur userTest = new Utilisateur("test@gmail.com", "test", "Test1234"); Utilisateur userTest = new Utilisateur("test@gmail.com", "test", "Test1234");
Admin admin = new Admin("admin@example.com", "admin", "Admin1234");
ListUsers.Add(userTest); 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 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"); 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(TheLastOfUs);
ListJeu.Add(ForzaHorizon); ListJeu.Add(ForzaHorizon);
ListJeu.Add(Test); 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(); throw new NotImplementedException();
} }

@ -88,7 +88,7 @@ public partial class PageConnexion : ContentPage
*/ */
public bool Verification(string username, string password) 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) 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"); DisplayAlert("Erreur", "Utilisateur ou Mot de Passe invalide.", "Ok");
ConnexionManager.ConnectedUser = null; ConnexionManager.ConnectedUser = null;
return false; return false;
} }
} }

@ -33,11 +33,18 @@
<VerticalStackLayout Grid.Column="1" VerticalOptions="Center" Spacing="3"> <VerticalStackLayout Grid.Column="1" VerticalOptions="Center" Spacing="3">
<Label Text="{Binding ConnectedUser.Pseudo}" FontSize="20" FontFamily="AladinRegular" TextColor="{StaticResource Black}"/> <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> </VerticalStackLayout>
<Grid Grid.Row="0" Grid.Column="2" RowDefinitions="50" ColumnDefinitions="50" HorizontalOptions="Start"> <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"/> <Image Source="shieldperson" HeightRequest="40"/>
<Frame.GestureRecognizers> <Frame.GestureRecognizers>

Loading…
Cancel
Save