aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/Controllers/userController.php24
-rw-r--r--app/Models/ConfigurationSetter.php3
-rw-r--r--app/views/user/manage.phtml19
-rw-r--r--data/config.default.php4
4 files changed, 50 insertions, 0 deletions
diff --git a/app/Controllers/userController.php b/app/Controllers/userController.php
index ed01b83c5..1c7745753 100644
--- a/app/Controllers/userController.php
+++ b/app/Controllers/userController.php
@@ -211,4 +211,28 @@ class FreshRSS_user_Controller extends Minz_ActionController {
Minz_Request::forward(array('c' => 'user', 'a' => 'manage'), true);
}
+
+ /**
+ * This action updates the max number of registrations.
+ *
+ * Request parameter is:
+ * - max-registrations (int >= 0)
+ */
+ public function setRegistrationAction() {
+ if (Minz_Request::isPost() && FreshRSS_Auth::hasAccess('admin')) {
+ $limits = FreshRSS_Context::$system_conf->limits;
+ $limits['max_registrations'] = Minz_Request::param('max-registrations', 1);
+ FreshRSS_Context::$system_conf->limits = $limits;
+ FreshRSS_Context::$system_conf->save();
+
+ invalidateHttpCache();
+
+ Minz_Session::_param('notification', array(
+ 'type' => 'good',
+ 'content' => _t('feedback.user.set_registration')
+ ));
+ }
+
+ Minz_Request::forward(array('c' => 'user', 'a' => 'manage'), true);
+ }
}
diff --git a/app/Models/ConfigurationSetter.php b/app/Models/ConfigurationSetter.php
index 4bd29ecb0..236bf5b0b 100644
--- a/app/Models/ConfigurationSetter.php
+++ b/app/Models/ConfigurationSetter.php
@@ -352,6 +352,9 @@ class FreshRSS_ConfigurationSetter {
'min' => 0,
'max' => $max_small_int,
),
+ 'max_registrations' => array(
+ 'min' => 0,
+ ),
);
foreach ($values as $key => $value) {
diff --git a/app/views/user/manage.phtml b/app/views/user/manage.phtml
index fe1b6618b..a7cbf0795 100644
--- a/app/views/user/manage.phtml
+++ b/app/views/user/manage.phtml
@@ -3,6 +3,25 @@
<div class="post">
<a href="<?php echo _url('index', 'index'); ?>"><?php echo _t('gen.action.back_to_rss_feeds'); ?></a>
+ <form method="post" action="<?php echo _url('user', 'setRegistration'); ?>">
+ <legend><?php echo _t('admin.user.registration.allow'); ?></legend>
+
+ <div class="form-group">
+ <label class="group-name" for="max-registrations"><?php echo _t('admin.user.registration.number'); ?></label>
+ <div class="group-controls">
+ <input type="number" id="max-registrations" name="max-registrations" value="<?php echo FreshRSS_Context::$system_conf->limits['max_registrations']; ?>" min="0" data-leave-validation="<?php echo FreshRSS_Context::$system_conf->limits['max_registrations']; ?>"/>
+ <?php echo _i('help'); ?> <?php echo _t('admin.user.registration.help'); ?>
+ </div>
+ </div>
+
+ <div class="form-group form-actions">
+ <div class="group-controls">
+ <button type="submit" class="btn btn-important"><?php echo _t('gen.action.submit'); ?></button>
+ <button type="reset" class="btn"><?php echo _t('gen.action.cancel'); ?></button>
+ </div>
+ </div>
+ </form>
+
<form method="post" action="<?php echo _url('user', 'create'); ?>">
<legend><?php echo _t('admin.user.create'); ?></legend>
diff --git a/data/config.default.php b/data/config.default.php
index 6013b13b8..5db933ff8 100644
--- a/data/config.default.php
+++ b/data/config.default.php
@@ -77,6 +77,10 @@ return array(
# Max number of categories for a user.
'max_categories' => 16384,
+ # Max number of accounts that anonymous users can create
+ # 0 for an unlimited number of accounts
+ # 1 is to not allow user registrations (1 is corresponding to the admin account)
+ 'max_registrations' => 1,
),
# Options used by cURL when making HTTP requests, e.g. when the SimplePie library retrieves feeds.