summaryrefslogtreecommitdiffstats
path: root/projecttemplates/MvcRelyingParty/Controllers
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2010-01-02 14:01:09 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2010-01-02 14:01:09 -0800
commit4c37ffc3bc506c9eed07cb6c8148ff5f8ffb01a4 (patch)
tree886bbfac7fb8df2f0dd0424f46d5a1ba9b094c41 /projecttemplates/MvcRelyingParty/Controllers
parent99c4550d70dc2b8402a7968c8066eb4c8468dc2b (diff)
downloadDotNetOpenAuth-4c37ffc3bc506c9eed07cb6c8148ff5f8ffb01a4.zip
DotNetOpenAuth-4c37ffc3bc506c9eed07cb6c8148ff5f8ffb01a4.tar.gz
DotNetOpenAuth-4c37ffc3bc506c9eed07cb6c8148ff5f8ffb01a4.tar.bz2
Added capability to add and see multiple authentication tokens per user account.
Diffstat (limited to 'projecttemplates/MvcRelyingParty/Controllers')
-rw-r--r--projecttemplates/MvcRelyingParty/Controllers/AccountController.cs41
1 files changed, 40 insertions, 1 deletions
diff --git a/projecttemplates/MvcRelyingParty/Controllers/AccountController.cs b/projecttemplates/MvcRelyingParty/Controllers/AccountController.cs
index 6d875b4..0fa8a9a 100644
--- a/projecttemplates/MvcRelyingParty/Controllers/AccountController.cs
+++ b/projecttemplates/MvcRelyingParty/Controllers/AccountController.cs
@@ -98,7 +98,7 @@
ModelState.AddModelError("OpenID", ex.Message);
}
} else {
- ModelState.AddModelError("OpenID", "This doesn't look like a valid OpenID.");
+ ModelState.AddModelError("openid_identifier", "This doesn't look like a valid OpenID.");
}
return View();
@@ -243,15 +243,54 @@
return PartialView("AuthorizedApps", GetAccountInfoModel());
}
+ [Authorize, AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
+ public ActionResult AddAuthenticationTokenReturnTo(string openid_identifier) {
+ var response = this.RelyingParty.GetResponse();
+ if (response != null) {
+ switch (response.Status) {
+ case AuthenticationStatus.Authenticated:
+ Database.LoggedInUser.AuthenticationTokens.Add(new AuthenticationToken {
+ ClaimedIdentifier = response.ClaimedIdentifier,
+ FriendlyIdentifier = response.FriendlyIdentifierForDisplay,
+ });
+ Database.DataContext.SaveChanges();
+ break;
+ default:
+ break;
+ }
+ }
+
+ return RedirectToAction("Edit");
+ }
+
+ [Authorize, AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]
+ public ActionResult AddAuthenticationToken(string openid_identifier) {
+ Identifier userSuppliedIdentifier;
+ if (Identifier.TryParse(openid_identifier, out userSuppliedIdentifier)) {
+ try {
+ var request = this.RelyingParty.CreateRequest(userSuppliedIdentifier, Realm.AutoDetect, Url.ActionFull("AddAuthenticationTokenReturnTo"));
+ return request.RedirectingResponse.AsActionResult();
+ } catch (ProtocolException ex) {
+ ModelState.AddModelError("openid_identifier", ex);
+ }
+ } else {
+ ModelState.AddModelError("openid_identifier", "This doesn't look like a valid OpenID.");
+ }
+
+ return View("Edit", GetAccountInfoModel());
+ }
+
private static AccountInfoModel GetAccountInfoModel() {
var authorizedApps = from token in Database.DataContext.IssuedTokens.OfType<IssuedAccessToken>()
where token.User.UserId == Database.LoggedInUser.UserId
select new AccountInfoModel.AuthorizedApp { AppName = token.Consumer.Name, Token = token.Token };
+ Database.LoggedInUser.AuthenticationTokens.Load();
var model = new AccountInfoModel {
FirstName = Database.LoggedInUser.FirstName,
LastName = Database.LoggedInUser.LastName,
EmailAddress = Database.LoggedInUser.EmailAddress,
AuthorizedApps = authorizedApps.ToList(),
+ AuthenticationTokens = Database.LoggedInUser.AuthenticationTokens.ToList(),
};
return model;
}