diff configuration.js @ 13:447db2e8c622

Better access mode handling.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Wed, 08 Sep 2010 12:04:14 +0200
parents 44889cfb2f8c
children 06abc804e2ab
line wrap: on
line diff
--- a/configuration.js
+++ b/configuration.js
@@ -26,12 +26,9 @@ config.version = '0.1';
 config.os = 'GNU/Linux';
 config.allowCreateNode = [/@example\.com$/]; // value is an array of RegExp JIDs. If only super-owner should be able to create nodes, use [].
 
+config.access = 'open'; // values include open, whitelist (by members) and authorize (owners of the node receive notification). presence and roster aren’t implemented yet.
+
 config.activated = [
-	//'access-authorize',
-	//'access-open',
-	//'access-presence', // Impossible à utiliser dans un component
-	//'access-roster', // Impossible à utiliser dans un component
-	'access-whitelist',
 	'auto-create',
 	//'auto-subscribe', // Impossible à utiliser dans un component
 	//'collections', //TODO
@@ -216,13 +213,33 @@ config.enabled = function(feature) {
 	return false;
 };
 
-if (config.enabled('access-whitelist')) {
+config.enable = function(feature) {
+	config.activated.push(feature);
+}
+
+config.disable = function(feature) {
+	if (typeof feature == 'string')
+		config.activated.splice(config.activated.indexOf(feature), 1);
+	else if (typeof feature == 'function') {
+		for (var i in config.activated)
+			if (feature(config.activated[i]))
+				config.disable(config.activated[i]);
+	}
+}
+
+if (config.access == 'whitelist') {
+	config.disable(/access-.+/);
+	config.enable('access-whitelist');
 	config.service_configuration.node_config['pubsub#access_model'].value = 'whitelist';
 	config.service_configuration['publish-options']['pubsub#access_model'].value = 'whitelist';
-} else if (config.enabled('access-authorize')) {
+} else if (config.access == 'authorize')) {
+	config.disable(/access-.+/);
+	config.enable('access-authorize');
 	config.service_configuration.node_config['pubsub#access_model'].value = 'authorize';
 	config.service_configuration['publish-options']['pubsub#access_model'].value = 'authorize';
-} else if (config.enabled('access-open')) {
+} else if (config.access == 'open')) {
+	config.disable(/access-.+/);
+	config.enable('access-open');
 	config.service_configuration.node_config['pubsub#access_model'].value = 'open';
 	config.service_configuration['publish-options']['pubsub#access_model'].value = 'open';
 }