public IActionResult ShowKey()
        {
            Randomkey key = new Randomkey();

            key.Id  = -1;
            key.Key = "XXXXXXXXXXX";
            return(View("RandomKeyView", key));
        }
        public IActionResult GetRandomKey()
        {
            Randomkey key     = GenerateRandomkey();
            var       dbCheck = db.Randomkey.Where(r => r.Key == key.Key).ToList();

            if (dbCheck.Count == 0)
            {
                db.Randomkey.Add(key);
                db.SaveChanges();
                return(View("RandomKeyView", key));
            }

            GetRandomKey();
            throw new Exception("Key wird bereits verwendet ");
        }
        //Erstellung eines Registierungsschlüssels nach dem Zufallsprinizp aus vorgegeben Zeichen
        private Randomkey GenerateRandomkey()
        {
            Random        random     = new Random();
            string        characters = "123456789ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
            StringBuilder result     = new StringBuilder(11);

            for (int i = 0; i < 11; i++)
            {
                result.Append(characters[random.Next(characters.Length)]);
            }

            Randomkey key       = new Randomkey();
            string    strresult = result.ToString();

            key.Key = strresult;
            return(key);
        }
Beispiel #4
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = "")
        {
            //TODo: Beide PW gleich --> Check
            //Überprüfen, ob User und Adresse bereits existieren
            User    userCheck    = db.User.Where(u => u.UserName == model.Username).SingleOrDefault();
            Address addressCheck = db.Address.Where(a =>
                                                    a.Country == model.Country && a.City == model.City && a.ZipCode == model.ZipCode &&
                                                    a.Street == model.Street && a.Number == model.Number).SingleOrDefault();

            //Gültigkeit des Registierungskeys Prüfen
            try
            {
                Randomkey key = db.Randomkey.Where(r => r.Key == model.Registerkey).First();
                db.Randomkey.Remove(key);
                db.SaveChanges();
            }
            catch
            {
                ModelState.AddModelError("Registererror",
                                         "Registerkey is not available, maybe this key is not valid anymore");
                return(View("RegisterView", model));
            }

            //Falls Adresse nicht vorhanden, neue Anlegen
            if (addressCheck == null)
            {
                Address newAddress = new Address
                {
                    Country = model.Country,
                    City    = model.City,
                    ZipCode = model.ZipCode,
                    Street  = model.Street,
                    Number  = model.Number
                };
                db.Add(newAddress);
                db.SaveChanges();
            }

            addressCheck = db.Address.Where(a =>
                                            a.Country == model.Country && a.City == model.City && a.ZipCode == model.ZipCode &&
                                            a.Street == model.Street && a.Number == model.Number).SingleOrDefault();

            //Falls User nicht vorhanden, neuen User anlegen
            if (userCheck == null)
            {
                User newUser = new User
                {
                    Firstname  = model.Firstname,
                    Name       = model.Name,
                    UserName   = model.Username,
                    Email      = model.Email,
                    Birthday   = model.Birthday,
                    Birthplace = model.Birthplace,
                    AddressId  = addressCheck.Id
                };
                //User Speichern und Passwort Hashen
                IdentityResult identityResult = await signInManager.UserManager.CreateAsync(newUser, model.Password);

                //Falls Speicherung erfolgreich wird User der Rolle "User" zugeordnet
                if (identityResult.Succeeded)
                {
                    bool register = false;
                    //await signInManager.UserManager.AddToRoleAsync(newUser, "User"); Es wird IsInRoleAsync aufgerufen
                    Role     role     = db.Role.SingleOrDefault(r => r.Name == "User");
                    UserRole userRole = new UserRole
                    {
                        UserId = newUser.Id,
                        RoleId = role.Id
                    };
                    db.Add(userRole);
                    db.SaveChanges();

                    if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
                    {
                        register = true;
                        return(RedirectToAction("Index", "Home"));
                        //return Redirect(returnUrl);
                    }

                    register = false;
                    return(RedirectToAction("Index", "Home", new { register }));
                }
            }


            ModelState.AddModelError("", "Invalid register attempt");
            return(View("RegisterView", model));
        }