GenericPrincipalExtensions.cs
1.99 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Security.Principal;
using System.Web;
using CWA.CpoOnline.Models;
using Microsoft.AspNet.Identity;
namespace CWA.CpoOnline.Extensions
{
/* public static class GenericPrincipalExtensions
{
public static string GetClaim(this IPrincipal user, string claimType)
{
if (user.Identity.IsAuthenticated)
{
var claimsIdentity = user.Identity as ClaimsIdentity;
if (claimsIdentity != null)
{
var result = claimsIdentity.Claims.FirstOrDefault(c => c.Type.Equals(claimType));
return result?.Value;
}
}
return string.Empty;
}
public static string FullName(this IPrincipal user)
{
return GetClaim(user, "FullName");
}
public static Guid UserId(this IPrincipal user)
{
return Guid.Parse(user.Identity.GetUserId());
}
public static bool IsInRole(this IPrincipal user, string role)
{
return user.IsInRole(role.ToString());
}
public static bool IsInAnyRoles(this IPrincipal user, params string[] roles)
{
return roles.Any(role => user.IsInRole(role.ToString()));
}
}*/
public static class ApplicationUserExtensions
{
public static bool IsInRole(this ApplicationUser user, string role)
{
return user.HasClaimValue(ClaimTypes.Role, CpoRoles.Admin);
}
public static bool CanAccessSector(this ApplicationUser user, string sectorName)
{
return user.HasClaimValue(CpoClaimTypes.Sector, sectorName);
}
public static bool CanAccessSymbol(this ApplicationUser user, string symbolName)
{
return user.HasClaimValue(CpoClaimTypes.Symbol, symbolName);
}
public static bool HasClaimValue(this ApplicationUser user, string claimType, string claimValue)
{
var claim = user.Claims.FirstOrDefault(c =>
c.ClaimType.Equals(claimType, StringComparison.InvariantCultureIgnoreCase) &&
c.ClaimValue.Equals(claimValue, StringComparison.InvariantCultureIgnoreCase));
if (null == claim) return false;
return true;
}
}
}