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)); }
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); }
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); }