// Metod för att logga in public bool UserLogin(string Email, string Password) { // Boolsk variabel för att kolla om användaren är verifierad bool ValidUser = false; // ValidUser får värdet av checkUser-metoden och här skickar vi med E-mail och lösenord ValidUser = CheckUser(Email, Password); var LoggUser = new Users // Dettta är loggning av objektet NewUser. { Email = Email, Password = Password, }; var jsonPerson = JsonConvert.SerializeObject(LoggUser); Log.Information(jsonPerson); if (ValidUser == true) { return(true); } else { return(false); } }
// Metod för att skapa ny användare, tar ett användarobjekt som inparameter och returnerar ett nytt objekt med användarens uppgifter public ReturnUser CreateUser(NewUser NewUser) { // Kolla i databasen om E-mail och användarnamn redan finns, om inte, gå vidare och skapa användaren Users EmailCheck = (from x in db.Users where x.Email.ToUpper() == NewUser.Email.ToUpper() select x).FirstOrDefault(); Users UsernameCheck = (from x in db.Users where x.Username.ToUpper() == NewUser.Username.ToUpper() select x).FirstOrDefault(); var LoggUser = new Users // Dettta är loggning av objektet NewUser. { Email = NewUser.Email, Username = NewUser.Username, Firstname = NewUser.Firstname, Surname = NewUser.Surname, Password = NewUser.Password, }; var jsonPerson = JsonConvert.SerializeObject(LoggUser); Log.Information(jsonPerson); // Om inget E-mail eller användarnamn kan hittas if (EmailCheck == null & UsernameCheck == null) { // Hashing av lösenord med tillhörande salt byte[] salt; new RNGCryptoServiceProvider().GetBytes(salt = new byte[16]); var pass = new Rfc2898DeriveBytes(NewUser.Password, salt, 1000); byte[] passwordHash = pass.GetBytes(20); byte[] total = new byte[36]; Array.Copy(salt, 0, total, 0, 16); Array.Copy(passwordHash, 0, total, 16, 20); string savedPassword = Convert.ToBase64String(total); /* * Här skapas ett nytt användarobjekt som används av resterande servicar. * Eftersom endast vår service skall hantera lösenord behöver vill vi inte skicka med lösenord till andra, varför detta objekt skapas. */ ReturnUser returUser = new ReturnUser(); // Det nya objektet tilldelas värdena från användarens inmatade uppgifter returUser.Email = NewUser.Email; returUser.Username = NewUser.Username; returUser.Firstname = NewUser.Firstname; returUser.Surname = NewUser.Surname; // Nytt objekt som sparas i databasen, innehållande samtliga användaruppgifter Users CompleteUser = new Users(); CompleteUser.Email = NewUser.Email; CompleteUser.Firstname = NewUser.Firstname; CompleteUser.Surname = NewUser.Surname; CompleteUser.Username = NewUser.Username; // Lösenordet får värdet av det tidigare hashade lösenordet, eftersom det är detta som skall sparas i databasen CompleteUser.Password = savedPassword; // Status-Id blir automatiskt 1, som innebär aktiv CompleteUser.StatusID = 1; // Role-Id 3 innebär vanlig användare CompleteUser.RoleID = 3; // Det nya användarobjektet läggs till i databasen db.Users.Add(CompleteUser); db.SaveChanges(); // Säkerställ att det användar-id vi har överensstämmer med andra servicars Id, vilket minimerar risken för att olika användare visas upp returUser.ID = CompleteUser.ID; return(returUser); } // Om E-mail och användarnamn redan finns i databasen else { return(null); } }