diff --git a/controller/registercontroller.php b/controller/registercontroller.php
index a360bae..7565d5a 100644
--- a/controller/registercontroller.php
+++ b/controller/registercontroller.php
@@ -67,7 +67,6 @@ class RegisterController extends Controller {
public function validateEmail() {
$email = $this->request->getParam('email');
if ( !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
- return new TemplateResponse('', 'error', array(array('error' => $this->l10n->t('Email address you entered is not valid'))), 'error');
return new TemplateResponse('', 'error', array(
'errors' => array(array(
'error' => $this->l10n->t('Email address you entered is not valid'),
@@ -94,8 +93,34 @@ class RegisterController extends Controller {
), 'error');
}
+
// FEATURE: allow only from specific email domain
+ $allowed_domains= $this->config->getAppValue($this->appName, 'allowed_domains','');
+ if ( ($allowed_domains === null) || ($allowed_domains === '') || ( strlen($allowed_domains)===0)){
+}else{
+ $allowed_domains= explode (";",$allowed_domains);
+ $allowed=false;
+ $domains=array();
+ foreach ($allowed_domains as $domain ) {
+ $domains[]=$domain;//=$domain.print_unescaped("
").$domains;
+ $maildomain=explode("@",$email)[1];
+ // valid domain, everythings fine
+ if ($maildomain === $domain) {
+ $allowed=true;
+ break;
+ }
+
+ }
+ // $allowed still false->return error message
+ if ( $allowed === false ) {
+ return new TemplateResponse('registration', 'domains', ['domains' =>
+ $domains
+ ], 'guest');
+ }
+ }//else var_dump($allowed_domains);
+
+
$token = $this->pendingreg->save($email);
//TODO: check for error
$link = $this->urlgenerator->linkToRoute('registration.register.verifyToken', array('token' => $token));
diff --git a/controller/settingscontroller.php b/controller/settingscontroller.php
index 7c60ec5..ec2fca0 100644
--- a/controller/settingscontroller.php
+++ b/controller/settingscontroller.php
@@ -19,6 +19,7 @@ use \OCP\AppFramework\Controller;
use \OCP\IGroupManager;
use \OCP\IL10N;
use \OCP\IConfig;
+use \OCP\IUser;
class SettingsController extends Controller {
@@ -35,13 +36,21 @@ class SettingsController extends Controller {
parent::__construct($appName, $request);
}
+
+
/**
* @AdminRequired
*
* @param string $registered_user_group all newly registered user will be put in this group
+ * @param string $allowed_domains Registrations are only allowed for E-Mailadresses with these domains
* @return DataResponse
*/
- public function admin($registered_user_group) {
+ public function admin($registered_user_group, $allowed_domains) {
+ if ( ( $allowed_domains==='' ) || ( $allowed_domains === NULL ) ){
+ $this->config->deleteAppValue($this->appName, 'allowed_domains');
+ }else{
+ $this->config->setAppValue($this->appName, 'allowed_domains', $allowed_domains);
+ }
$groups = $this->groupmanager->search('');
foreach ( $groups as $group ) {
$group_id_list[] = $group->getGid();
@@ -80,9 +89,11 @@ class SettingsController extends Controller {
}
// TODO selected
$current_value = $this->config->getAppValue($this->appName, 'registered_user_group', 'none');
+ $allowed_domains = $this->config->getAppValue($this->appName, 'allowed_domains', '');
return new TemplateResponse('registration', 'admin', [
'groups' => $group_id_list,
- 'current' => $current_value
+ 'current' => $current_value,
+ 'allowed' => $allowed_domains
], '');
}
}
diff --git a/js/settings.js b/js/settings.js
index 44a6b37..ab61c2a 100644
--- a/js/settings.js
+++ b/js/settings.js
@@ -1,9 +1,9 @@
$(document).ready(function() {
function saveSettings() {
- var post = $('#registered_user_group').serialize();
-
+ var post = $('#registration').serialize();
$.post(OC.generateUrl('/apps/registration/settings'), post);
}
$('#registered_user_group').change(saveSettings);
+ $('#allowed_domains').change(saveSettings);
});
diff --git a/l10n/de.js b/l10n/de.js
index eb423d5..41a85c9 100644
--- a/l10n/de.js
+++ b/l10n/de.js
@@ -16,7 +16,11 @@ OC.L10N.register(
"No such group" : "Keine derartige Gruppe",
"Registration" : "Registrierung",
"Default group that all registered users belong" : "Standardgruppe, zu der alle registrierten Benutzer gehören",
+ "Enter a semicolon-seperated list of allowed domains. Example: owncloud.com;github.com" : "Geben Sie die freigeschalteten, durch Semikolons getrennten, Domains ein. Beispiel: owncloud.com;github.com",
"None" : "Keine",
+ "Allowed domains for registration" : "Für Registrierung freigeschaltete Domains",
+ "Registration is only allowed for following domains:" : "Registrierung ist nur für folgende Domains freigeschaltet:",
+ "Save" : "Speichern",
"To create a new account on ownCloud, just click the following link:
\n{link}" : "Bitte klicke auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:
\n{link}",
"Welcome, you can create your account below." : "Willkommen, Du kannst im unteren Teil Dein Konto anlegen.",
"Username" : "Benutzername",
diff --git a/l10n/de.json b/l10n/de.json
index dae08aa..c1f62b0 100644
--- a/l10n/de.json
+++ b/l10n/de.json
@@ -14,7 +14,11 @@
"No such group" : "Keine derartige Gruppe",
"Registration" : "Registrierung",
"Default group that all registered users belong" : "Standardgruppe, zu der alle registrierten Benutzer gehören",
+ "Enter a semicolon-seperated list of allowed domains. Example: owncloud.com;github.com" : "Geben Sie die freigeschalteten, durch Semikolons getrennten, Domains ein. Beispiel: owncloud.com;github.com",
"None" : "Keine",
+ "Allowed domains for registration" : "Für Registrierung freigeschaltete Domains",
+ "Registration is only allowed for following domains:" : "Registrierung ist nur für folgende Domains freigeschaltet:",
+ "Save" : "Speichern",
"To create a new account on ownCloud, just click the following link:
\n{link}" : "Bitte klicke auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:
\n{link}",
"Welcome, you can create your account below." : "Willkommen, Du kannst im unteren Teil Dein Konto anlegen.",
"Username" : "Benutzername",
@@ -26,4 +30,4 @@
"Please re-enter a valid email address" : "Bitte nochmals eine gültige E-Mail-Adresse angeben",
"You will receive an email with verification link" : "Du wirst eine E-Mail mit einem Bestätigungslink erhalten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
-}
\ No newline at end of file
+}
diff --git a/l10n/de.php b/l10n/de.php
index abf103f..7dfd8c6 100644
--- a/l10n/de.php
+++ b/l10n/de.php
@@ -15,7 +15,11 @@ $TRANSLATIONS = array(
"No such group" => "Keine derartige Gruppe",
"Registration" => "Registrierung",
"Default group that all registered users belong" => "Standardgruppe, zu der alle registrierten Benutzer gehören",
+"Enter a semicolon-seperated list of allowed domains. Example: owncloud.com;github.com" => "Geben Sie die freigeschalteten, durch Semikolons getrennten, Domains ein. Beispiel: owncloud.com;github.com",
"None" => "Keine",
+"Allowed domains for registration" => "Für Registrierung freigeschaltete Domains",
+"Registration is only allowed for following domains:" => "Registrierung ist nur für folgende Domains freigeschaltet:",
+"Save" => "Speichern",
"To create a new account on ownCloud, just click the following link:
\n{link}" => "Bitte klicke auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:
\n{link}",
"Welcome, you can create your account below." => "Willkommen, Du kannst im unteren Teil Dein Konto anlegen.",
"Username" => "Benutzername",
diff --git a/l10n/de_DE.js b/l10n/de_DE.js
index eba0b05..8e09de8 100644
--- a/l10n/de_DE.js
+++ b/l10n/de_DE.js
@@ -16,7 +16,11 @@ OC.L10N.register(
"No such group" : "Keine derartige Gruppe",
"Registration" : "Registrierung",
"Default group that all registered users belong" : "Standardgruppe, zu der alle registrierten Benutzer gehören",
+ "Enter a semicolon-seperated list of allowed domains. Example: owncloud.com;github.com" : "Geben Sie die freigeschalteten, durch Semikolons getrennten, Domains ein. Beispiel: owncloud.com;github.com",
"None" : "Keine",
+ "Allowed domains for registration" : "Für Registrierung freigeschaltete Domains",
+ "Registration is only allowed for following domains:" : "Registrierung ist nur für folgende Domains freigeschaltet:",
+ "Save" : "Speichern",
"To create a new account on ownCloud, just click the following link:
\n{link}" : "Bitte klicken Sie auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:
\n{link}",
"Welcome, you can create your account below." : "Willkommen, Sie können im unteren Teil Ihr Konto anlegen.",
"Username" : "Benutzername",
diff --git a/l10n/de_DE.json b/l10n/de_DE.json
index d6b4373..79747b7 100644
--- a/l10n/de_DE.json
+++ b/l10n/de_DE.json
@@ -14,7 +14,12 @@
"No such group" : "Keine derartige Gruppe",
"Registration" : "Registrierung",
"Default group that all registered users belong" : "Standardgruppe, zu der alle registrierten Benutzer gehören",
+ "Enter a semicolon-seperated list of allowed domains. Example: owncloud.com;github.com" : "Geben Sie die freigeschalteten, durch Semikolons getrennten, Domains ein. Beispiel: owncloud.com;github.com",
"None" : "Keine",
+ "Allowed domains for registration" : "Für Registrierung freigeschaltete Domains",
+ "Registration is only allowed for following domains:" : "Registrierung ist nur für folgende Domains freigeschaltet:",
+ "Save" : "Speichern",
+=======
"To create a new account on ownCloud, just click the following link:
\n{link}" : "Bitte klicken Sie auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:
\n{link}",
"Welcome, you can create your account below." : "Willkommen, Sie können im unteren Teil Ihr Konto anlegen.",
"Username" : "Benutzername",
@@ -26,4 +31,4 @@
"Please re-enter a valid email address" : "Bitte nochmals eine gültige E-Mail-Adresse angeben",
"You will receive an email with verification link" : "Sie werden eine E-Mail mit einem Bestätigungslink erhalten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
-}
\ No newline at end of file
+}
diff --git a/l10n/de_DE.php b/l10n/de_DE.php
index 4b911f8..533759c 100644
--- a/l10n/de_DE.php
+++ b/l10n/de_DE.php
@@ -15,7 +15,11 @@ $TRANSLATIONS = array(
"No such group" => "Keine derartige Gruppe",
"Registration" => "Registrierung",
"Default group that all registered users belong" => "Standardgruppe, zu der alle registrierten Benutzer gehören",
+"Enter a semicolon-seperated list of allowed domains. Example: owncloud.com;github.com" => "Geben Sie die freigeschalteten, durch Semikolons getrennten, Domains ein. Beispiel: owncloud.com;github.com",
"None" => "Keine",
+"Allowed domains for registration" => "Für Registrierung freigeschaltete Domains",
+"Registration is only allowed for following domains:" => "Registrierung ist nur für folgende Domains freigeschaltet:",
+"Save" => "Speichern",
"To create a new account on ownCloud, just click the following link:
\n{link}" => "Bitte klicken Sie auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:
\n{link}",
"Welcome, you can create your account below." => "Willkommen, Sie können im unteren Teil Ihr Konto anlegen.",
"Username" => "Benutzername",
diff --git a/templates/admin.php b/templates/admin.php
index 6664c01..0d3d3b0 100644
--- a/templates/admin.php
+++ b/templates/admin.php
@@ -15,4 +15,13 @@ foreach ( $_['groups'] as $group ) {
?>
+ + > +
++ t('Enter a semicolon-seperated list of allowed domains. Example: owncloud.com;github.com'));?> + +
+ diff --git a/templates/domains.php b/templates/domains.php new file mode 100644 index 0000000..4c73dba --- /dev/null +++ b/templates/domains.php @@ -0,0 +1,15 @@ + +