public async Task <ActionResult> ExternalLoginConfirm(ExternalLoginConfirmModel model)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(Redirect("/"));
            }

            if (ModelState.IsValid)
            {
                // Dohvati info o korisniku od provajdera
                var loginInfo = await AuthManager.GetExternalLoginInfoAsync();

                if (loginInfo == null)
                {
                    return(View("ExternalLoginFailure"));
                }
                var user = await UserManager.FindByEmailAsync(model.Email);

                if (user == null)
                {
                    // Korisnik nema nalog, registruj ga
                    user = new AppUser
                    {
                        UserName       = loginInfo.DefaultUserName,
                        Email          = loginInfo.Email,
                        DateRegistered = DateTime.Now,
                        ProfilePicture = UserManager.SetDefaultProfilePicture()
                    };

                    var createResult = await UserManager.CreateAsync(user);

                    var addToRole = await UserManager.AddToRoleAsync(user.Id, "Korisnik");

                    if (!createResult.Succeeded || !addToRole.Succeeded)
                    {
                        AddErrorsFromResult(createResult, addToRole);
                        return(View(model));
                    }
                }
                // Korisnik vec ima nalog
                var addLoginResult = await UserManager.AddLoginAsync(user.Id, loginInfo.Login);

                if (addLoginResult.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    return(Redirect(string.IsNullOrEmpty(model.ReturnUrl) ? "/" : model.ReturnUrl));
                }
                AddErrorsFromResult(addLoginResult);
            }
            // Nevalidan model
            return(View(model));
        }
Example #2
0
        public ExternalLoginConfirmationViewModel(INavigation navigation, ExternalLoginConfirmModel externalLogin)
        {
            this.navigation   = navigation;
            registrationModel = externalLogin;

            requestProvider = new RequestProvider();

            email = new ValidatableObject <string>()
            {
                Value = externalLogin.Email
            };
            firstName = new ValidatableObject <string>()
            {
                Value = externalLogin.FirstName
            };
            lastName = new ValidatableObject <string>()
            {
                Value = externalLogin.LastName
            };

            AddValidations();
        }
        public ExtrenalLoginConfirmPage(ExternalLoginConfirmModel confirmModel)
        {
            InitializeComponent();

            BindingContext = new ExternalLoginConfirmationViewModel(Navigation, confirmModel);
        }