コード例 #1
0
        // 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);
            }
        }
コード例 #2
0
// 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);
            }
        }