Example #1
0
        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));
        }
Example #3
0
        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));
        }