summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.WebPages/WebPagesOAuthDataProvider.cs
diff options
context:
space:
mode:
authorMicrosoft <aspnet@microsoft.com>2011-12-08 15:50:14 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2012-03-01 19:35:54 -0800
commit67e1a42ffe2ed7ac2bf99c703f17e4406cc35921 (patch)
treeb117701274fea4bb5cfb1342c7ba20605fbaf13d /src/DotNetOpenAuth.WebPages/WebPagesOAuthDataProvider.cs
parent8f4165ee515728aca3faaa26e8354a40612e85e4 (diff)
downloadDotNetOpenAuth-67e1a42ffe2ed7ac2bf99c703f17e4406cc35921.zip
DotNetOpenAuth-67e1a42ffe2ed7ac2bf99c703f17e4406cc35921.tar.gz
DotNetOpenAuth-67e1a42ffe2ed7ac2bf99c703f17e4406cc35921.tar.bz2
Add DotNetOpenAuth.Web and DotNetOpenAut.WebPages projects. Add commands to build nuget packages for DNOA.
Diffstat (limited to 'src/DotNetOpenAuth.WebPages/WebPagesOAuthDataProvider.cs')
-rw-r--r--src/DotNetOpenAuth.WebPages/WebPagesOAuthDataProvider.cs65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/DotNetOpenAuth.WebPages/WebPagesOAuthDataProvider.cs b/src/DotNetOpenAuth.WebPages/WebPagesOAuthDataProvider.cs
new file mode 100644
index 0000000..b8895c0
--- /dev/null
+++ b/src/DotNetOpenAuth.WebPages/WebPagesOAuthDataProvider.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web.Security;
+using DotNetOpenAuth.Web;
+using WebMatrix.WebData;
+
+namespace DotNetOpenAuth.WebPages
+{
+ internal class WebPagesOAuthDataProvider : IOAuthDataProvider
+ {
+ public WebPagesOAuthDataProvider()
+ {
+ }
+
+ private static ExtendedMembershipProvider VerifyProvider()
+ {
+ var provider = Membership.Provider as ExtendedMembershipProvider;
+ if (provider == null)
+ {
+ throw new InvalidOperationException();
+ }
+ return provider;
+ }
+
+ public string GetUserNameFromOAuth(string oAuthProvider, string oAuthId)
+ {
+ ExtendedMembershipProvider provider = VerifyProvider();
+
+ int userId = provider.GetUserIdFromOAuth(oAuthProvider, oAuthId);
+ if (userId == -1) {
+ return null;
+ }
+
+ return provider.GetUserNameFromId(userId);
+ }
+
+ public void CreateOrUpdateOAuthAccount(string oAuthProvider, string oAuthId, string username)
+ {
+ ExtendedMembershipProvider provider = VerifyProvider();
+ provider.CreateOrUpdateOAuthAccount(oAuthProvider, oAuthId, username);
+ }
+
+ public bool DeleteOAuthAccount(string oAuthProvider, string oAuthId)
+ {
+ ExtendedMembershipProvider provider = VerifyProvider();
+
+ string username = GetUserNameFromOAuth(oAuthProvider, oAuthId);
+ if (String.IsNullOrEmpty(username))
+ {
+ // account doesn't exist
+ return false;
+ }
+
+ provider.DeleteOAuthAccount(oAuthProvider, oAuthId);
+ return true;
+ }
+
+ public ICollection<OAuthAccount> GetOAuthAccountsFromUserName(string userName)
+ {
+ ExtendedMembershipProvider provider = VerifyProvider();
+ return provider.GetAccountsForUser(userName).Select(p => new OAuthAccount(p.Provider, p.ProviderUserId)).ToList();
+ }
+ }
+} \ No newline at end of file