newsroom: Verwaltungszugang „Diesen Newsroom verwalten" (Roadmap 1b.2)
Neue Seite /newsroom/{slug}/verwalten auf den Web-Portalen: schickt den
Anmeldelink an die hinterlegte Firmen-E-Mail (sonst Pressekontakte), zeigt
sie nur maskiert, und funktioniert auch für Firmen ohne veröffentlichte
Meldung. Konto, Zuordnung und Login laufen durch ContactAccessService —
neu dort: Herkunft (profile_claim auf dem Token) und Ziel-Firma, auf deren
Kundenseite der Login landet. 410-entfernte bleiben Tombstone, aufgegangene
Slugs führen zum Überlebenden (MergedNewsroomLookup, geteilt mit der
Newsroom-Seite). 3 Links je Newsroom und Tag, 15 je IP und Stunde.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
abfcd774e0
commit
9143cc4a54
15 changed files with 665 additions and 37 deletions
|
|
@ -7,13 +7,17 @@ use App\Http\Controllers\Controller;
|
|||
use App\Listeners\RecordAuthActivity;
|
||||
use App\Models\MagicLink;
|
||||
use App\Services\Conversion\ConversionRecorder;
|
||||
use App\Services\Customer\CustomerCompanyContext;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class MagicLinkConsumeController extends Controller
|
||||
{
|
||||
public function __construct(private readonly ConversionRecorder $recorder) {}
|
||||
public function __construct(
|
||||
private readonly ConversionRecorder $recorder,
|
||||
private readonly CustomerCompanyContext $companies,
|
||||
) {}
|
||||
|
||||
public function __invoke(Request $request, string $token): RedirectResponse
|
||||
{
|
||||
|
|
@ -95,6 +99,15 @@ class MagicLinkConsumeController extends Controller
|
|||
? route('me.dashboard', absolute: false)
|
||||
: '/');
|
||||
|
||||
// „Diesen Newsroom verwalten" (Roadmap 1b.2): direkt auf die Firma,
|
||||
// um die es ging — sofern der Account sie wirklich verwalten darf.
|
||||
$landingCompanyId = (int) ($magicLink->payload['company_id'] ?? 0);
|
||||
|
||||
if ($landingCompanyId > 0 && $user->canAccessCustomer() && ! $user->canAccessAdmin()
|
||||
&& $this->companies->findFor($user, $landingCompanyId) !== null) {
|
||||
$home = route('me.press-kits.show', ['id' => $landingCompanyId], absolute: false);
|
||||
}
|
||||
|
||||
return redirect($home);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue