using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.Owin; namespace WebFormApp.Account { public partial class ManageLogins : System.Web.UI.Page { protected string SuccessMessage { get; private set; } protected bool CanRemoveExternalLogins { get; private set; } private bool HasPassword(ApplicationUserManager manager) { return manager.HasPassword(User.Identity.GetUserId()); } protected void Page_Load(object sender, EventArgs e) { var manager = Context.GetOwinContext().GetUserManager(); CanRemoveExternalLogins = manager.GetLogins(User.Identity.GetUserId()).Count() > 1; SuccessMessage = String.Empty; successMessage.Visible = !String.IsNullOrEmpty(SuccessMessage); } public IEnumerable GetLogins() { var manager = Context.GetOwinContext().GetUserManager(); var accounts = manager.GetLogins(User.Identity.GetUserId()); CanRemoveExternalLogins = accounts.Count() > 1 || HasPassword(manager); return accounts; } public void RemoveLogin(string loginProvider, string providerKey) { var manager = Context.GetOwinContext().GetUserManager(); var signInManager = Context.GetOwinContext().Get(); var result = manager.RemoveLogin(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey)); string msg = String.Empty; if (result.Succeeded) { var user = manager.FindById(User.Identity.GetUserId()); signInManager.SignIn(user, isPersistent: false, rememberBrowser: false); msg = "?m=RemoveLoginSuccess"; } Response.Redirect("~/Account/ManageLogins" + msg); } } }