Example #1
0
 public static ContextHolder AddContext(ContextHolder context, bool isHttp)
 {
     context.Environment = ApplicationConfiguration.Profile;
     if (isHttp)
     {
         System.Web.HttpContext.Current.Items["context"] = context;
     }
     else
     {
         LogicalThreadContext.SetData("context", context);
     }
     try {
         var user = SecurityFacade.CurrentUser();
         context.UserProfiles = new SortedSet <int?>(user.Profiles.Select(s => s.Id));
         context.Environment  = ApplicationConfiguration.Profile;
         context.OrgId        = user.OrgId;
         context.SiteId       = user.SiteId;
         if (isHttp)
         {
             System.Web.HttpContext.Current.Items["context"] = context;
         }
         else
         {
             LogicalThreadContext.SetData("context", context);
         }
         Log.DebugFormat("adding context {0}", context);
         return(context);
     } catch (Exception e) {
         //not logged users
         return(context);
     }
 }
Example #2
0
        public void FillContext(ApplicationMetadataSchemaKey key)
        {
            var context = (ContextHolder)ReflectionUtil.Clone(new ContextHolder(), LookupContext());

            Log.DebugFormat("filling {0} into context {1}", key, context);
            if (context.ApplicationLookupContext == null)
            {
                Log.DebugFormat("no context found");
                context.ApplicationLookupContext = new ApplicationLookupContext();
            }
            var appContext = (ApplicationLookupContext)ReflectionUtil.Clone(new ApplicationLookupContext(), context.ApplicationLookupContext);

            appContext.Schema = key.SchemaId;
            appContext.Mode   = key.Mode.ToString();
            context.ApplicationLookupContext = appContext;

            var isHttp = System.Web.HttpContext.Current != null;

            if (isHttp)
            {
                System.Web.HttpContext.Current.Items["context"] = context;
            }
            else
            {
                LogicalThreadContext.SetData("context", context);
            }
        }
Example #3
0
        public ContextHolder LookupContext()
        {
            var isHttp  = System.Web.HttpContext.Current != null;
            var context = isHttp ? System.Web.HttpContext.Current.Items["context"] : LogicalThreadContext.GetData <ContextHolder>("context");

            return((ContextHolder)(context ?? AddContext(new ContextHolder(), isHttp)));
        }
Example #4
0
        private static InMemoryUser UserFound(User dbUser, string userTimezoneOffset)
        {
            int?userTimezoneOffsetInt = null;
            int tmp;

            if (Int32.TryParse(userTimezoneOffset, out tmp))
            {
                userTimezoneOffsetInt = tmp;
            }

            var profiles     = UserProfileManager.FindUserProfiles(dbUser);
            var inMemoryUser = new InMemoryUser(dbUser, profiles, userTimezoneOffsetInt);

            if (_users.ContainsKey(inMemoryUser.Login))
            {
                _users.Remove(inMemoryUser.Login);
            }
            try {
                _users.Add(inMemoryUser.Login, inMemoryUser);
            } catch {
                Log.Warn("Duplicate user should not happen here " + inMemoryUser.Login);
            }
            LogicalThreadContext.SetData("user", dbUser.UserName);
            _eventDispatcher.Dispatch(new UserLoginEvent(inMemoryUser));
            if (Log.IsDebugEnabled)
            {
                Log.Debug(String.Format("user:{0} logged in with roles {1}; profiles {2}; locations {3}",
                                        inMemoryUser.Login,
                                        string.Join(",", inMemoryUser.Roles),
                                        string.Join(",", inMemoryUser.Profiles),
                                        string.Join(",", inMemoryUser.PersonGroups)
                                        ));
            }
            return(inMemoryUser);
        }
Example #5
0
        protected void DoExecute()
        {
            LogicalThreadContext.SetData("user", "swjobuser");
            var before = Stopwatch.StartNew();

            try {
                Log.InfoFormat("Starting execution of {0}", Name());
                ExecuteJob();
            } catch (Exception e) {
                Log.Error(String.Format("error executing job {0} ", Name()), e);
            } finally {
                Log.Info(LoggingUtil.BaseDurationMessageFormat(before, "Finished execution of {0}", Name()));
                LogicalThreadContext.SetData("user", null);
            }
        }
Example #6
0
        public static InMemoryUser CurrentUser(Boolean fetchFromDB = true, bool throwAnonymousException = true)
        {
            if (ApplicationConfiguration.IsUnitTest)
            {
                return(InMemoryUser.TestInstance("test"));
            }

            var currLogin = LogicalThreadContext.GetData <string>("user") ?? CurrentPrincipalLogin;

            if (currLogin == "")
            {
                if (!throwAnonymousException)
                {
                    return(new InMemoryUser {
                        Login = "******"
                    });
                }
                throw new UnauthorizedAccessException();
            }

            if (!fetchFromDB || currLogin == null || _users.ContainsKey(currLogin))
            {
                return(_users[currLogin]);
            }
            //cookie authenticated already
            //TODO: remove this in prod?
            var dbUser = new SWDBHibernateDAO().FindSingleByQuery <User>(User.UserByUserName, currLogin);

            if (dbUser == null)
            {
                throw new InvalidOperationException("user should exist at DB");
            }

            var formsIdentity = CurrentPrincipal.Identity as System.Web.Security.FormsIdentity;
            var timezone      = String.Empty;

            if (formsIdentity != null && formsIdentity.Ticket != null && !String.IsNullOrWhiteSpace(formsIdentity.Ticket.UserData))
            {
                var userData = PropertyUtil.ConvertToDictionary(formsIdentity.Ticket.UserData);
                timezone = userData["userTimezoneOffset"];
            }
            UserFound(dbUser, timezone);
            return(_users[currLogin]);
        }