public User EnsureUserEntity(ClaimsIdentity claimsIdentity)
        {
            string userKey = EducationSecurityIdentity.FindUserKey(claimsIdentity);
            User   user    = UserRepository.Items
                             .Include(u => u.EulaAcceptances)
                             .Include("PrivateHealthDataViewEvents.PhiValuesViewed")
                             .Include("UserRoles.Role")
                             .Include("UserRoles.Schools")
                             .Include("UserRoles.Providers")
                             .SingleOrDefault(u => u.UserKey.Equals(userKey));

            if (user == null)
            {
                var email = claimsIdentity.FindFirst(ClaimTypes.Email) == null ? User.AnonymousEmailValue : claimsIdentity.FindFirst(ClaimTypes.Email).Value;
                if (email != User.AnonymousValue)
                {
                    if (UserRepository.Items.Any(u => u.EmailAddress == email))
                    {
                        email = User.AnonymousEmailValue;
                    }
                }
                user = new User
                {
                    DisplayName  = claimsIdentity.FindFirst(ClaimTypes.Name) == null ? User.AnonymousValue : claimsIdentity.FindFirst(ClaimTypes.Name).Value,
                    FirstName    = User.AnonymousValue,
                    LastName     = User.AnonymousValue,
                    EmailAddress = email,
                    UserKey      = userKey,
                    Active       = true
                };
                UserRepository.Add(user);
                RepositoryContainer.Save();
            }
            return(user);
        }
Exemple #2
0
        private static EducationSecurityPrincipal CreateEducationSecurityPrincipal(AuthorizationContext filterContext, System.Security.Claims.ClaimsPrincipal claimsPrincipal)
        {
            System.Security.Claims.ClaimsIdentity claimsIdentity = (System.Security.Claims.ClaimsIdentity)claimsPrincipal.Identity;
            IAccountManager            manager    = DependencyResolver.Current.GetService <IAccountManager>();
            User                       userEntity = manager.EnsureUserEntity(claimsIdentity);
            EducationSecurityIdentity  identity   = new EducationSecurityIdentity(claimsIdentity, userEntity);
            EducationSecurityPrincipal principal  = new EducationSecurityPrincipal(identity);

            if (_AuditOnMapCollection.Contains(userEntity.UserKey))
            {
                _AuditOnMapCollection.Remove(userEntity.UserKey);
                manager.AuditLogin(principal);
            }
            if (!(filterContext.RequestContext.RouteData.Values["action"].ToString() == "Index" && filterContext.RequestContext.RouteData.Values["controller"].ToString() == "Agreement"))
            {
                manager.ValidateEulaAccepted(principal.Identity.User);
            }
            return(principal);
        }