public async Task <IActionResult> ExternalRegister(ExternalRegisterViewModel vm) { var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { return(RedirectToAction("login")); } var user = new IdentityUser(vm.UserName); var result = await _userManager.CreateAsync(user); if (!result.Succeeded) { return(View(vm)); } var loginResult = await _userManager.AddLoginAsync(user, info); if (!loginResult.Succeeded) { return(View(vm)); } await _signInManager.SignInAsync(user, false); return(Redirect(vm.ReturnUrl)); }
public async Task <IActionResult> ExternalRegister(ExternalRegisterViewModel model) { var info = await this.signInManager.GetExternalLoginInfoAsync(); if (info == null) { return(RedirectToAction("Login")); } var user = new CodeItUpUser { UserName = model.UserName }; var result = await this.userManager.CreateAsync(user); if (!result.Succeeded) { return(View(model)); } result = await this.userManager.AddLoginAsync(user, info); if (!result.Succeeded) { return(View(model)); } await this.signInManager.SignInAsync(user, false); return(Redirect(model.ReturnUrl)); }
public async Task <IActionResult> ExternalRegister(ExternalRegisterViewModel vm) { var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { return(RedirectToAction("Login")); // should supply some error message to login page. } var user = new IdentityUser(vm.Username); var result = await _userManager.CreateAsync(user); if (!result.Succeeded) { return(View(vm)); } // TODO: check if user already exists or something else went wrong. // Fuse external and interal users together. result = await _userManager.AddLoginAsync(user, info); if (!result.Succeeded) { return(View(vm)); } await _signInManager.SignInAsync(user, false); return(Redirect(vm.ReturnUrl)); }
public async Task <IActionResult> ExternalRegister(ExternalRegisterViewModel vm) { var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { return(RedirectToAction("Login")); } if (vm.Username == null || vm.Username.Length == 0) { vm.InvalidUsername = true; vm.InvalidUsernameMessage = "Please enter a username."; return(View(vm)); } var u = await _userManager.FindByNameAsync(vm.Username); if (u != null) { vm.InvalidUsername = true; vm.InvalidUsernameMessage = "Username already taken."; return(View(vm)); } if (vm.FullName == null || vm.FullName.Length == 0) { vm.InvalidFullName = true; vm.InvalidFullNameMessage = "Please enter your full name."; return(View(vm)); } var user = new ApplicationUser { UserName = vm.Username, Email = vm.Email, FullName = vm.FullName, ExternalLogin = true }; var signUpResult = await _userManager.CreateAsync(user); if (signUpResult.Succeeded) { await _signInManager.SignInAsync(user, false); return(Redirect(vm.ReturnUrl)); } vm.InvalidUsername = true; vm.InvalidFullName = true; vm.InvalidUsernameMessage = "Error signing up."; return(View(vm)); }