Páginas filhas
  • Dados Protegidos no Browse

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Com isso o ofuscamento de dados no browse acontece utilizando esta propriedade. Para os componentes que utilizam dicionário esta marcação para o ofuscamento acontece utilizando o conteúdo das propriedades cId ou cReadVar, comparando com os nomes dos campos registrados nas tabelas de Dados Protegidos no momento que acontece a atribuição das colunas para o browse.

Para criar os recursos fundamentais no sistema é necessário a aplicação da lib, atualizada com label mínimo 20200214, e atualização do sistema com upddistr.

A aplicação do UPDDISTR pode acontecer com:

  • pacote diferencial para upgrade para o Release 12.1.27;
  • pacote específico para Dados Protegidos, nos Releases 12.1.23 e 12.1.25.

03. O QUE VAI ACONTECER QUANDO UM INICIALIZADOR DE BROWSE RETORNAR UM VALOR DE CAMPO SENSÍVEL OU PESSOAL?

...

Para os browses construídos utilizando tabela temporária "TRB", será exigida alteração para informar os nomes das colunas que precisam ser ofuscadas. Esta alteração será adicionar um array com o formato lista de campos ({“CAMPO1”,“CAMPO2”}) na chamadas da função que monta o browse.

Exemplo:

Bloco de código
languagetext
linenumberstrue
aOfuscar := {"CAMPO1","CAMPO2"}

...


MBrowse(par1, par2…. aOfuscar)

...


MarkBrow(par1, par2…. aOfuscar)


06. O QUE PRECISA SER FEITO COM FWMBROWSE E FWMARKBROWSE?

...

- A construção baseada em tabela temporária, precisa da informação da lista dos campos através de método e não parâmetro (o que diferencia das funções que recebe por parâmetro).

Exemplos:


Bloco de código
languagetext
linenumberstrue
oBrowse := FWMBrowse():New()

...


oBrowse:SetAlias(cAliasTmp)

...


oBrowse:SetTemporary(.T.)

...



// Define os campos

...


aAdd(aBrowse, {"Filial","FILIAL","C",006,0,"@!",,,,,,"FILIAL"}) 

...


aAdd(aBrowse, {"Numero","NUMERO","C", 006, 0, "@!",,,,,,"NUMERO"})

...


aAdd(aBrowse, {"Tipo","TIPO","C", 001, 0, "@!",,,,,,"TIPO"})

...


aAdd(aBrowse, {"Cliente","CLIENTE","C", 006, 0,"@!",,,,,,"CLIENTE"})

...


aAdd(aBrowse, {"Pedido Exp.","PEDEXP","C",020,0,"@!",,,,,,"PEDEXP"})

...



aEval := {"FILIAL", "NUMERO", "TIPO", "CLIENTE", "PEDEXP"}

...



// Define os campos que serão ofuscados

...


aOfuscar := FwProtectedDataUtil():UsrNoAccessFieldsInList(aEval)

...


oBrowse:SetObfuscFields(aOfuscar)

...


oBrowse:SetFields(aBrowse)

...


oBrowse:Activate()


No código de demonstração acima, a variável aBrowse é a lista de colunas para o browse, e a partir dela que são descobertas as colunas para serem ofuscadas. 

...

Lista de campos para ofuscar

Bloco de código
languagetext
linenumberstrue
oBrowse := FWBrowse():New()

...


oBrowse:SetDataArray()

...


oBrowse:SetArray(aDataArray)

...


aEval := {"C5_NUM", "C5_CLIENTE", "C5_LOJA", "C5_DATA", "C5_PEDEXP", "C5_TIPO", "C5_CONDPG"}

...


aOfucar:= {} //FwProtectedDataUtil():UsrNoAccessFieldsInList(aEval)

...


aAdd( aOfucar, "C5_CLIENTE" )

...


aAdd( aOfucar, "C5_PEDEXP"  )

...


aAdd( aOfucar, "C5_TIPO"  )

...


oBrowse:SetObfuscFields(aObsFields)

...


oBrowse:SetColumns(aColumns)

...


oBrowse:Activate()


Coluna marcada para ofuscar

Bloco de código
languagetext
linenumberstrue
oBrowse := FWBrowse():New()

...


.

...


.

...


.

...


aOfuscar := FwProtectedDataUtil():UsrNoAccessFieldsInList(aEval)

...



For nContFlds := 1 To Len( aFields )

...


  nCol := Len(aColumns)

...



  lObfuscate := aScan(aOfuscar,{|x|x:cField == aFields[nContFlds]}) > 0

...



  AAdd( aColumns, FWBrwColumn():New() )

...


  aColumns[nCol]:SetData(&("{||(cTemp)->"+aFields[nContFlds]+"}"))

...


  aColumns[nCol]:SetData(&("{||(cTemp)->" + aFields[nContFlds]+"}"))

...


  aColumns[nCol]:SetTitle( aFields[nContFlds] )

...


  aColumns[nCol]:SetSize( 15 )

...


  aColumns[nCol]:SetID( aFields[nContFlds] )

...


  aColumns[nCol]:SetObfuscateCol( lObfuscate )

...


Next nContFlds

...



oBrowse:SetColumns(aColumns)

...


oBrowse:Activate()



Templatedocumentos


HTML
<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}

.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { 
	background: #FF9900; !important 
}

.menu-item.active-tab { 
	border-bottom: none !important; 
}

</style>