fix(financeiro): restringir acesso financeiro apenas para admin_empresa e ocultar opcao de regularizar para funcionarios
This commit is contained in:
@@ -60,9 +60,13 @@ public final class AuthMiddleware {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (empresaBloqueada(empresaId) && !exchange.getRequestURI().getPath().startsWith("/api/financeiro/")) {
|
||||
HttpResponses.json(exchange, 403, Map.of("erro", "pendencia_financeira", "mensagem", "Seu acesso esta bloqueado por pendencia de pagamento."));
|
||||
return;
|
||||
String cargo = String.valueOf(exchange.getAttribute(ATTR_CARGO));
|
||||
boolean isAdmin = "admin_empresa".equals(cargo);
|
||||
if (empresaBloqueada(empresaId)) {
|
||||
if (!isAdmin || !exchange.getRequestURI().getPath().startsWith("/api/financeiro/")) {
|
||||
HttpResponses.json(exchange, 403, Map.of("erro", "pendencia_financeira", "mensagem", "Seu acesso está bloqueado por pendência de pagamento."));
|
||||
return;
|
||||
}
|
||||
}
|
||||
next.handle(exchange);
|
||||
};
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,3 +1,4 @@
|
||||
if(!Auth.isAdminEmpresa()){location.href='/cliente/condominios.html';throw new Error('Acesso restrito');}
|
||||
let pagamento=null,timer=null;const statusEl=document.querySelector('#status'),alertEl=document.querySelector('#finance-alert'),pix=document.querySelector('#pix'),qr=document.querySelector('#qr'),payload=document.querySelector('#payload');
|
||||
function data(v){if(!v)return'-';const d=new Date(v+'T00:00:00');return Number.isNaN(d.getTime())?String(v):d.toLocaleDateString('pt-BR')}
|
||||
function dataHora(v){if(!v)return'-';const d=new Date(String(v).replace(' ','T'));return Number.isNaN(d.getTime())?String(v):d.toLocaleString('pt-BR')}
|
||||
|
||||
@@ -1 +1 @@
|
||||
window.Api={async request(path,options={}){const headers=options.headers||{};const token=Auth.token();if(token)headers.Authorization=`Bearer ${token}`;if(options.body&&!(options.body instanceof FormData))headers['Content-Type']='application/json';const res=await fetch(path,{...options,headers});const text=await res.text();const data=text?JSON.parse(text):{};if(res.status===401){Auth.logout();return}if(res.status===403&&data.erro==='pendencia_financeira'){this.financeBanner(data.mensagem);throw new Error(data.mensagem||'Pendencia financeira')}if(!res.ok)throw new Error(data.mensagem||data.erro||`Erro HTTP ${res.status}`);return data},get(path){return this.request(path)},post(path,body){return this.request(path,{method:'POST',body:body instanceof FormData?body:JSON.stringify(body||{})})},put(path,body){return this.request(path,{method:'PUT',body:JSON.stringify(body||{})})},financeBanner(message){if(document.querySelector('.finance-banner'))return;const banner=document.createElement('div');banner.className='finance-banner';banner.innerHTML=`${message||'Seu acesso esta bloqueado por pendencia de pagamento.'} <a href="/cliente/financeiro.html">Regularizar em Financeiro</a>`;document.body.appendChild(banner)}};
|
||||
window.Api={async request(path,options={}){const headers=options.headers||{};const token=Auth.token();if(token)headers.Authorization=`Bearer ${token}`;if(options.body&&!(options.body instanceof FormData))headers['Content-Type']='application/json';const res=await fetch(path,{...options,headers});const text=await res.text();const data=text?JSON.parse(text):{};if(res.status===401){Auth.logout();return}if(res.status===403&&data.erro==='pendencia_financeira'){this.financeBanner(data.mensagem);throw new Error(data.mensagem||'Pendência financeira')}if(!res.ok)throw new Error(data.mensagem||data.erro||`Erro HTTP ${res.status}`);return data},get(path){return this.request(path)},post(path,body){return this.request(path,{method:'POST',body:body instanceof FormData?body:JSON.stringify(body||{})})},put(path,body){return this.request(path,{method:'PUT',body:JSON.stringify(body||{})})},financeBanner(message){if(document.querySelector('.finance-banner'))return;const banner=document.createElement('div');banner.className='finance-banner';const msg=message||'Seu acesso está bloqueado por pendência de pagamento.';const isAdmin=typeof Auth!=='undefined'&&Auth.isAdminEmpresa&&Auth.isAdminEmpresa();if(isAdmin){banner.innerHTML=`${msg} <a href="/cliente/financeiro.html">Regularizar em Financeiro</a>`}else{banner.innerHTML=msg}document.body.appendChild(banner)}};
|
||||
@@ -1 +1 @@
|
||||
window.Layout={mount(scope,active){Auth.require(scope);const label=localStorage.getItem('auth_label')||(scope==='master'?'Master':'Escritório');const master=[['Clientes','/master/clientes.html','clientes'],['Planos','/master/planos.html','planos'],['Financeiro','/master/financeiro.html','financeiro'],['Configurações','/master/configuracoes.html','configuracoes'],['Backup','/master/backup.html','backup']];let cliente=[['Cadastro','/cliente/condominios.html','condominios'],['Lembretes','/cliente/lembretes.html','lembretes'],['Assembleia','/cliente/assembleias.html','assembleias'],['Financeiro','/cliente/financeiro.html','financeiro'],['WhatsApp','/cliente/configuracoes.html','configuracoes']];if(scope==='empresa'&&!Auth.isAdminEmpresa())cliente=cliente.filter(x=>!['configuracoes','financeiro'].includes(x[2]));const menu=(scope==='master'?master:cliente).map(([n,h,k])=>`<a class="${k===active?'active':''}" ${k===active?'aria-current="page"':''} href="${h}">${n}</a>`).join('');document.body.insertAdjacentHTML('afterbegin',`<aside class="sidebar"><div><div class="brand">SeConectai</div><div class="user">${label}</div></div><nav class="menu" aria-label="Navegação principal">${menu}</nav><button class="btn" type="button" onclick="Auth.logout()">Sair</button></aside>`);document.body.classList.add('app');document.querySelector('main')?.classList.add('content')}};
|
||||
window.Layout={mount(scope,active){Auth.require(scope);const label=localStorage.getItem('auth_label')||(scope==='master'?'Master':'Escritório');const master=[['Clientes','/master/clientes.html','clientes'],['Planos','/master/planos.html','planos'],['Financeiro','/master/financeiro.html','financeiro'],['Configurações','/master/configuracoes.html','configuracoes'],['Backup','/master/backup.html','backup']];let cliente=[['Cadastro','/cliente/condominios.html','condominios'],['Lembretes','/cliente/lembretes.html','lembretes'],['Assembleia','/cliente/assembleias.html','assembleias'],['Financeiro','/cliente/financeiro.html','financeiro'],['WhatsApp','/cliente/configuracoes.html','configuracoes']];if(scope==='empresa'&&!Auth.isAdminEmpresa()){if(['configuracoes','financeiro'].includes(active)){location.href='/cliente/condominios.html';return}cliente=cliente.filter(x=>!['configuracoes','financeiro'].includes(x[2]))}const menu=(scope==='master'?master:cliente).map(([n,h,k])=>`<a class="${k===active?'active':''}" ${k===active?'aria-current="page"':''} href="${h}">${n}</a>`).join('');document.body.insertAdjacentHTML('afterbegin',`<aside class="sidebar"><div><div class="brand">SeConectai</div><div class="user">${label}</div></div><nav class="menu" aria-label="Navegação principal">${menu}</nav><button class="btn" type="button" onclick="Auth.logout()">Sair</button></aside>`);document.body.classList.add('app');document.querySelector('main')?.classList.add('content')}};
|
||||
|
||||
Reference in New Issue
Block a user