| Current Path : /var/www/v3.cesa.co.za/src/UserBundle/Service/ |
| Current File : /var/www/v3.cesa.co.za/src/UserBundle/Service/Echasl23UserService.php |
<?php
namespace App\UserBundle\Service;
use App\UserBundle\Entity\UserOld;
use App\UserBundle\Entity\UserLevel;
use Doctrine\ORM\EntityManagerInterface;
/**
* Business logic for echasl23 (PHPMaker) admin users.
*/
final class Echasl23UserService
{
public function __construct(
private readonly EntityManagerInterface $entityManager,
) {
}
public function hashPlainPassword(string $plainPassword): string
{
return md5($plainPassword);
}
public function applyPlainPassword(UserOld $user, ?string $plainPassword): void
{
if ($plainPassword === null || $plainPassword === '') {
return;
}
$user->setPassword($this->hashPlainPassword($plainPassword));
$user->setPwdchanged(new \DateTime());
}
/**
* Symfony roles for an echasl23 user (login and authorization).
*
* @return list<string>
*/
public function resolveRoles(UserOld $user): array
{
if (!$user->isActivated()) {
return ['NONE'];
}
$roles = [
'ROLE_LOGGED_IN',
'ROLE_MY_DETAILS',
'ROLE_USER',
'ROLE_REPORTS_ONLY',
'IS_AUTHENTICATED_FULLY',
];
$level = $user->getAccessLevel() ?? 0;
if ($level < 0) {
$roles[] = 'ROLE_SONATA_ADMIN';
$roles[] = 'ROLE_ADMIN';
$roles[] = 'ROLE_SUPER_ADMINISTRATOR';
$roles[] = 'ROLE_SUPER_ADMIN';
return array_values(array_unique($roles));
}
$roles[] = 'ROLE_SONATA_ADMIN';
$roles[] = 'ROLE_ADMIN';
$roles[] = 'ROLE_FRONTEND_USER';
$userLevel = $this->entityManager->getRepository(UserLevel::class)->findOneBy([
'user_level_id' => $level,
]);
if ($userLevel instanceof UserLevel && $userLevel->getRoles()) {
foreach (explode(',', $userLevel->getRoles()) as $role) {
$role = trim($role);
if ($role !== '') {
$roles[] = 'ROLE_' . strtoupper($role);
}
}
}
return array_values(array_unique($roles));
}
}