blob: b8895c0ff17d524bc6b99692f899550558661470 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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();
}
}
}
|