Bug
On a restricted share page (/s/{videoId} with email_restriction_login_required or a private video), PolicyDeniedView tells the viewer to sign in. The inline link goes to /login with no next. After Google OAuth they land on /dashboard and have to find the original tab and refresh.
On older images the copy is plain text with no link at all.
Expected
Sign in from the denied page should return to /s/{videoId}. /login?next= already does this (apps/web/app/(org)/login/form.tsx + getSafeNextPath). Share-page comment overlay already passes callbackUrl back to the video. The access-denied view does not.
Fix
PR incoming: pass videoId into PolicyDeniedView, link to /login?next=/s/{videoId}, and add a visible Sign in button. Leave email_restriction_denied as copy-only (they are already signed in; the domain is wrong).
Bug
On a restricted share page (
/s/{videoId}withemail_restriction_login_requiredor a private video),PolicyDeniedViewtells the viewer to sign in. The inline link goes to/loginwith nonext. After Google OAuth they land on/dashboardand have to find the original tab and refresh.On older images the copy is plain text with no link at all.
Expected
Sign in from the denied page should return to
/s/{videoId}./login?next=already does this (apps/web/app/(org)/login/form.tsx+getSafeNextPath). Share-page comment overlay already passescallbackUrlback to the video. The access-denied view does not.Fix
PR incoming: pass
videoIdintoPolicyDeniedView, link to/login?next=/s/{videoId}, and add a visible Sign in button. Leaveemail_restriction_deniedas copy-only (they are already signed in; the domain is wrong).