#75 - fix data leak to ui-avatars (#79)

* #75 - fix data leak to ui-avatars

* #75 - ecs fix

* #75 - new colors

* #75 - change font color

* #75 - ecs fix

* #75 - change colors order

* #75 - fix

* #75 - fix

* #75 - ecs fix

Co-authored-by: EwelinaLasowy <ewelina.lasowy@blumilk.pl>
This commit is contained in:
Adrian Hopek
2022-03-16 11:53:05 +01:00
committed by GitHub
parent 8a54403318
commit 287c6c19ab
4 changed files with 70 additions and 22 deletions

View File

@@ -0,0 +1,33 @@
<?php
declare(strict_types=1);
namespace Toby\Eloquent\Helpers;
class ColorGenerator
{
public static function generate(string $text): string
{
$colors = config("colors");
$hash = static::calculateHash($text);
$index = $hash - count($colors) * floor($hash / count($colors));
return $colors[$index];
}
protected static function calculateHash(string $text): int
{
$hash = 0;
if (empty($text)) {
return $hash;
}
for ($i = 0; $i < mb_strlen($text); $i++) {
$hash = abs((int)(($hash << 2) - $hash) + mb_ord($text[$i]));
}
return $hash;
}
}

View File

@@ -16,6 +16,7 @@ use Illuminate\Support\Collection;
use Rackbeat\UIAvatars\HasAvatar;
use Toby\Domain\Enums\EmploymentForm;
use Toby\Domain\Enums\Role;
use Toby\Eloquent\Helpers\ColorGenerator;
/**
* @property int $id
@@ -84,10 +85,8 @@ class User extends Authenticatable
public function getAvatar(): string
{
$colors = config("colors");
return $this->getAvatarGenerator()
->backgroundColor($colors[strlen($this->fullname) % count($colors)])
->backgroundColor(ColorGenerator::generate($this->fullName))
->image();
}
@@ -101,9 +100,9 @@ class User extends Authenticatable
return $this->role === $role;
}
protected function getAvatarNameKey(): string
protected function getAvatarName(): string
{
return "fullName";
return mb_substr($this->first_name, 0, 1) . mb_substr($this->last_name, 0, 1);
}
protected static function newFactory(): UserFactory