1712e5c6cSSzymon20000// Copyright 2015-present 650 Industries. All rights reserved. 2631604b1STomasz Sapeta 3*51e273e0STomasz Sapeta#if __has_include(<ExpoFileSystem/EXFilePermissionModule.h>) 4712e5c6cSSzymon20000#import "EXScopedFilePermissionModule.h" 5fffbdb31STomasz Sapeta#import <ExpoModulesCore/EXFileSystemInterface.h> 6712e5c6cSSzymon20000 7c9802ebaSStanisław Chmiela@interface EXFilePermissionModule (Protected) 8c9802ebaSStanisław Chmiela 9fffbdb31STomasz Sapeta- (EXFileSystemPermissionFlags)getExternalPathPermissions:(NSString *)path; 10c9802ebaSStanisław Chmiela 11c9802ebaSStanisław Chmiela@end 12c9802ebaSStanisław Chmiela 13c9802ebaSStanisław Chmiela@interface EXScopedFilePermissionModule () 14c9802ebaSStanisław Chmiela 15c9802ebaSStanisław Chmiela@property (nonatomic, assign) BOOL isDetached; 16c9802ebaSStanisław Chmiela 17c9802ebaSStanisław Chmiela@end 18c9802ebaSStanisław Chmiela 19712e5c6cSSzymon20000@implementation EXScopedFilePermissionModule 20712e5c6cSSzymon20000 21c9802ebaSStanisław Chmiela- (instancetype)initWithConstantsBinding:(EXConstantsBinding *)constantsBinding 22c9802ebaSStanisław Chmiela{ 23c9802ebaSStanisław Chmiela if (self = [super init]) { 24c9802ebaSStanisław Chmiela _isDetached = ![constantsBinding.appOwnership isEqualToString:@"expo"]; 25c9802ebaSStanisław Chmiela } 26c9802ebaSStanisław Chmiela return self; 27c9802ebaSStanisław Chmiela} 28c9802ebaSStanisław Chmiela 29fffbdb31STomasz Sapeta- (EXFileSystemPermissionFlags)getExternalPathPermissions:(NSString *)path 30712e5c6cSSzymon20000{ 31712e5c6cSSzymon20000 // may block access to external paths which contain "ExponentExperienceData" 32712e5c6cSSzymon20000 if (![self shouldForbidAccessToExternalDirectories] || (![path containsString:@"ExponentExperienceData"])) { 33712e5c6cSSzymon20000 return [super getExternalPathPermissions:path]; 34712e5c6cSSzymon20000 } 35fffbdb31STomasz Sapeta return EXFileSystemPermissionNone; 36712e5c6cSSzymon20000} 37712e5c6cSSzymon20000 38712e5c6cSSzymon20000- (BOOL)shouldForbidAccessToExternalDirectories { 39c9802ebaSStanisław Chmiela return !_isDetached; 40712e5c6cSSzymon20000} 41712e5c6cSSzymon20000 42712e5c6cSSzymon20000@end 43631604b1STomasz Sapeta#endif 44