CurrentUser.cs 1.86 KB
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;
				}
		*/

	}
}