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)); }
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); }