RegisterThrottle list-profiles-by-ip
This commit is contained in:
parent
557ad2d1fd
commit
be35975b12
|
@ -81,6 +81,13 @@ class RegisterThrottlePlugin extends Plugin
|
|||
return true;
|
||||
}
|
||||
|
||||
public function onRouterInitialized(URLMapper $m)
|
||||
{
|
||||
$m->connect('main/ipregistrations/:ipaddress',
|
||||
array('action' => 'ipregistrations'),
|
||||
array('ipaddress' => '[0-9a-f\.\:]+'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when someone tries to register.
|
||||
*
|
||||
|
@ -141,6 +148,12 @@ class RegisterThrottlePlugin extends Plugin
|
|||
return true;
|
||||
}
|
||||
|
||||
$target = $action->getTarget();
|
||||
if (!$target->isSilenced()) {
|
||||
// Only show the IP of users who are not silenced.
|
||||
return true;
|
||||
}
|
||||
|
||||
$scoped = $action->getScoped();
|
||||
if (!$scoped instanceof Profile || !$scoped->hasRight(self::VIEWMODLOG)) {
|
||||
// only continue if we are allowed to VIEWMODLOG
|
||||
|
@ -160,7 +173,11 @@ class RegisterThrottlePlugin extends Plugin
|
|||
$action->element('h2', null, _('Registration IP'));
|
||||
|
||||
$action->element('strong', null, _('Registered from:'));
|
||||
$action->element('span', ['class'=>'ipaddress'], $ipaddress ?: 'unknown');
|
||||
$action->element('a',
|
||||
[ 'class'=>'ipaddress',
|
||||
'href'=>common_local_url('ipregistrations', array('ipaddress'=>$ipaddress)),
|
||||
],
|
||||
$ipaddress ?: 'unknown');
|
||||
|
||||
$action->elementEnd('div');
|
||||
}
|
||||
|
@ -185,8 +202,8 @@ class RegisterThrottlePlugin extends Plugin
|
|||
|
||||
$reg = new Registration_ip();
|
||||
|
||||
$reg->user_id = $profile->id;
|
||||
$reg->ipaddress = $ipaddress;
|
||||
$reg->user_id = $profile->getID();
|
||||
$reg->ipaddress = mb_strtolower($ipaddress);
|
||||
$reg->created = common_sql_now();
|
||||
|
||||
$result = $reg->insert();
|
||||
|
|
40
plugins/RegisterThrottle/actions/ipregistrations.php
Normal file
40
plugins/RegisterThrottle/actions/ipregistrations.php
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||
|
||||
class IpregistrationsAction extends ManagedAction
|
||||
{
|
||||
protected $needLogin = true;
|
||||
|
||||
protected $ipaddress = null;
|
||||
|
||||
function title()
|
||||
{
|
||||
return sprintf(_('Registrations from IP %s'), $this->ipaddress);
|
||||
}
|
||||
|
||||
protected function doPreparation()
|
||||
{
|
||||
if (!$scoped->hasRight(self::VIEWMODLOG) && !$scoped->hasRole(Profile_role::ADMINISTRATOR)) {
|
||||
throw new AuthorizationException(_('You do not have privileges to see this page'));
|
||||
}
|
||||
|
||||
$this->ipaddress = $this->trimmed('ipaddress');
|
||||
$this->profile_ids = Registration_ip::usersByIP($this->ipaddress);
|
||||
}
|
||||
|
||||
public function showContent()
|
||||
{
|
||||
$this->elementStart('ul');
|
||||
foreach (Profile::listGet('id', $this->profile_ids) as $profile) {
|
||||
$this->elementStart('li');
|
||||
try {
|
||||
$this->element('a', ['href'=>$profile->getUrl()], $profile->getFancyName());
|
||||
} catch (InvalidUrlException $e) {
|
||||
$this->element('span', null, $profile->getFancyName());
|
||||
}
|
||||
$this->elementEnd('li');
|
||||
}
|
||||
$this->elementEnd('ul');
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user