Fixed user name generation
in the past user name generation was no trimming white spaces, so was adding %20 on openid url. Also added migration to fix the former user names. Change-Id: Ic784102433def9b47b9151800623eea2f32920b2
This commit is contained in:
parent
3979961668
commit
dff98a009a
|
@ -76,6 +76,23 @@ class User extends BaseModelEloquent implements AuthenticatableContract, IOpenId
|
|||
$this->member = $member;
|
||||
}
|
||||
|
||||
public function getMember(){
|
||||
return $this->getAssociatedMember();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function hasMember(){
|
||||
try{
|
||||
return $this->getMember() != null;
|
||||
}
|
||||
catch (EntityNotFoundException $ex){
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private function getAssociatedMember()
|
||||
{
|
||||
if (is_null($this->member)) {
|
||||
|
@ -414,4 +431,14 @@ class User extends BaseModelEloquent implements AuthenticatableContract, IOpenId
|
|||
|
||||
return $this->member->isEmailVerified();
|
||||
}
|
||||
|
||||
public function delete()
|
||||
{
|
||||
$this->access_tokens()->delete();
|
||||
$this->actions()->delete();
|
||||
$this->clients()->delete();
|
||||
$this->consents()->delete();
|
||||
$this->trusted_sites()->delete();
|
||||
return parent::delete();
|
||||
}
|
||||
}
|
|
@ -88,9 +88,9 @@ final class UserNameGeneratorService implements IUserNameGeneratorService
|
|||
*/
|
||||
public function generate(Member $member)
|
||||
{
|
||||
$fname = self::normalizeChars($member->FirstName);
|
||||
$lname = self::normalizeChars($member->Surname);
|
||||
$user_name = strtolower
|
||||
$fname = self::normalizeChars(trim($member->FirstName));
|
||||
$lname = self::normalizeChars(trim($member->Surname));
|
||||
$user_name = strtolower
|
||||
(
|
||||
preg_replace('/[^\d\w_-]+/i', IUserNameGeneratorService::USER_NAME_INVALID_CHAR_REPLACEMENT, $fname)
|
||||
. IUserNameGeneratorService::USER_NAME_CHAR_CONNECTOR .
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Auth\User;
|
||||
use Auth\UserNameGeneratorService;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Utils\Exceptions\EntityNotFoundException;
|
||||
|
||||
/**
|
||||
* Class FixUserNameWhitespace
|
||||
*/
|
||||
class FixUserNameWhitespace extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
DB::transaction(function(){
|
||||
|
||||
$users = User::where('identifier','like','% %')->get();
|
||||
$generator = new UserNameGeneratorService();
|
||||
|
||||
foreach($users as $user_2_fix){
|
||||
try {
|
||||
|
||||
$member = $user_2_fix->getMember();
|
||||
$fragment_nbr = 1;
|
||||
$identifier = $original_identifier = $generator->generate($member);
|
||||
|
||||
do {
|
||||
$old_user = User::where('identifier', '=', $identifier)->where('id', '<>', $user_2_fix->id)->first();
|
||||
if (!is_null($old_user) && !$old_user->hasMember()){
|
||||
sprintf("deleting user id %s", $old_user->id).PHP_EOL;
|
||||
$old_user->delete();
|
||||
$old_user = null;
|
||||
}
|
||||
if (!is_null($old_user)) {
|
||||
echo sprintf("identifier %s collision with user id %s - member_id %s", $identifier, $old_user->id, $old_user->external_identifier).PHP_EOL;
|
||||
$identifier = $original_identifier . \Auth\IUserNameGeneratorService::USER_NAME_CHAR_CONNECTOR . $fragment_nbr;
|
||||
$fragment_nbr++;
|
||||
continue;
|
||||
}
|
||||
$user_2_fix->identifier = $identifier;
|
||||
break;
|
||||
} while (1);
|
||||
|
||||
$user_2_fix->save();
|
||||
}
|
||||
catch (EntityNotFoundException $ex){
|
||||
echo sprintf("member not found for user id %s - identifier %s ... deleting it", $user_2_fix->id, $user_2_fix->identifier).PHP_EOL;
|
||||
$user_2_fix->delete();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
|
@ -412,6 +412,28 @@ SQL;
|
|||
)
|
||||
);
|
||||
|
||||
Member::create(
|
||||
array(
|
||||
'ID' => 8,
|
||||
'FirstName' => ' Sebastian German ',
|
||||
'Surname' => 'Marcet Gomez ',
|
||||
'Email' => 'smarcet@gmail.com',
|
||||
'Password' => '1qaz2wsx',
|
||||
'PasswordEncryption' => 'none',
|
||||
'Salt' => 'none',
|
||||
'Gender' => 'male',
|
||||
'Address' => 'Av. Siempre Viva 111',
|
||||
'Suburb' => 'Lanus Este',
|
||||
'State' => 'Buenos Aires',
|
||||
'City' => 'Lanus',
|
||||
'Postcode' => '1824',
|
||||
'Country' => 'AR',
|
||||
'Locale' => 'ESP',
|
||||
'Active' => 1,
|
||||
'EmailVerified' => 1,
|
||||
)
|
||||
);
|
||||
|
||||
DB::table('banned_ips')->delete();
|
||||
DB::table('user_exceptions_trail')->delete();
|
||||
DB::table('server_configuration')->delete();
|
||||
|
|
|
@ -4,7 +4,7 @@ use Auth\User;
|
|||
use Models\Member;
|
||||
use OpenId\Services\OpenIdServiceCatalog;
|
||||
use Illuminate\Support\Facades\App;
|
||||
|
||||
use Auth\UserNameGeneratorService;
|
||||
/**
|
||||
* Class UserTest
|
||||
*/
|
||||
|
@ -26,4 +26,17 @@ class UserTest extends TestCase
|
|||
$service = App::make(OpenIdServiceCatalog::UserService);
|
||||
$service->lockUser($user->id);
|
||||
}
|
||||
|
||||
public function testUserNameGeneration(){
|
||||
$generator = new UserNameGeneratorService();
|
||||
$member6 = Member::findOrFail(6);
|
||||
$member7 = Member::findOrFail(7);
|
||||
$member8 = Member::findOrFail(8);
|
||||
$id6 = $generator->generate($member6);
|
||||
$this->assertTrue( $id6 == 'bharath.kumar.m.r');
|
||||
$id7 = $generator->generate($member7);
|
||||
$this->assertTrue( $id7 == 'yuanying');
|
||||
$id8 = $generator->generate($member8);
|
||||
$this->assertTrue( $id8 == 'sebastian.german.marcet.gomez');
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue