public bool CanWriteSegment(int segmentId) { if (CanAccessEverything()) { return(true); } var segment = _container.Resolve <IRepositoryAsync <Segment> >().Queryable().FirstOrDefault(x => x.SegmentId == segmentId); if (segment == null) { return(true); } var canWrite = AuthorizationServiceExtensions.CanWriteSegment(this, segment.RtbSegmentId); // note: this is an extension authorization if (!canWrite && segment.AdvertiserId.HasValue) { var advertiserUuid = _container.Resolve <IRepositoryAsync <Advertiser> >().Find(segment.AdvertiserId.Value).AdvertiserUuid; canWrite = CanWriteAdvertiser(advertiserUuid); } if (!canWrite && segment.BuyerAccountId.HasValue) { var buyerAccountUuid = _container.Resolve <IRepositoryAsync <BuyerAccount> >().Find(segment.BuyerAccountId.Value).BuyerAccountUuid; canWrite = CanWriteBuyerAccount(buyerAccountUuid); } return(canWrite); }
public bool CanWriteDoohPanelLocation(int doohPanelLocationId) { if (CanAccessEverything()) { return(true); } var doohPanelLocation = _container.Resolve <IRepositoryAsync <DoohPanelLocation> >().Find(doohPanelLocationId); if (doohPanelLocation == null) { return(true); } return(AuthorizationServiceExtensions.CanWriteDoohPanelLocation(this, doohPanelLocation.PartnerId)); // note: this is an extension authorization }