diff --git a/public/core/auth-security-v1774.js b/public/core/auth-security-v1774.js index a3221a6..707b89c 100644 --- a/public/core/auth-security-v1774.js +++ b/public/core/auth-security-v1774.js @@ -1,7 +1,7 @@ (()=>{ 'use strict'; - const VERSION='17.8.2-company-onboarding'; + const VERSION='17.8.3-login-session-handoff'; const PENDING_REGISTRATION_KEY='sunPendingRegistrationV23'; let busy=false; @@ -34,6 +34,20 @@ function showPublicConfirmation(gate,email){if(!gate)return;gate.innerHTML=`
Caterium

Подтвердите email

Регистрация Caterium

Мы отправили письмо на ${esc(email)}. После подтверждения войдите в Caterium — компания и пробный период будут созданы автоматически. Название компании вы укажете в настройках.

`;gate.querySelector('#sunAuthGoLoginV1774')?.addEventListener('click',()=>location.reload(),{once:true});} function showInviteConfirmation(gate,email){if(!gate)return;gate.innerHTML=`
Caterium

Подтвердите email

Приглашение сохранено

Письмо подтверждения отправлено на ${esc(email)}. После подтверждения войдите по ссылке приглашения — Caterium автоматически подключит вас к компании.

`;gate.querySelector('#sunInviteReloadV1774')?.addEventListener('click',()=>location.reload(),{once:true});} + async function publicLogin(gate){ + if(busy)return;const c=client();if(!c){setError(gate,'Облачный сервис не подключён.');return;} + const email=String($('sunGateEmailV3')?.value||'').trim().toLowerCase(),password=String($('sunGatePasswordV3')?.value||''); + if(!email||password.length<6){setError(gate,'Введите email и пароль минимум из 6 символов.');return;} + busy=true;const button=$('sunGateSubmitV3');if(button)button.disabled=true;setError(gate,'Выполняю вход…'); + try{ + const result=await c.auth.signInWithPassword({email,password});if(result.error)throw result.error; + const authUser=result.data?.user||result.data?.session?.user||null;const userId=authUser?.id||'';if(userId)try{sessionStorage.setItem(`sunCloudQuickPinUnlockedV3:${userId}`,'1')}catch(_){} + const persisted=await c.auth.getSession();if(persisted.error)throw persisted.error;if(!persisted.data?.session?.user)throw new Error('Сессия входа не сохранилась. Повторите вход.'); + setError(gate,'Вход выполнен. Открываю Caterium…'); + setTimeout(()=>location.reload(),120); + }catch(error){setError(gate,String(error?.message||error||'Не удалось войти.'));if(button)button.disabled=false;busy=false;} + } + async function publicSignup(gate){ if(busy)return;const c=client();if(!c){setError(gate,'Облачный сервис не подключён.');return;} const email=String($('sunGateEmailV3')?.value||'').trim().toLowerCase(),password=String($('sunGatePasswordV3')?.value||''),password2=String($('sunGatePassword2V27')?.value||''),promoCode=String($('sunGatePromoV181')?.value||'').trim().toUpperCase(); @@ -83,8 +97,8 @@ } function publicRegistrationMode(){const fields=$('sunGateRegisterFieldsV27');return Boolean(fields&&!fields.hidden);} - document.addEventListener('click',event=>{const target=event.target instanceof Element?event.target:null;if(!target)return;if(target.closest('#sunGateSubmitV3')&&publicRegistrationMode()){event.preventDefault();event.stopImmediatePropagation();publicSignup($('sunCloudAuthGateV3')).catch(error=>setError($('sunCloudAuthGateV3'),friendlySignupError(error)));return;}if(target.closest('#sunInviteJoinV27')){event.preventDefault();event.stopImmediatePropagation();inviteSignup($('sunCloudAuthGateV3')).catch(error=>setError($('sunCloudAuthGateV3'),friendlySignupError(error)));}},true); - document.addEventListener('keydown',event=>{if(event.key!=='Enter')return;const target=event.target instanceof Element?event.target:null;if(target?.id==='sunGatePassword2V27'&&publicRegistrationMode()){event.preventDefault();event.stopImmediatePropagation();publicSignup($('sunCloudAuthGateV3')).catch(error=>setError($('sunCloudAuthGateV3'),friendlySignupError(error)));}else if(target?.id==='sunInvitePassword2V27'){event.preventDefault();event.stopImmediatePropagation();inviteSignup($('sunCloudAuthGateV3')).catch(error=>setError($('sunCloudAuthGateV3'),friendlySignupError(error)));}},true); + document.addEventListener('click',event=>{const target=event.target instanceof Element?event.target:null;if(!target)return;if(target.closest('#sunGateSubmitV3')){event.preventDefault();event.stopImmediatePropagation();if(publicRegistrationMode())publicSignup($('sunCloudAuthGateV3')).catch(error=>setError($('sunCloudAuthGateV3'),friendlySignupError(error)));else publicLogin($('sunCloudAuthGateV3')).catch(error=>setError($('sunCloudAuthGateV3'),String(error?.message||error||'Не удалось войти.')));return;}if(target.closest('#sunInviteJoinV27')){event.preventDefault();event.stopImmediatePropagation();inviteSignup($('sunCloudAuthGateV3')).catch(error=>setError($('sunCloudAuthGateV3'),friendlySignupError(error)));}},true); + document.addEventListener('keydown',event=>{if(event.key!=='Enter')return;const target=event.target instanceof Element?event.target:null;if(target?.id==='sunGatePasswordV3'&&!publicRegistrationMode()){event.preventDefault();event.stopImmediatePropagation();publicLogin($('sunCloudAuthGateV3')).catch(error=>setError($('sunCloudAuthGateV3'),String(error?.message||error||'Не удалось войти.')));}else if(target?.id==='sunGatePassword2V27'&&publicRegistrationMode()){event.preventDefault();event.stopImmediatePropagation();publicSignup($('sunCloudAuthGateV3')).catch(error=>setError($('sunCloudAuthGateV3'),friendlySignupError(error)));}else if(target?.id==='sunInvitePassword2V27'){event.preventDefault();event.stopImmediatePropagation();inviteSignup($('sunCloudAuthGateV3')).catch(error=>setError($('sunCloudAuthGateV3'),friendlySignupError(error)));}},true); const observer=new MutationObserver(()=>neutralizeLegacyCompanyUI());observer.observe(document.documentElement,{childList:true,subtree:true}); const init=()=>{neutralizeLegacyCompanyUI();setTimeout(()=>{const gate=$('sunCloudAuthGateV3');if(gate&&pendingRegistration())finishOwnerOnboarding(gate);},500)};