diff options
author | Evan Prodromou <evan@controlyourself.ca> | 2008-10-21 14:28:22 -0400 |
---|---|---|
committer | Evan Prodromou <evan@controlyourself.ca> | 2008-10-21 14:28:22 -0400 |
commit | 3a246c17266d562e0510e5a332009dcfda43c1c7 (patch) | |
tree | 6cf8b24dc7d28c498e1c618bd6e514a974863d90 | |
parent | 44a90a7fa78d8b40485fd36020c333271a0b5734 (diff) |
add 'invite-only' mode for registration
darcs-hash:20081021182822-5ed1f-9a8ee3960f82d115d43e35baac646f69bc702533.gz
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | actions/register.php | 24 | ||||
-rw-r--r-- | config.php.sample | 2 | ||||
-rw-r--r-- | lib/common.php | 3 |
4 files changed, 27 insertions, 4 deletions
@@ -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 |