public async Task <AdminUserDetailsVM> Create(RegisterAdminUser10 user) { try { var admin = await _userManager.FindByIdAsync(user.AdminId); if (admin == null) { throw new Exception("Could not find the active user."); } var adminResult = await _userManager.VerifyUserTokenAsync(admin, "Default", "authentication-backend", user.AdminToken); if (!adminResult) { throw new Exception("Could not verify the active user."); } if (_userManager.FindByNameAsync(user.UserName).Result != null) { throw new Exception("This username is already in use."); } if (user.Password != user.ComparePassword) { throw new Exception("The passwords does not match."); } var appUser = new AppUser10 { UserName = user.UserName, FirstName = user.FirstName, LastName = user.LastName, Age = user.Age, Email = user.Email, SecurityStamp = user.SecurityStamp, IsAdmin = user.IsAdmin }; var result = await _userManager.CreateAsync(appUser, user.Password); if (result.Succeeded) { var roles = await _roleManager.Roles.ToListAsync(); List <string> roleNames = new List <string>(); roles.ForEach(x => roleNames.Add(x.Name)); var newUser = await _userManager.FindByNameAsync(user.UserName); _ = user.IsAdmin == true ? await _userManager.AddToRolesAsync(newUser, roleNames) : await _userManager.AddToRoleAsync(newUser, "NormalUser"); AdminUserDetailsVM userVM = new AdminUserDetailsVM { AdminId = admin.Id, FrontEndToken = VerificationToken(), AdminToken = await UserToken(admin), User = new DetailsVM { UserId = newUser.Id, UserName = newUser.UserName, FirstName = newUser.FirstName, LastName = newUser.LastName, Age = newUser.Age, Email = newUser.Email, Roles = new List <string>(roleNames), IsAdmin = newUser.IsAdmin } }; return(userVM); } else { throw new Exception("Something went wrong. Please check all inputs and then try again."); } } catch (Exception ex) { AdminUserDetailsVM userVM = new AdminUserDetailsVM { ErrorMessage = ex.Message }; return(userVM); } }
/// <summary> /// Used for general token-generation for verification on the back-end. /// </summary> private async Task <string> UserToken(AppUser10 user) { return(await _userManager.GenerateUserTokenAsync(user, "Default", "authentication-backend")); }
internal static void Initializer(AllAssignmentsDbContext context, UserManager <AppUser10> userManager, RoleManager <IdentityRole> roleManager) { context.Database.EnsureCreated(); #region Roles if (!roleManager.RoleExistsAsync("Administrator").Result) { var role = new IdentityRole("Administrator"); roleManager.CreateAsync(role).Wait(); } if (!roleManager.RoleExistsAsync("NormalUser").Result) { var role = new IdentityRole("NormalUser"); roleManager.CreateAsync(role).Wait(); } #endregion #region Users if (userManager.FindByNameAsync("Administrator").Result == null) { var user = new AppUser10() { UserName = "******", FirstName = "Admin", LastName = "Pontifex", Age = 30, Email = "*****@*****.**", PhoneNumber = "123456789", IsAdmin = true }; //user.UserToken = userManager.GenerateUserTokenAsync(user, TokenOptions.DefaultAuthenticatorProvider, "Authentication").Result; var result = userManager.CreateAsync(user, "Password!23").Result; //userManager.SetAuthenticationTokenAsync(user, TokenOptions.DefaultAuthenticatorProvider, "Authentication", user.UserToken).Wait(); if (result.Succeeded) { userManager.AddToRoleAsync(user, "Administrator").Wait(); userManager.AddToRoleAsync(user, "NormalUser").Wait(); } } if (userManager.FindByNameAsync("NormalUser").Result == null) { AppUser10 user = new AppUser10() { UserName = "******", FirstName = "NormalUser", LastName = "NormalUser", Email = "*****@*****.**", Age = 18, PhoneNumber = "987654321", IsAdmin = false }; //user.UserToken = userManager.GenerateUserTokenAsync(user, TokenOptions.DefaultAuthenticatorProvider, "Authentication").Result; var result = userManager.CreateAsync(user, "Password!23").Result; //userManager.SetAuthenticationTokenAsync(user, TokenOptions.DefaultAuthenticatorProvider, "Authentication", user.UserToken).Wait(); if (result.Succeeded) { userManager.AddToRoleAsync(user, "NormalUser").Wait(); } } #endregion #region Assignment10 if (!context.Countries.Any()) { var countries = new Country[] { new Country() { Name = "Sweden", Population = "10 301 210" }, new Country() { Name = "Denmark", Population = "5 512 563" }, new Country() { Name = "Norway", Population = "5 123 643" } }; context.Countries.AddRange(countries); context.SaveChanges(); if (!context.Cities.Any()) { var cities = new City[] { new City() { Name = "Swedish City 1", Population = "1 123 675", Country = countries[0] }, new City() { Name = "Swedish City 2", Population = "654 363", Country = countries[0] }, new City() { Name = "Swedish City 3", Population = "364 921", Country = countries[0] }, new City() { Name = "Danish City 1", Population = "715 741", Country = countries[1] }, new City() { Name = "Danish City 2", Population = "235 631", Country = countries[1] }, new City() { Name = "Danish City 3", Population = "134 673", Country = countries[1] }, new City() { Name = "Norwegian City 1", Population = "543 421", Country = countries[2] }, new City() { Name = "Norwegian City 2", Population = "361 752", Country = countries[2] }, new City() { Name = "Norwegian City 3", Population = "134 673", Country = countries[2] }, }; context.Cities.AddRange(cities); context.SaveChanges(); if (!context.People.Any()) { var people = new Person[] { new Person() { FirstName = "Swedish Person", LastName = "1", Age = 20, Gender = "Male", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[0] }, new Person() { FirstName = "Swedish Person", LastName = "2", Age = 21, Gender = "Male", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[0] }, new Person() { FirstName = "Swedish Person", LastName = "3", Age = 25, Gender = "Female", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[1] }, new Person() { FirstName = "Swedish Person", LastName = "4", Age = 28, Gender = "Male", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[1] }, new Person() { FirstName = "Swedish Person", LastName = "5", Age = 31, Gender = "Male", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[2] }, new Person() { FirstName = "Swedish Person", LastName = "6", Age = 75, Gender = "Female", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[2] }, new Person() { FirstName = "Danish Person", LastName = "1", Age = 51, Gender = "Female", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[3] }, new Person() { FirstName = "Danish Person", LastName = "2", Age = 69, Gender = "Male", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[3] }, new Person() { FirstName = "Danish Person", LastName = "3", Age = 12, Gender = "Female", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[4] }, new Person() { FirstName = "Danish Person", LastName = "4", Age = 75, Gender = "Male", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[4] }, new Person() { FirstName = "Danish Person", LastName = "5", Age = 43, Gender = "Female", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[5] }, new Person() { FirstName = "Danish Person", LastName = "6", Age = 34, Gender = "Male", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[5] }, new Person() { FirstName = "Norwegian Person", LastName = "1", Age = 51, Gender = "Male", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[6] }, new Person() { FirstName = "Norwegian Person", LastName = "2", Age = 69, Gender = "Male", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[6] }, new Person() { FirstName = "Norwegian Person", LastName = "3", Age = 12, Gender = "Female", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[7] }, new Person() { FirstName = "Norwegian Person", LastName = "4", Age = 75, Gender = "Female", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[7] }, new Person() { FirstName = "Norwegian Person", LastName = "5", Age = 43, Gender = "Female", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[8] }, new Person() { FirstName = "Norwegian Person", LastName = "6", Age = 34, Gender = "Male", Email = "*****@*****.**", PhoneNumber = "123456789", City = cities[8] }, }; context.People.AddRange(people); context.SaveChanges(); } } } #endregion }