fix: expose manager account and password controls
This commit is contained in:
parent
f0629ba1a4
commit
bd7995d68c
@ -1,7 +1,7 @@
|
|||||||
(()=>{
|
(()=>{
|
||||||
'use strict';
|
'use strict';
|
||||||
if(window.CateriumAccountCenterV1780)return;
|
if(window.CateriumAccountCenterV1780)return;
|
||||||
const VERSION='17.8.0-account-center-v2';
|
const VERSION='17.8.0-account-center-v3';
|
||||||
const $=(s,r=document)=>r.querySelector(s);
|
const $=(s,r=document)=>r.querySelector(s);
|
||||||
const qa=(s,r=document)=>[...r.querySelectorAll(s)];
|
const qa=(s,r=document)=>[...r.querySelectorAll(s)];
|
||||||
const esc=v=>window.SunSafe?.escapeHTML?window.SunSafe.escapeHTML(String(v??'')):String(v??'');
|
const esc=v=>window.SunSafe?.escapeHTML?window.SunSafe.escapeHTML(String(v??'')):String(v??'');
|
||||||
@ -42,6 +42,7 @@ function installStyle(){
|
|||||||
#cateriumAccountCenter .cac-company-actions{display:flex;gap:10px;flex-wrap:wrap}
|
#cateriumAccountCenter .cac-company-actions{display:flex;gap:10px;flex-wrap:wrap}
|
||||||
#sunCurrentUserLabel{cursor:pointer}
|
#sunCurrentUserLabel{cursor:pointer}
|
||||||
#sunCurrentUserLabel:hover{text-decoration:underline;text-underline-offset:3px}
|
#sunCurrentUserLabel:hover{text-decoration:underline;text-underline-offset:3px}
|
||||||
|
#cateriumAccountButton{display:flex!important}
|
||||||
#sun-cloud-users-modal [data-caterium-owner-row="1"]{background:#fff9e8;border:1px solid #ead39a;border-radius:10px;padding:10px}
|
#sun-cloud-users-modal [data-caterium-owner-row="1"]{background:#fff9e8;border:1px solid #ead39a;border-radius:10px;padding:10px}
|
||||||
#sun-cloud-users-modal .caterium-owner-chip{display:inline-flex;align-items:center;border-radius:999px;background:#f4dfad;color:#6d5118;padding:5px 9px;font-size:11px;font-weight:900}
|
#sun-cloud-users-modal .caterium-owner-chip{display:inline-flex;align-items:center;border-radius:999px;background:#f4dfad;color:#6d5118;padding:5px 9px;font-size:11px;font-weight:900}
|
||||||
@media(max-width:720px){#cateriumAccountCenter{padding:0;place-items:stretch}#cateriumAccountCenter .cac-shell{width:100%;max-height:none;height:100dvh;border-radius:0}#cateriumAccountCenter .cac-grid{grid-template-columns:1fr}#cateriumAccountCenter .cac-card.wide{grid-column:auto}#cateriumAccountCenter .cac-head,#cateriumAccountCenter .cac-body{padding-left:18px;padding-right:18px}}
|
@media(max-width:720px){#cateriumAccountCenter{padding:0;place-items:stretch}#cateriumAccountCenter .cac-shell{width:100%;max-height:none;height:100dvh;border-radius:0}#cateriumAccountCenter .cac-grid{grid-template-columns:1fr}#cateriumAccountCenter .cac-card.wide{grid-column:auto}#cateriumAccountCenter .cac-head,#cateriumAccountCenter .cac-body{padding-left:18px;padding-right:18px}}
|
||||||
@ -80,10 +81,11 @@ function render(){
|
|||||||
<div class="cac-note">На новый адрес придёт письмо подтверждения.</div>
|
<div class="cac-note">На новый адрес придёт письмо подтверждения.</div>
|
||||||
</section>
|
</section>
|
||||||
<section class="cac-card">
|
<section class="cac-card">
|
||||||
<h3>Пароль</h3>
|
<h3>Смена пароля</h3>
|
||||||
<label>Новый пароль<input id="cacPassword" type="password" autocomplete="new-password" minlength="8"></label>
|
<label>Новый пароль<input id="cacPassword" type="password" autocomplete="new-password" minlength="8"></label>
|
||||||
<label>Повторите пароль<input id="cacPassword2" type="password" autocomplete="new-password" minlength="8"></label>
|
<label>Повторите пароль<input id="cacPassword2" type="password" autocomplete="new-password" minlength="8"></label>
|
||||||
<div class="cac-actions"><button class="primary" id="cacSavePassword" type="button">Сменить пароль</button></div>
|
<div class="cac-actions"><button class="primary" id="cacSavePassword" type="button">Сменить пароль</button></div>
|
||||||
|
<div class="cac-note">Пароль меняется только для вашего аккаунта. Администратор компании его не видит.</div>
|
||||||
</section>
|
</section>
|
||||||
${owner?`<section class="cac-card"><h3>Компания и пользователи</h3><p class="cac-note">Создавайте сотрудников, назначайте им рабочую роль и включайте только нужные права.</p><div class="cac-company-actions"><button class="primary" id="cacOpenUsers" type="button">Пользователи и права</button></div></section>`:''}
|
${owner?`<section class="cac-card"><h3>Компания и пользователи</h3><p class="cac-note">Создавайте сотрудников, назначайте им рабочую роль и включайте только нужные права.</p><div class="cac-company-actions"><button class="primary" id="cacOpenUsers" type="button">Пользователи и права</button></div></section>`:''}
|
||||||
<section class="cac-card wide"><h3>Сеанс</h3><div class="cac-actions"><button class="outline" id="cacLogout" type="button">Выйти из аккаунта</button></div></section>
|
<section class="cac-card wide"><h3>Сеанс</h3><div class="cac-actions"><button class="outline" id="cacLogout" type="button">Выйти из аккаунта</button></div></section>
|
||||||
@ -125,10 +127,21 @@ function sanitizeRbac(){
|
|||||||
}
|
}
|
||||||
const addRole=$('#sunRbacEmployeeRole',body);if(addRole)qa('option[value="admin"]',addRole).forEach(o=>o.remove());
|
const addRole=$('#sunRbacEmployeeRole',body);if(addRole)qa('option[value="admin"]',addRole).forEach(o=>o.remove());
|
||||||
}
|
}
|
||||||
|
function ensureSidebarEntry(){
|
||||||
|
const footer=$('.sun-side-footer');if(!footer||!session()?.user)return;
|
||||||
|
let button=$('#cateriumAccountButton');
|
||||||
|
if(!button){
|
||||||
|
button=document.createElement('button');
|
||||||
|
button.id='cateriumAccountButton';button.type='button';button.className='sun-side-action';button.title='Профиль, email и пароль';
|
||||||
|
button.innerHTML='<span>◎</span><span>Мой аккаунт</span>';
|
||||||
|
footer.insertBefore(button,footer.querySelector('#sunLogoutBtn')||footer.firstChild);
|
||||||
|
}
|
||||||
|
if(!button.dataset.cateriumAccountBound){button.dataset.cateriumAccountBound='1';button.addEventListener('click',open)}
|
||||||
|
}
|
||||||
function bindEntry(){
|
function bindEntry(){
|
||||||
const label=$('#sunCurrentUserLabel');if(label&&!label.dataset.cateriumAccountBound){label.dataset.cateriumAccountBound='1';label.title='Открыть личный кабинет';label.addEventListener('click',open)}
|
const label=$('#sunCurrentUserLabel');if(label&&!label.dataset.cateriumAccountBound){label.dataset.cateriumAccountBound='1';label.title='Открыть личный кабинет';label.addEventListener('click',open)}
|
||||||
const ss=session();const uid=ss?.user?.id||'';if(uid&&uid!==lastUserId){lastUserId=uid;snapshot=null;}
|
const ss=session();const uid=ss?.user?.id||'';if(uid&&uid!==lastUserId){lastUserId=uid;snapshot=null;}
|
||||||
sanitizeRbac();
|
ensureSidebarEntry();sanitizeRbac();
|
||||||
}
|
}
|
||||||
installStyle();ensureModal();bindEntry();
|
installStyle();ensureModal();bindEntry();
|
||||||
const obs=new MutationObserver(bindEntry);obs.observe(document.documentElement,{childList:true,subtree:true});
|
const obs=new MutationObserver(bindEntry);obs.observe(document.documentElement,{childList:true,subtree:true});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user