public ActionResult RegisterClaims(RegisterClaimsModel model, string returnUrl) { if (ModelState.IsValid) { // Attempt to register the user var claim = new IdentityClaim(); MembershipCreateStatus createStatus; Membership.CreateUser(model.Name, CLAIMS_PRIVATE_KEY, model.Email, null, null, true, DeterministicGuid.GetDeterministicGuid(claim.IdentityValue), out createStatus); if (createStatus == MembershipCreateStatus.Success && Membership.ValidateUser(model.Name,CLAIMS_PRIVATE_KEY)) { if (claim.HasIdentity) { var user = Membership.GetUser(model.Name); model.IdentityProvider = claim.IdentityProvider; _userManager.RegisterNewUser(model, user.ProviderUserKey.ToString()); IdentityClaim.ClearSession(); _userManager.SetCurrentUser(_userManager.GetUser(user.ProviderUserKey.ToString())); } FormsAuthentication.SetAuthCookie(model.Name, false /* createPersistentCookie */); if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError("", ErrorCodeToString(createStatus)); } } // If we got this far, something failed, redisplay form return View(model); }
public ActionResult SignIn(FormCollection forms) { //Extract claims var principal = HttpContext.User; var claim = new IdentityClaim(principal.Identity as IClaimsIdentity); //Delete session cookie so the module cannot reset principal var sam = FederatedAuthentication.SessionAuthenticationModule; sam.DeleteSessionTokenCookie(); if (claim.HasIdentity ) { //Ger returnUrl string returnUrl = GetUrlFromContext(forms) ?? Url.Action("Index", "Home", null); var user = Membership.GetUser(DeterministicGuid.GetDeterministicGuid(claim.IdentityValue)); //If the identity exists, sets the new user identity on the Membership if (user != null) { //Find user if the user is allready registered var identity = _userManager.GetUser(user.ProviderUserKey.ToString()); if (identity == null) { //Clears Membership Membership.DeleteUser(user.UserName); ModelState.AddModelError("", "Please there was a problem with your username. Try again"); return RedirectToAction("LogOn", new { ReturnUrl = returnUrl }); } if (Membership.ValidateUser(identity.name, CLAIMS_PRIVATE_KEY)) { FormsAuthentication.SetAuthCookie(identity.name, false); IdentityClaim.ClearSession(); _userManager.SetCurrentUser(identity); return Redirect(returnUrl); } else { ModelState.AddModelError("", "Please there was a problem with your username. Try again"); return RedirectToAction("LogOn", new { ReturnUrl = returnUrl }); } } else { //Save identity values for processing in the association page claim.SaveToSession(); var model = new RegisterClaimsModel() { Email = claim.Email, Name = claim.Name }; return RedirectToAction("RegisterClaims", new {ReturnUrl = returnUrl}); } } return RedirectToAction("LogOn", "Account"); }
public ActionResult RegisterClaims(string returnUrl) { var claim = new IdentityClaim(); if (!claim.HasIdentity) { return RedirectToAction("LogOn", new {ReturnUrl = returnUrl}); } var model = new RegisterClaimsModel() { Email = claim.Email, Name = claim.Name, IdentityProvider = IdentityClaim.ProviderNiceName(claim.IdentityProvider), }; return View(model); }