From b8256db24d9975f233a2e2eef0c746a7a088d3bd Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 9 Dec 2023 13:32:15 +0100 Subject: [PATCH] =?UTF-8?q?cr=C3=A9ation=20des=20classes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Blazor/Models/Administrator.cs | 28 ++++++++++++++++++++++++++-- Blazor/Models/Answer.cs | 16 ++++++++++++++++ Blazor/Models/Answers.cs | 6 ------ Blazor/Models/Chapter.cs | 14 ++++++++++++++ Blazor/Models/Lobby.cs | 21 +++++++++++++++++++++ Blazor/Models/Player.cs | 25 +++++++++++++++++++++++++ Blazor/Models/Players.cs | 6 ------ Blazor/Models/Question.cs | 25 +++++++++++++++++++++++++ 8 files changed, 127 insertions(+), 14 deletions(-) create mode 100644 Blazor/Models/Answer.cs delete mode 100644 Blazor/Models/Answers.cs create mode 100644 Blazor/Models/Chapter.cs create mode 100644 Blazor/Models/Lobby.cs create mode 100644 Blazor/Models/Player.cs delete mode 100644 Blazor/Models/Players.cs create mode 100644 Blazor/Models/Question.cs diff --git a/Blazor/Models/Administrator.cs b/Blazor/Models/Administrator.cs index 1fbe03e..6de9703 100644 --- a/Blazor/Models/Administrator.cs +++ b/Blazor/Models/Administrator.cs @@ -1,6 +1,30 @@ -namespace Blazor.Models +using Microsoft.AspNetCore.Cryptography.KeyDerivation; +using Microsoft.AspNetCore.Identity; +using System.Collections.Generic; +using System.Security.Cryptography; + +namespace Blazor.Models { - public class Administrator + public class Administrator : PasswordHasher { + public int Id { get; private set; } + public string Username { get; private set; } + public string HashedPassword { get; set; } + + private byte[] salt = RandomNumberGenerator.GetBytes(128 / 8); // for password hash + + Administrator(int id, string username, string password) + { + this.Id = id; + this.Username = username; + // got this hashed password + this.HashedPassword = Convert.ToBase64String(KeyDerivation.Pbkdf2( + password: password!, + salt: salt, + prf: KeyDerivationPrf.HMACSHA256, + iterationCount: 100000, + numBytesRequested: 256 / 8) + ); + } } } diff --git a/Blazor/Models/Answer.cs b/Blazor/Models/Answer.cs new file mode 100644 index 0000000..a1d1443 --- /dev/null +++ b/Blazor/Models/Answer.cs @@ -0,0 +1,16 @@ +namespace Blazor.Models +{ + public class Answer + { + public int Id { get; private set; } + public string Content { get; set; } + public int IdQuestion { get; private set; } + + public Answer(int id, string content, int idQuestion) + { + Id = id; + Content = content; + IdQuestion = idQuestion; + } + } +} diff --git a/Blazor/Models/Answers.cs b/Blazor/Models/Answers.cs deleted file mode 100644 index e3976d8..0000000 --- a/Blazor/Models/Answers.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Blazor.Models -{ - public class Answers - { - } -} diff --git a/Blazor/Models/Chapter.cs b/Blazor/Models/Chapter.cs new file mode 100644 index 0000000..c236960 --- /dev/null +++ b/Blazor/Models/Chapter.cs @@ -0,0 +1,14 @@ +namespace Blazor.Models +{ + public class Chapter + { + public int Id { get; private set; } + public string Name { get; set; } + + public Chapter(int id, string name) + { + Id = id; + Name = name; + } + } +} diff --git a/Blazor/Models/Lobby.cs b/Blazor/Models/Lobby.cs new file mode 100644 index 0000000..7fe7b0e --- /dev/null +++ b/Blazor/Models/Lobby.cs @@ -0,0 +1,21 @@ +namespace Blazor.Models +{ + public class Lobby + { + public int Id { get; private set; } + public string Name { get; private set; } + public string? Password { get; private set; } + public int nbPlayers { get; private set; } + + public Lobby(int id, string name, string? password = null, int nbPlayers = 0) + { + Id = id; + Name = name; + Password = password; + this.nbPlayers = nbPlayers; + } + + public void addPlayers(int nb) { nbPlayers += nb; } + public void removePlayers(int nb) { nbPlayers -= nb; } + } +} diff --git a/Blazor/Models/Player.cs b/Blazor/Models/Player.cs new file mode 100644 index 0000000..4d0929a --- /dev/null +++ b/Blazor/Models/Player.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Cryptography.KeyDerivation; +using System.Security.Cryptography; + +namespace Blazor.Models +{ + public class Player + { + public int Id { get; private set; } + public string Nickname { get; private set; } + public string HashedPassword { get; set; } + private byte[] salt = RandomNumberGenerator.GetBytes(128 / 8); // for password hash + public Player(int id, string nickname, string password) + { + Id = id; + Nickname = nickname; + HashedPassword = Convert.ToBase64String(KeyDerivation.Pbkdf2( + password: password!, + salt: salt, + prf: KeyDerivationPrf.HMACSHA256, + iterationCount: 100000, + numBytesRequested: 256 / 8) + ); + } + } +} diff --git a/Blazor/Models/Players.cs b/Blazor/Models/Players.cs deleted file mode 100644 index 707ce33..0000000 --- a/Blazor/Models/Players.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Blazor.Models -{ - public class Players - { - } -} diff --git a/Blazor/Models/Question.cs b/Blazor/Models/Question.cs new file mode 100644 index 0000000..c279686 --- /dev/null +++ b/Blazor/Models/Question.cs @@ -0,0 +1,25 @@ +namespace Blazor.Models +{ + public class Question + { + public int Id { get; private set; } + public string Content { get; set; } + public int IdChapter { get; private set; } + public int? IdAnswerGood { get; set; } + public int Difficulty { get; set; } + public int NbFails { get; private set; } + + public Question(int id, string content, int idChapter, int difficulty, int nbFails, int? idAnswerGood = null) + { + Id = id; + Content = content; + IdChapter = idChapter; + Difficulty = difficulty; + NbFails = nbFails; + IdAnswerGood = idAnswerGood; + } + + public void addFails(int nb){ NbFails += nb; } + public void removeFails(int nb) { NbFails -= nb; } + } +}