public async Task<IActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl = null) { if (User.IsSignedIn()) { return RedirectToAction(nameof(ManageController.Index),"Manage"); } if (ModelState.IsValid) { // Get the information about the user from the external login provider var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { return View("ExternalLoginFailure"); } var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await _userManager.CreateAsync(user); if (result.Succeeded) { result = await _userManager.AddLoginAsync(user, info); if (result.Succeeded) { await _signInManager.SignInAsync(user, isPersistent: false); return RedirectToLocal(returnUrl); } } AddErrors(result); } ViewData["ReturnUrl"] = returnUrl; return View(model); }
/// <summary> /// Creates a store manager user who can manage the inventory. /// </summary> /// <param name="serviceProvider"></param> /// <returns></returns> private static async Task CreateAdminUser(IServiceProvider serviceProvider) { var appEnv = serviceProvider.GetService<IApplicationEnvironment>(); var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath) .AddJsonFile("config.json") .AddEnvironmentVariables(); var configuration = builder.Build(); const string adminRole = "Admin"; var userManager = serviceProvider.GetService<UserManager<ApplicationUser>>(); // TODO: Identity SQL does not support roles yet //var roleManager = serviceProvider.GetService<ApplicationRoleManager>(); //if (!await roleManager.RoleExistsAsync(adminRole)) //{ // await roleManager.CreateAsync(new IdentityRole(adminRole)); //} var user = await userManager.FindByNameAsync(configuration[blogAdminUserName]); if (user == null) { var name = configuration[blogAdminUserName]; user = new ApplicationUser { UserName = name , Email = name, FullName = name }; await userManager.CreateAsync(user, configuration[blogAdminPassword]); await userManager.AddToRoleAsync(user, adminRole); await userManager.AddClaimAsync(user, new Claim("ManageBlog", "Allowed")); } #if TESTING var envPerfLab = configuration.Get("PERF_LAB"); if (envPerfLab == "true") { for (int i = 0; i < 100; ++i) { var email = string.Format("User{0:D3}@example.com", i); var normalUser = await userManager.FindByEmailAsync(email); if (normalUser == null) { await userManager.CreateAsync(new ApplicationUser { UserName = email, Email = email }, "Password~!1"); } } } #endif }
//[ValidateAntiForgeryToken] public async Task<IActionResult> Register(RegisterViewModel model) { EnsureDatabaseCreated(_applicationDbContext); if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FullName = model.FullName }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713 // Send an email with this link //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Context.Request.Scheme); //await _emailSender.SendEmailAsync(model.Email, "Confirm your account", // "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>"); await _signInManager.SignInAsync(user, isPersistent: false); return RedirectToAction(nameof(HomeController.Index), "Home"); } AddErrors(result); } // If we got this far, something failed, redisplay form return View(model); }