forked from cory/tildefriends
		
	Expose shared_database(), which provides access to data that is specific to the app owner and app and can be written for any visitor.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3860 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		
							
								
								
									
										14
									
								
								core/app.js
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								core/app.js
									
									
									
									
									
								
							| @@ -68,17 +68,17 @@ function socket(request, response, client) { | ||||
| 				if (match = /^\/([&%][^\.]{44}(?:\.\w+)?)(\/?.*)/.exec(message.path)) { | ||||
| 					blobId = match[1]; | ||||
| 				} else if (match = /^\/\~([^\/]+)\/([^\/]+)\/$/.exec(message.path)) { | ||||
| 					var user = match[1]; | ||||
| 					var path = match[2]; | ||||
| 					blobId = await new Database(user).get('path:' + path); | ||||
| 					packageOwner = match[1]; | ||||
| 					packageName = match[2]; | ||||
| 					blobId = await new Database(packageOwner).get('path:' + packageName); | ||||
| 					if (!blobId) { | ||||
| 						response.send(JSON.stringify({action: "error", error: message.path + ' not found'}), 0x1); | ||||
| 						return; | ||||
| 					} | ||||
| 					if (user != 'core') { | ||||
| 						var coreId = await new Database('core').get('path:' + path); | ||||
| 					if (packageOwner != 'core') { | ||||
| 						var coreId = await new Database('core').get('path:' + packageName); | ||||
| 						parentApp = { | ||||
| 							path: '/~core/' + path + '/', | ||||
| 							path: '/~core/' + packageName + '/', | ||||
| 							id: coreId, | ||||
| 						}; | ||||
| 					} | ||||
| @@ -92,6 +92,8 @@ function socket(request, response, client) { | ||||
|  | ||||
| 				options.api = message.api || []; | ||||
| 				options.credentials = credentials; | ||||
| 				options.packageOwner = packageOwner; | ||||
| 				options.packageName = packageName; | ||||
| 				var sessionId = makeSessionId(); | ||||
| 				if (blobId) { | ||||
| 					process = await getSessionProcessBlob(blobId, sessionId, options); | ||||
|   | ||||
| @@ -221,6 +221,12 @@ async function getProcessBlob(blobId, key, options) { | ||||
| 					return Object.fromEntries(Object.keys(db).map(x => [x, db[x].bind(db)])); | ||||
| 				}; | ||||
| 			} | ||||
| 			if (options.packageOwner && options.packageName) { | ||||
| 				imports.shared_database = function(key) { | ||||
| 					var db = new Database(':shared:' + options.packageOwner + ':' + options.packageName + ':' + key); | ||||
| 					return Object.fromEntries(Object.keys(db).map(x => [x, db[x].bind(db)])); | ||||
| 				} | ||||
| 			} | ||||
| 			process.task.setImports(imports); | ||||
| 			process.task.activate(); | ||||
| 			let source = await getBlobOrContent(blobId); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user