//Registriert einen neuen Benutzer public bool Registrieren(Benutzer benutzer) { using (con = new SqlConnection(constring)) { try { cmd = new SqlCommand("SELECT Benutzername FROM BenutzerDB", con); con.Open(); reader = cmd.ExecuteReader(); while (reader.Read()) { if (benutzer.Username == (string)reader["Benutzername"]) { WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Conflict; WebOperationContext.Current.OutgoingResponse.StatusDescription = "Benutzername bereits vergeben"; return false; } } } catch (Exception) { WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest; return false; } } Guid guid = System.Guid.NewGuid(); string hpw = Security.HashSHA1(benutzer.Passwort + guid.ToString()); //Hashwert aus Passworthash und GUID wird erstellt using (con = new SqlConnection(constring)) { try { cmd = new SqlCommand("INSERT INTO BenutzerDB (Benutzername, Passwort, Fach1, Fach2, Fach3, Fach4, TestGestartet, TestBeendet, VokabelGeübt, VokabelRichtig, Guid) VALUES (@benutzername, @passwort, @fach1, @fach2, @fach3, @fach4, @testgestartet, @testbeendet, @vokabelgeübt, @vokabelrichtig, @guid)", con); cmd.Parameters.AddWithValue("@benutzername", benutzer.Username); cmd.Parameters.AddWithValue("@passwort", hpw); cmd.Parameters.AddWithValue("@fach1", DateTime.Now.AddDays(-1).ToString()); cmd.Parameters.AddWithValue("@fach2", DateTime.Now.ToString()); cmd.Parameters.AddWithValue("@fach3", DateTime.Now.ToString()); cmd.Parameters.AddWithValue("@fach4", DateTime.Now.ToString()); cmd.Parameters.AddWithValue("@testgestartet", 0); cmd.Parameters.AddWithValue("@testbeendet", 0); cmd.Parameters.AddWithValue("@vokabelgeübt", 0); cmd.Parameters.AddWithValue("@vokabelrichtig", 0); cmd.Parameters.AddWithValue("@guid", guid); con.Open(); cmd.ExecuteNonQuery(); WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK; return true; } catch (Exception) { WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest; return false; } } }
//Überprüft die Anmeldedaten eines Benutzers und liefert diesen zurück public Benutzer Anmelden(string benutzerid, Benutzer benutzer) { using (con = new SqlConnection(constring)) { try { cmd = new SqlCommand("SELECT * FROM BenutzerDB WHERE ID = @benutzerid", con); cmd.Parameters.AddWithValue("@benutzerid", Convert.ToInt32(benutzerid)); con.Open(); reader = cmd.ExecuteReader(); Benutzer benutzerNeu = new Benutzer(); while (reader.Read()) { if (Security.HashSHA1(benutzer.Passwort + Convert.ToString(reader["Guid"])) == (string)reader["Passwort"]) { benutzerNeu.ID = (int)reader["ID"]; benutzerNeu.Username = (string)reader["Benutzername"]; benutzerNeu.Fach1 = new Fach(1, (string)reader["Fach1"]); benutzerNeu.Fach2 = new Fach(2, (string)reader["Fach2"]); benutzerNeu.Fach3 = new Fach(3, (string)reader["Fach3"]); benutzerNeu.Fach4 = new Fach(4, (string)reader["Fach4"]); benutzerNeu.Statistik = new Teststatistik((int)reader["TestGestartet"], (int)reader["TestBeendet"], (int)reader["VokabelGeübt"], (int)reader["VokabelRichtig"]); WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK; } else { WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest; WebOperationContext.Current.OutgoingResponse.StatusDescription = "Passwort falsch!"; } } return benutzerNeu; } catch (Exception ex) { WebOperationContext.Current.OutgoingResponse.StatusDescription = ex.Message; return new Benutzer(); } } }
//Liefert alle Benutzer public List<Benutzer> GetAllBenutzer() { using (con = new SqlConnection(constring)) { try { cmd = new SqlCommand("SELECT * FROM BenutzerDB", con); con.Open(); reader = cmd.ExecuteReader(); List<Benutzer> BenutzerAlle = new List<Benutzer>(); while (reader.Read()) { Benutzer benutzerNeu = new Benutzer(); benutzerNeu.ID = (int)reader["ID"]; benutzerNeu.Username = (string)reader["Benutzername"]; benutzerNeu.Fach1 = new Fach(1, (string)reader["Fach1"]); benutzerNeu.Fach2 = new Fach(2, (string)reader["Fach2"]); benutzerNeu.Fach3 = new Fach(3, (string)reader["Fach3"]); benutzerNeu.Fach4 = new Fach(4, (string)reader["Fach4"]); benutzerNeu.Statistik = new Teststatistik((int)reader["TestGestartet"], (int)reader["TestBeendet"], (int)reader["VokabelGeübt"], (int)reader["VokabelRichtig"]); BenutzerAlle.Add(benutzerNeu); } WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK; return BenutzerAlle; } catch (Exception e) { WebOperationContext.Current.OutgoingResponse.StatusDescription = e.Message; return new List<Benutzer>(); } } }
//Liefert einen bestimmten Benutzer public Benutzer GetBenutzer(string benutzerid) { using (con = new SqlConnection(constring)) { try { cmd = new SqlCommand("SELECT * FROM BenutzerDB WHERE ID = @benutzerid", con); cmd.Parameters.AddWithValue("@benutzerid", Convert.ToInt32(benutzerid)); con.Open(); reader = cmd.ExecuteReader(); Benutzer benutzerNeu = new Benutzer(); while (reader.Read()) { benutzerNeu.ID = (int)reader["ID"]; benutzerNeu.Username = (string)reader["Benutzername"]; benutzerNeu.Fach1 = new Fach(1, (string)reader["Fach1"]); benutzerNeu.Fach2 = new Fach(2, (string)reader["Fach2"]); benutzerNeu.Fach3 = new Fach(3, (string)reader["Fach3"]); benutzerNeu.Fach4 = new Fach(4, (string)reader["Fach4"]); benutzerNeu.Statistik = new Teststatistik((int)reader["TestGestartet"], (int)reader["TestBeendet"], (int)reader["VokabelGeübt"], (int)reader["VokabelRichtig"]); } WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK; return benutzerNeu; } catch (Exception) { WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest; return new Benutzer(); } } }