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 @@ + +