Esempio n. 1
0
 public static bool ValidateRegionSelectionIsAllowed(ContextHolder ctx, InMemoryUser user, bool forceXITCContext = false)
 {
     if (forceXITCContext || ctx.IsInModule(FunctionalRole.XItc))
     {
         return(user.IsWWUser());
     }
     return(ctx.IsInAnyModule(FunctionalRole.Tom, FunctionalRole.Itom, FunctionalRole.Purchase,
                              FunctionalRole.AssetControl));
 }
Esempio n. 2
0
        public HlagGroupedLocation[] GetLocationsOfUser(InMemoryUser user, bool forceXITCContext = false)
        {
            if (!user.Genericproperties.ContainsKey(HapagPersonGroupConstants.HlagLocationProperty))
            {
                //TODO: investigate this issue
                return(new HlagGroupedLocation[] { });
            }
            var locations = user.Genericproperties[HapagPersonGroupConstants.HlagLocationProperty] as UserHlagLocation;

            Log.DebugFormat("locations of user {0}: {1}", user.Login, locations);
            var ctx = _contextLookuper.LookupContext();

            if (locations == null)
            {
                return(new HlagGroupedLocation[] { });
            }
            //            var groupedLocations = locations.GroupedLocations;
            if (ctx.MetadataParameters.ContainsKey("region") && HlagLocationUtil.ValidateRegionSelectionIsAllowed(ctx, user, forceXITCContext))
            {
                return(HandleSelectedRegion(ctx));
            }


            if (forceXITCContext || ctx.IsInModule(FunctionalRole.XItc))
            {
                if (user.IsWWUser())
                {
                    var hlagGroupedLocations = FindAllLocations().ToArray();
                    Log.DebugFormat("found {0} location entries for R0017", hlagGroupedLocations.Length);
                    return(hlagGroupedLocations);
                }
                var supergroups      = locations.GroupedLocationsFromParent;
                var groupedLocations = supergroups.ToArray();
                Log.DebugFormat("found {0} location entries for R0017", groupedLocations.Length);
                return(groupedLocations);
            }
            var result = locations.DirectGroupedLocations.ToArray();

            Log.DebugFormat("found {0} location entries for R0017", result.Length);
            return(result);
        }
Esempio n. 3
0
        private IEnumerable <IHlagLocation> DoFindLocationsOfCurrentUser(InMemoryUser user, ApplicationMetadata application)
        {
            var userLocation = user.Genericproperties[HapagPersonGroupConstants.HlagLocationProperty] as UserHlagLocation;

            if (userLocation == null)
            {
                return(null);
            }
            var context      = _contextLookuper.LookupContext();
            var allLocations = FindAllLocations();

            if (context.IsInModule(FunctionalRole.Tom) || context.IsInModule(FunctionalRole.Itom))
            {
                if (application.Name.Equals("imac") && application.Schema.SchemaId.Equals("decommission"))
                {
                    return(allLocations.Where(a => a.SubCustomer.EqualsAny(ISMConstants.DefaultCustomerName, ISMConstants.HamburgLocation2)));
                }

                return(allLocations);
            }

            if (context.IsInModule(FunctionalRole.XItc))
            {
                if (user.IsWWUser())
                {
                    return(allLocations);
                }
                return(userLocation.GroupedLocationsFromParent);
            }
            if (context.IsInModule(FunctionalRole.AssetControl))
            {
                return(allLocations);
            }
            if (context.IsInModule(FunctionalRole.AssetRamControl))
            {
                return(FindLocationsOfParentLocation(new PersonGroup {
                    Name = HapagPersonGroupConstants.HapagRegionAmerica
                }));
            }
            return(userLocation.DirectGroupedLocations);
        }