summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlyourself.ca>2008-10-21 14:28:22 -0400
committerEvan Prodromou <evan@controlyourself.ca>2008-10-21 14:28:22 -0400
commit3a246c17266d562e0510e5a332009dcfda43c1c7 (patch)
tree6cf8b24dc7d28c498e1c618bd6e514a974863d90
parent44a90a7fa78d8b40485fd36020c333271a0b5734 (diff)
add 'invite-only' mode for registration
darcs-hash:20081021182822-5ed1f-9a8ee3960f82d115d43e35baac646f69bc702533.gz
-rw-r--r--README2
-rw-r--r--actions/register.php24
-rw-r--r--config.php.sample2
-rw-r--r--lib/common.php3
4 files changed, 27 insertions, 4 deletions
diff --git a/README b/README
index 311d56480..150c49ac5 100644
--- a/README
+++ b/README
@@ -688,6 +688,8 @@ closed: If set to 'true', will disallow registration on your site.
This is a cheap way to restrict accounts to only one
individual or group; just register the accounts you want on
the service, *then* set this variable to 'true'.
+inviteonly: If set to 'true', will only allow registration if the user
+ was invited by an existing user.
db
--
diff --git a/actions/register.php b/actions/register.php
index c370e4727..10336d41e 100644
--- a/actions/register.php
+++ b/actions/register.php
@@ -59,6 +59,15 @@ class RegisterAction extends Action {
$code = $this->trimmed('code');
+ if ($code) {
+ $invite = Invitation::staticGet($code);
+ }
+
+ if (common_config('site', 'inviteonly') && !($code && $invite)) {
+ $this->client_error(_('Sorry, site is invite-only'));
+ return;
+ }
+
# Input scrubbing
$nickname = common_canonical_nickname($nickname);
@@ -149,6 +158,17 @@ class RegisterAction extends Action {
function show_form($error=NULL) {
global $config;
+ $code = $this->trimmed('code');
+
+ if ($code) {
+ $invite = Invitation::staticGet($code);
+ }
+
+ if (common_config('site', 'inviteonly') && !($code && $invite)) {
+ $this->client_error(_('Sorry, site is invite-only'));
+ return;
+ }
+
common_show_header(_('Register'), NULL, $error, array($this, 'show_top'));
common_element_start('form', array('method' => 'post',
'id' => 'login',
@@ -156,9 +176,7 @@ class RegisterAction extends Action {
common_hidden('token', common_session_token());
- if ($this->trimmed('code')) {
- $code = ($this->trimmed('code'));
- $invite = Invitation::staticGet($code);
+ if ($code) {
common_hidden('code', $code);
}
diff --git a/config.php.sample b/config.php.sample
index f0394b1ba..d976b523b 100644
--- a/config.php.sample
+++ b/config.php.sample
@@ -26,6 +26,8 @@ $config['site']['path'] = 'laconica';
#If you don't want to let users register (say, for a one-person install)
#Crude but effective -- register everybody, then lock down
#$config['site']['closed'] = true;
+#Only allow registration for people invited by another user
+#$config['site']['inviteonly'] = true;
# If you want logging sent to a file instead of syslog
#$config['site']['logfile'] = '/tmp/laconica.log';
diff --git a/lib/common.php b/lib/common.php
index b91b695d8..af1d4f251 100644
--- a/lib/common.php
+++ b/lib/common.php
@@ -67,7 +67,8 @@ $config =
'broughtby' => NULL,
'timezone' => 'UTC',
'broughtbyurl' => NULL,
- 'closed' => false),
+ 'closed' => false,
+ 'inviteonly' => false),
'syslog' =>
array('appname' => 'laconica', # for syslog
'priority' => 'debug'), # XXX: currently ignored