mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-26 00:03:16 +00:00
Bump version to 0.7.1
This commit is contained in:
parent
476e9ff8b3
commit
e39f88f6c6
3 changed files with 115 additions and 2 deletions
110
app/Console/Commands/FixUsernames.php
Normal file
110
app/Console/Commands/FixUsernames.php
Normal file
|
@ -0,0 +1,110 @@
|
|||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use App\{Profile, User};
|
||||
use DB;
|
||||
|
||||
class FixUsernames extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'fix:usernames';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Fix invalid usernames';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
if(version_compare(config('pixelfed.version'), '0.7.2') !== -1) {
|
||||
$this->info('This command is only for versions lower than 0.7.2');
|
||||
return;
|
||||
}
|
||||
|
||||
$this->info('Collecting data ...');
|
||||
|
||||
$affected = collect([]);
|
||||
|
||||
$users = User::chunk(100, function($users) use($affected) {
|
||||
foreach($users as $user) {
|
||||
$val = str_replace(['-', '_'], '', $user->username);
|
||||
if(!ctype_alnum($val)) {
|
||||
$this->info('Found invalid username: ' . $user->username);
|
||||
$affected->push($user);
|
||||
}
|
||||
}
|
||||
});
|
||||
if($affected->count() > 0) {
|
||||
$this->info('Found: ' . $affected->count() . ' affected usernames');
|
||||
|
||||
$opts = [
|
||||
'Random replace (assigns random username)',
|
||||
'Best try replace (assigns alpha numeric username)',
|
||||
'Manual replace (manually set username)'
|
||||
];
|
||||
|
||||
foreach($affected as $u) {
|
||||
$old = $u->username;
|
||||
$opt = $this->choice('Select fix method:', $opts, 0);
|
||||
|
||||
switch ($opt) {
|
||||
case $opts[0]:
|
||||
$new = "user_" . str_random(6);
|
||||
$this->info('New username: ' . $new);
|
||||
break;
|
||||
|
||||
case $opts[1]:
|
||||
$new = filter_var($old, FILTER_SANITIZE_STRING|FILTER_FLAG_STRIP_LOW);
|
||||
if(strlen($new) < 6) {
|
||||
$new = $new . '_' . str_random(4);
|
||||
}
|
||||
$this->info('New username: ' . $new);
|
||||
break;
|
||||
|
||||
case $opts[2]:
|
||||
$new = $this->ask('Enter new username:');
|
||||
$this->info('New username: ' . $new);
|
||||
break;
|
||||
|
||||
default:
|
||||
$new = "user_" . str_random(6);
|
||||
break;
|
||||
}
|
||||
|
||||
DB::transaction(function() use($u, $new) {
|
||||
$profile = $u->profile;
|
||||
$profile->username = $new;
|
||||
$u->username = $new;
|
||||
$u->save();
|
||||
$profile->save();
|
||||
});
|
||||
$this->info('Selected: ' . $opt);
|
||||
}
|
||||
|
||||
$this->info('Fixed ' . $affected->count() . ' usernames!');
|
||||
}
|
||||
}
|
||||
}
|
|
@ -55,7 +55,6 @@ class RegisterController extends Controller
|
|||
$this->validateUsername($data['username']);
|
||||
$usernameRules = [
|
||||
'required',
|
||||
'alpha_dash',
|
||||
'min:2',
|
||||
'max:15',
|
||||
'unique:users',
|
||||
|
@ -63,6 +62,10 @@ class RegisterController extends Controller
|
|||
if (!ctype_alpha($value[0])) {
|
||||
return $fail($attribute.' is invalid. Username must be alpha-numeric and start with a letter.');
|
||||
}
|
||||
$val = str_replace(['-', '_'], '', $value);
|
||||
if(!ctype_alnum($val)) {
|
||||
return $fail($attribute . ' is invalid. Username must be alpha-numeric.');
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ return [
|
|||
| This value is the version of your PixelFed instance.
|
||||
|
|
||||
*/
|
||||
'version' => '0.7.0',
|
||||
'version' => '0.7.1',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in a new issue