summaryrefslogtreecommitdiffstats
path: root/samples/OpenIdRelyingPartyMvc/Controllers/UserController.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-03-26 14:04:40 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2009-03-26 14:04:40 -0700
commitd7bec791ff0b1fe6517c2b450d6fd1116d0a8ea7 (patch)
tree019bb8c875e2fa9c5ca07bb17af17891411307cf /samples/OpenIdRelyingPartyMvc/Controllers/UserController.cs
parent540f088953154bee2356cdf5f65a097cb6d3ebe4 (diff)
downloadDotNetOpenAuth-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.cs74
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();
+ }
+ }
+}