requesterIsAdmin) { throw new ForbiddenException( 'only admins can promote users' ); } if ($request->targetUserId <= 0) { throw new BadRequestException( 'targetUserId must be positive' ); } $target = $this->userRepo->find($request->targetUserId); if ($target === null) { throw new DomainException('user not found'); } if ($target->isAdmin()) { return $target; } return $this->userRepo->update(new User( id: $target->getId(), email: $target->getEmail(), displayName: $target->getDisplayName(), passwordHash: $target->getPasswordHash(), isAdmin: true, emailConfirmedAt: $target->getEmailConfirmedAt(), )); } }