customer: Sichtbarkeit belegen - Aufrufe im Verlauf, Newsroom-Uebersicht (Roadmap 1c)
- VisibilityStats: Firmen-Kennzahlen ueber alle Meldungen, Aufrufe je Meldung (30 Tage), lueckenlose Tagesreihe (Tage vor der Zaehlung sind null, nicht 0), Sitemap-seit und Google-Suchlink (Indexierung Variante B). - Firmenseite: alle Meldungen der Firma statt nur eigene (Beansprucher sahen eine leere Liste), Aufrufe-Spalten, echtes Statistik-Panel. - Meldungsseite: Panel Sichtbarkeit mit SVG-Tagesbalken 30/90 Tage. - Claim aus der Veroeffentlichungsmail landet auf der Meldung (payload press_release_id), Mail-Hinweis erweitert, ein Element (E4). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
a00f9dc79a
commit
3ef1b84600
14 changed files with 676 additions and 59 deletions
|
|
@ -42,7 +42,7 @@ class ContactAccessService
|
|||
* - Mehrfach hinterlegt → ein Konto, ALLE Firmen/Kontakte zugeordnet.
|
||||
* - Deaktiviertes Bestandskonto / unbekannte E-Mail → keine Aktion.
|
||||
*/
|
||||
public function requestMagicAccess(string $email, ?string $ip = null, ?ConversionSource $source = null, ?int $landingCompanyId = null): bool
|
||||
public function requestMagicAccess(string $email, ?string $ip = null, ?ConversionSource $source = null, ?int $landingCompanyId = null, ?int $landingPressReleaseId = null): bool
|
||||
{
|
||||
$email = mb_strtolower(trim($email));
|
||||
$contacts = $this->contactsFor($email);
|
||||
|
|
@ -61,7 +61,7 @@ class ContactAccessService
|
|||
}
|
||||
|
||||
$this->linkMemberships($user, $this->companyIdsFrom($contacts, $companies), $contacts);
|
||||
$this->sendLoginLink($user, $ip, $source, $landingCompanyId);
|
||||
$this->sendLoginLink($user, $ip, $source, $landingCompanyId, $landingPressReleaseId);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -200,13 +200,19 @@ class ContactAccessService
|
|||
/**
|
||||
* Versendet einen regulären Login-Magic-Link an den Account.
|
||||
*/
|
||||
private function sendLoginLink(User $user, ?string $ip, ?ConversionSource $source = null, ?int $landingCompanyId = null): void
|
||||
private function sendLoginLink(User $user, ?string $ip, ?ConversionSource $source = null, ?int $landingCompanyId = null, ?int $landingPressReleaseId = null): void
|
||||
{
|
||||
// Landung nach dem Login (Roadmap 1b.2/1c.2): die Firma, um die es
|
||||
// ging — und, wenn der Weg über eine Veröffentlichungsmail kam, die
|
||||
// konkrete Meldung mit ihren Aufrufen.
|
||||
$generated = $this->magicLinks->createLoginLink(
|
||||
$user,
|
||||
$ip,
|
||||
source: $source,
|
||||
payload: $landingCompanyId !== null ? ['company_id' => $landingCompanyId] : [],
|
||||
payload: array_filter([
|
||||
'company_id' => $landingCompanyId,
|
||||
'press_release_id' => $landingPressReleaseId,
|
||||
]),
|
||||
);
|
||||
|
||||
Mail::to($user->email)->queue((new MagicLoginLink(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue