CurrentUser.cs
1.86 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
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;
using Microsoft.AspNet.Identity.Owin;
using CWA.CpoOnline.Extensions;
namespace CWA.CpoOnline.Helpers
{
public static class CurrentUser
{
private const string SessionUserSettings = "UserSettings";
public static ApplicationUser AppUser
{
get
{
if (null == HttpContext.Current || !HttpContext.Current.Request.IsAuthenticated) return null;
var appUser = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(HttpContext.Current.User.Identity.GetUserId());
return appUser;
}
}
public static string FirstName => AppUser.FirstName;
public static string LastName => AppUser.LastName;
public static string FullName => $"{AppUser.FirstName} {AppUser.LastName}";
public static string Email => AppUser.Email;
public static decimal TimeZoneOffset => AppUser.SessionUtcOffset;
public static UserSetting Settings
{
get
{
var settings = HttpContext.Current.Session[SessionUserSettings] as UserSetting;
if (null == settings)
{
settings = new UserSetting();
HttpContext.Current.Session[SessionUserSettings] = settings;
}
return settings;
}
}
public static bool IsAdmin => AppUser.IsInRole(CpoRoles.Admin);
/*
public static bool IsAdmin => HasClaimValue(ClaimTypes.Role, CpoRoles.Admin);
private static bool HasClaimValue(string claimType, string claimValue)
{
var claim = AppUser.Claims.FirstOrDefault(c =>
c.ClaimType.Equals(claimType, StringComparison.InvariantCultureIgnoreCase) &&
c.ClaimValue.Equals(claimValue, StringComparison.InvariantCultureIgnoreCase));
if (null == claim) return false;
return true;
}
*/
}
}