Merge remote-tracking branch 'johannesst/domain-limit' into domain-limit-main

This commit is contained in:
Pellaeon Lin 2015-08-28 18:08:26 +08:00
commit e9cfc556d0
11 changed files with 92 additions and 7 deletions

View File

@ -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("<br>").$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));

View File

@ -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
], '');
}
}

View File

@ -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);
});

View File

@ -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:<br/><br/>\n<a href=\"{link}\">{link}</a>" : "Bitte klicke auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:<br/><br/>\n<a href=\"{link}\">{link}</a>",
"Welcome, you can create your account below." : "Willkommen, Du kannst im unteren Teil Dein Konto anlegen.",
"Username" : "Benutzername",

View File

@ -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:<br/><br/>\n<a href=\"{link}\">{link}</a>" : "Bitte klicke auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:<br/><br/>\n<a href=\"{link}\">{link}</a>",
"Welcome, you can create your account below." : "Willkommen, Du kannst im unteren Teil Dein Konto anlegen.",
"Username" : "Benutzername",

View File

@ -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:<br/><br/>\n<a href=\"{link}\">{link}</a>" => "Bitte klicke auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:<br/><br/>\n<a href=\"{link}\">{link}</a>",
"Welcome, you can create your account below." => "Willkommen, Du kannst im unteren Teil Dein Konto anlegen.",
"Username" => "Benutzername",

View File

@ -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:<br/><br/>\n<a href=\"{link}\">{link}</a>" : "Bitte klicken Sie auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:<br/><br/>\n<a href=\"{link}\">{link}</a>",
"Welcome, you can create your account below." : "Willkommen, Sie können im unteren Teil Ihr Konto anlegen.",
"Username" : "Benutzername",

View File

@ -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:<br/><br/>\n<a href=\"{link}\">{link}</a>" : "Bitte klicken Sie auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:<br/><br/>\n<a href=\"{link}\">{link}</a>",
"Welcome, you can create your account below." : "Willkommen, Sie können im unteren Teil Ihr Konto anlegen.",
"Username" : "Benutzername",

View File

@ -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:<br/><br/>\n<a href=\"{link}\">{link}</a>" => "Bitte klicken Sie auf den folgenden Link, um ein neues ownCloud-Konto zu erstellen:<br/><br/>\n<a href=\"{link}\">{link}</a>",
"Welcome, you can create your account below." => "Willkommen, Sie können im unteren Teil Ihr Konto anlegen.",
"Username" => "Benutzername",

View File

@ -15,4 +15,13 @@ foreach ( $_['groups'] as $group ) {
?>
</select>
</p>
<p>
<label for="allowed_domains"><?php p($l->t('Allowed domains for registration')); ?></label>
<input type="text" id="allowed_domains" name="allowed_domains" value=<?php p($_['allowed']);?>>
</p>
<p>
<em><?php p($l->t('Enter a semicolon-seperated list of allowed domains. Example: owncloud.com;github.com'));?>
</em>
</p>
</form>

15
templates/domains.php Normal file
View File

@ -0,0 +1,15 @@
<?php
\OCP\Util::addStyle('registration', 'style');
?>
<ul class="error-wide">
<li class='error'><?php p($l->t('Registration is only allowed for following domains:')); ?>
<?php
foreach ($_['domains'] as $domain ){
echo "<p class='hint'>";
p($domain);
echo "</p>";
}
?>
</li>
</ul>