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); }
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)); }