Skip to content

Commit 2f42135

Browse files
committed
Merge pull request #280 from RickMohr/filters-respect-permissions
Don't show a filter if user lacks permissions to read its field
2 parents 52ecf9d + e9b6d31 commit 2f42135

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

OpenTreeMap/resources/MainStoryboard_iPhone.storyboard

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@
298298
<action selector="clearFilters:" destination="hZa-Zz-ezt" id="pkm-i2-3of"/>
299299
</connections>
300300
</barButtonItem>
301-
<barButtonItem key="rightBarButtonItem" title="Done" style="done" id="50L-7V-eyE">
301+
<barButtonItem key="rightBarButtonItem" title="Search" style="done" id="50L-7V-eyE">
302302
<connections>
303303
<action selector="updateFilters:" destination="hZa-Zz-ezt" id="IFD-Fh-Bcb"/>
304304
</connections>

OpenTreeMap/src/OTM/OTMEnvironment.m

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,8 @@ - (void)updateEnvironmentWithDictionary:(NSDictionary *)dict {
213213
NSArray *regFilters = [self filtersFromDictArray:missingAndStandardFilters[@"standard"]
214214
usingFields:[dict objectForKey:@"fields"]];
215215

216-
NSArray *missingFilters = [self missingFiltersFromDictArray:missingAndStandardFilters[@"missing"]];
216+
NSArray *missingFilters = [self missingFiltersFromDictArray:missingAndStandardFilters[@"missing"]
217+
usingFields:[dict objectForKey:@"fields"]];
217218

218219
self.filters = [regFilters arrayByAddingObjectsFromArray:missingFilters];
219220

@@ -260,12 +261,16 @@ - (void)updateEnvironmentWithDictionary:(NSDictionary *)dict {
260261
* All missing filters are boolean filters with "existenceFilter"
261262
* set to true.
262263
*/
263-
- (NSArray *)missingFiltersFromDictArray:(NSArray *)filterlist {
264+
- (NSArray *)missingFiltersFromDictArray:(NSArray *)filterlist usingFields:(NSDictionary *)fieldDict {
264265
NSMutableArray *filterArray = [NSMutableArray array];
265266

266267
[filterlist enumerateObjectsUsingBlock:^(NSDictionary *filter, NSUInteger idx, BOOL *stop) {
267268
NSString *fieldKey = filter[@"identifier"];
268269
NSString *fieldName = filter[@"label"];
270+
271+
if ([fieldDict objectForKey:fieldKey] == nil) {
272+
return; // Skip field because user lacks read permission
273+
}
269274

270275
OTMFilter *afilter = [[OTMBoolFilter alloc] initWithName:fieldName
271276
key:fieldKey
@@ -287,6 +292,10 @@ - (NSArray *)filtersFromDictArray:(NSArray *)filterlist usingFields:(NSDictionar
287292
NSString *fieldName = filter[@"label"];
288293
NSString *filterType = filter[@"search_type"];
289294

295+
if ([fDict objectForKey:fieldKey] == nil) {
296+
return; // Skip field because user lacks read permission
297+
}
298+
290299
OTMFilter *afilter = nil;
291300

292301
if ([filterType isEqualToString:@"CHOICE"] || [filterType isEqualToString:@"MULTICHOICE"]) {

0 commit comments

Comments
 (0)