Conjunto de mudanças 5942 no repositório publico


Ignorar:
Timestamp:
18/12/2011 20:13:41 (7 anos atrás)
Autor:
fabianosantos
Mensagem:

Exigir ROLE_GESTOR ou ROLE_ADMIN para definir a área de lotação de uma pessoa

Localização:
il.spdo/trunk
Arquivos:
3 editados

Legenda:

Não Modificado
Adicionado
Removido
  • il.spdo/trunk/docs/TODO.txt

    r5941 r5942  
    44  - Propagar edições do tipo de protocolo, tipo de documento e
    55    situação para os protocolos apensados.
    6 
    7   - Exigir ROLE_GESTOR ou ROLE_ADMIN para definir a área de lotação de
    8     uma pessoa.
    96
    107  - Garantir que a tramitação de protocolos com fluxo rigoroso siga
  • il.spdo/trunk/il/spdo/browser/forms/pessoa.py

    r5932 r5942  
    3434    def createAndAdd(self, data):
    3535        del data['id']
    36         # garante que alguns campos são armazenados apenas como números
     36
     37        # garante que alguns campos são armazenados apenas como
     38        # números, mesmo sendo strings
    3739        for campo in ('cep', 'cpf_cnpj'):
    3840            if data[campo] is not None:
    39                 data[campo] = ''.join([c for c in data[campo] if c.isdigit()])       
     41                data[campo] = ''.join([c for c in data[campo] if c.isdigit()])
     42
     43        # ROLE_ADMIN ou ROLE_GESTOR são necessários para definir a
     44        # lotação de uma pessoa. Isso é importante para evitar que um
     45        # operador modifique a própria lotação para contornar
     46        # restrições de segurança.
     47        sc = getUtility(ISecurityChecker)
     48        if not sc.check('lotacao_pessoa'):
     49            del data['area_id']
     50
    4051        pessoa = Pessoa(**data)
    4152        session = Session()
     
    6677        if content:
    6778            for k, v in data.items():
    68                 # garante que alguns campos são armazenados apenas como números
     79
     80                # garante que alguns campos são armazenados apenas
     81                # como números, mesmo sendo strings
    6982                if k in ('cep', 'cpf_cnpj') and v is not None:
    7083                    v = ''.join([c for c in v if c.isdigit()])
     84
     85                # ROLE_ADMIN ou ROLE_GESTOR são necessários para
     86                # definir a lotação de uma pessoa. Isso é importante
     87                # para evitar que um operador modifique a própria
     88                # lotação para contornar restrições de segurança.
     89                if k == 'area_id':
     90                    sc = getUtility(ISecurityChecker)
     91                    if not sc.check('lotacao_pessoa'):
     92                        continue
     93               
    7194                setattr(content, k, v)
    7295
  • il.spdo/trunk/il/spdo/seguranca.py

    r5936 r5942  
    5454    'acessar_remove_pessoaorigem': (TRAMITANDO,),
    5555    'acessar_remove_referencia': (TRAMITANDO,),
     56    'acessar_search_protocolo_barra': ('privilegio_admin', 'privilegio_usuario'),
    5657    'acessar_search_protocolo': ('privilegio_admin', 'privilegio_operador'),
    57     'acessar_search_protocolo_barra': ('privilegio_admin', 'privilegio_usuario'),
    5858    'acessar_show_pessoa': ('privilegio_admin', 'privilegio_operador'),
    5959    'acessar_show_protocolo': ('privilegio_admin', 'privilegio_usuario'),
    6060    'acessar_ws_add_protocolo': ('privilegio_operador',),
    6161    'ciclo_apenso': ('protocolo_apenso_ciclo',),
     62    'fluxo_rigoroso': ('protocolo_fluxo_area_inicial',),
     63    'lotacao_pessoa': ('privilegio_admin', ('privilegio_operador', 'privilegio_gestor')),
    6264    'momento_tramitacao': ('protocolo_apenso_momento',),
    63     # TODO: validar como invariant
    64     'fluxo_rigoroso': ('protocolo_fluxo_area_inicial',),
    6565    'tramitar_envio': (TRAMITANDO,),
    6666    'tramitar_recebimento': (('protocolo_enviado', 'protocolo_situacao_final', 'protocolo_apensado'),),
Note: Veja TracChangeset para ajuda no uso do visualizador de conjunto de mudanças.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.