diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2009-03-26 14:04:40 -0700 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2009-03-26 14:04:40 -0700 |
commit | d7bec791ff0b1fe6517c2b450d6fd1116d0a8ea7 (patch) | |
tree | 019bb8c875e2fa9c5ca07bb17af17891411307cf /samples/OpenIdRelyingPartyMvc/Controllers/UserController.cs | |
parent | 540f088953154bee2356cdf5f65a097cb6d3ebe4 (diff) | |
download | DotNetOpenAuth-d7bec791ff0b1fe6517c2b450d6fd1116d0a8ea7.zip DotNetOpenAuth-d7bec791ff0b1fe6517c2b450d6fd1116d0a8ea7.tar.gz DotNetOpenAuth-d7bec791ff0b1fe6517c2b450d6fd1116d0a8ea7.tar.bz2 |
Renamed OpenID RP sample projects.
Diffstat (limited to 'samples/OpenIdRelyingPartyMvc/Controllers/UserController.cs')
-rw-r--r-- | samples/OpenIdRelyingPartyMvc/Controllers/UserController.cs | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/samples/OpenIdRelyingPartyMvc/Controllers/UserController.cs b/samples/OpenIdRelyingPartyMvc/Controllers/UserController.cs new file mode 100644 index 0000000..dd526d3 --- /dev/null +++ b/samples/OpenIdRelyingPartyMvc/Controllers/UserController.cs @@ -0,0 +1,74 @@ +namespace OpenIdRelyingPartyMvc.Controllers { + using System; + using System.Collections.Generic; + using System.Linq; + using System.Web; + using System.Web.Mvc; + using System.Web.Security; + using DotNetOpenAuth.Messaging; + using DotNetOpenAuth.OpenId; + using DotNetOpenAuth.OpenId.RelyingParty; + + public class UserController : Controller { + public ActionResult Index() { + if (!User.Identity.IsAuthenticated) { + Response.Redirect("/User/Login?ReturnUrl=Index"); + } + + return View("Index"); + } + + public ActionResult LoginPopup() { + return View("LoginPopup"); + } + + public ActionResult Logout() { + FormsAuthentication.SignOut(); + return Redirect("/Home"); + } + + public ActionResult Login() { + // Stage 1: display login form to user + return View("Login"); + } + + public ActionResult Authenticate(string returnUrl) { + var openid = new OpenIdRelyingParty(); + var response = openid.GetResponse(); + if (response == null) { + // Stage 2: user submitting Identifier + Identifier id; + if (Identifier.TryParse(Request.Form["openid_identifier"], out id)) { + try { + return openid.CreateRequest(Request.Form["openid_identifier"]).RedirectingResponse.AsActionResult(); + } catch (ProtocolException ex) { + ViewData["Message"] = ex.Message; + return View("Login"); + } + } else { + ViewData["Message"] = "Invalid identifier"; + return View("Login"); + } + } else { + // Stage 3: OpenID Provider sending assertion response + switch (response.Status) { + case AuthenticationStatus.Authenticated: + Session["FriendlyIdentifier"] = response.FriendlyIdentifierForDisplay; + FormsAuthentication.SetAuthCookie(response.ClaimedIdentifier, false); + if (!string.IsNullOrEmpty(returnUrl)) { + return Redirect(returnUrl); + } else { + return RedirectToAction("Index", "Home"); + } + case AuthenticationStatus.Canceled: + ViewData["Message"] = "Canceled at provider"; + return View("Login"); + case AuthenticationStatus.Failed: + ViewData["Message"] = response.Exception.Message; + return View("Login"); + } + } + return new EmptyResult(); + } + } +} |