Exemple #1
0
    def login_pessoa(self, valor_login, senha, tipo, externo=False):
        # Login por cpf
        if (tipo == '0'):
            metodo_login = "******"
        # Login por e-mail
        elif (tipo == '1'):
            metodo_login = "******"
        # Login com identificador errado
        else:
            print("[Orquestrador.ERRO] Método de login não foi identificado.")
            raise StatusInternos('SI-7', {
                "metodo_login": tipo,
                metodo_login: valor_login,
                'senha': senha
            })

        try:
            if (self.conexao_bd.Pessoas.find({
                    "$and": [{
                        metodo_login: valor_login
                    }, {
                        "senha": senha
                    }]
            }).limit(1).count() > 0):
                print(
                    "[Orquestrador] " + metodo_login + ": '" + valor_login +
                    "' encontrado na coleção de Pessoas, exibindo documento retornado:"
                )

                dados_pessoa = self.conexao_bd.Pessoas.find(
                    {"$and": [{
                        metodo_login: valor_login
                    }, {
                        "senha": senha
                    }]})

                if externo == False:
                    lista_transc.log_interno_login_usuario(
                        dados_pessoa[0]['_id'])
                    return {
                        'segredo': str(dados_pessoa[0]['_id']),
                        'nome_usuario': str(dados_pessoa[0]['nome_completo'])
                    }
                else:
                    print(str({"dados_pessoa": str(dados_pessoa[0])}))
                    return (dados_pessoa[0])

            else:
                print("[Orquestrador] " + metodo_login + ": '" + valor_login +
                      "' não encontrado na coleção de Pessoas.")
                raise StatusInternos
        except Exception as e:
            print(e)
            raise StatusInternos('SI-6')
Exemple #2
0
    def excluir_dados_pessoa(self, segredo, dados):

        try:
            if (self.conexao_bd.Pessoas.find({
                    "_id": ObjectId(segredo)
            }).limit(1).count() > 0):

                print("\n[Orquestrador] Exclusão de dados:\n" + str(dados))

                try:
                    self.conexao_bd.Pessoas.update(
                        {"_id": ObjectId(segredo)},
                        {"$unset": dados}), False, True

                except Exception as e:
                    print(e)
                    raise Exception(
                        StatusInternos(
                            "SI-8", {
                                "colecao": "Pessoas",
                                "momento": "Excluir dados",
                                "dados excluídos": dados,
                                "segredo": segredo
                            }))

            else:
                raise Exception(
                    StatusInternos(
                        "SI-8", {
                            "colecao": "Pessoas",
                            "momento": "Excluir dados",
                            "dados excluídos": dados,
                            "segredo": segredo
                        }))

        except Exception as e:
            print(e)
            raise Exception(
                StatusInternos(
                    "SI-4", {
                        "colecao": "Pessoas",
                        "momento": "Excluir dados",
                        "dados excluídos": dados
                    }))
Exemple #3
0
    def cadastrar_empresa(self, empresa):
        if self.verificar_cnpj(empresa["cnpj"]):
            raise StatusInternos("SI-9", {'cnpj': str(empresa["cnpj"])})
        else:
            try:
                colecao_empresas = self.conexao_bd.Empresas
            except:
                raise StatusInternos('SI-4')

            try:
                empresa_id = colecao_empresas.insert_one(empresa)

                print("\n[Orquestrador] empresa cadastrada com sucesso!\n")
                print("id:" + str(empresa_id.inserted_id))

                return (str(empresa_id.inserted_id))

            except:
                raise StatusInternos('SI-10', {'empresa': empresa})
Exemple #4
0
    def adicionar_dados_pessoa(self, segredo, dados_novos):
        try:
            if (self.conexao_bd.Pessoas.find({
                    "_id": ObjectId(segredo)
            }).limit(1).count() > 0):

                print("\n[Orquestrador] Dados novos:\n" + str(dados_novos))

                try:
                    self.conexao_bd.Pessoas.update({"_id": ObjectId(segredo)},
                                                   {"$set": dados_novos})

                except Exception as e:
                    print(e)
                    raise Exception(
                        StatusInternos(
                            "SI-8", {
                                "colecao": "Pessoas",
                                "momento": "adicionar dados novos",
                                "dados novos": dados_novos,
                                "segredo": segredo
                            }))

            else:
                raise Exception(
                    StatusInternos(
                        "SI-8", {
                            "colecao": "Pessoas",
                            "momento": "adicionar dados novos",
                            "dados novos": dados_novos,
                            "segredo": segredo
                        }))

        except Exception as e:
            print(e)
            raise Exception(
                StatusInternos(
                    "SI-4", {
                        "colecao": "Pessoas",
                        "momento": "adicionar dados novos",
                        "dados novos": dados_novos
                    }))
Exemple #5
0
    def cadastrar_projeto(self, projeto):

        if self.verificar_empresa(projeto["empresa_id"]):
            try:
                colecao_projetos = self.conexao_bd.Projetos
            except:
                raise StatusInternos('SI-4')
            try:
                projeto_id = colecao_projetos.insert_one(projeto)

                print("\n[Orquestrador] projeto cadastrado com sucesso!\n")
                print("id:" + str(projeto_id.inserted_id))

                return (str(projeto_id.inserted_id))

            except:
                raise StatusInternos('SI-12', {'projeto': projeto})
        else:
            print("[Orquestrador] empresa não cadastrada na coleção Empresas")
            raise StatusInternos('SI-13')
Exemple #6
0
    def cadastrar_pessoa(self, pessoa):
        if self.verificar_cpf(pessoa["cpf"]):
            raise StatusInternos('SI-1', {'cpf': str(pessoa["cpf"])})
        if self.verificar_email(pessoa["email"]):
            raise StatusInternos('SI-2', {'email': str(pessoa["email"])})

        try:
            colecao_pessoas = self.conexao_bd.Pessoas
        except:
            raise StatusInternos('SI-4')

        try:
            # Chamada de função para inserir documento de cadastro
            pessoa_id = colecao_pessoas.insert_one(pessoa)

            # Chama função de cadastro do Blockchain
            print("\n[Orquestrador] pessoa cadastrada com sucesso!\n")
            print("id:" + str(pessoa_id.inserted_id))

            return (str(pessoa_id.inserted_id))
        except:
            raise StatusInternos('SI-3', {'pessoa': pessoa})
Exemple #7
0
def Aceitar_Termos():
    print("\n[Requisição-PUT] /Definir permissão do usuário para o projeto:\n"
          "\n")
    try:
        segredo = request.json['segredo']
        aceito = request.json['aceito']

        if (type(aceito) != bool):
            raise StatusInternos('SI-XX', {'segredo': segredo})

        status = orq.aceite_termos(segredo, aceito)

        if status != None:

            json_retorno = RespostasAPI('Permissão definida', {
                'segredo': str(segredo),
                'dados': status
            }).JSON
            return json_retorno
        else:
            raise StatusInternos('SI-4', {'segredo': segredo})
    except StatusInternos as e:
        return e.errors
Exemple #8
0
def Gerar_Token():
    try:
        segredo = request.json['segredo']
        redirect = request.json['redirect']
        projeto_existente = orq.verificar_id_projeto_externos(segredo)
        if projeto_existente:
            token = hashlib.sha256(
                (str(segredo) + str(datetime.now())).encode()).hexdigest()
            vencimento = datetime.now() + timedelta(minutes=5)
            orq.armazenar_tokens(segredo, token, vencimento, redirect)
            return RespostasAPI('Token gerado com sucesso', {
                'token': str(token),
            }).JSON
        else:
            raise StatusInternos('SI-21', {'projeto': segredo})
    except StatusInternos as e:
        return e.errors
Exemple #9
0
def Consultar_Por_Pessoa(segredo):

    print("\n[Requisição-GET] /Consultar dados Projeto por Pessoa:\n" "\n")
    try:

        lista_projetos = orq.consulta_projetos_por_pessoa(segredo)

        if lista_projetos != None:

            json_retorno = RespostasAPI('Consulta realizada com sucesso', {
                'segredo': str(segredo),
                'dados': lista_projetos
            }).JSON
            return json_retorno
        else:
            raise StatusInternos('SI-23', {'pessoa': segredo})
    except StatusInternos as e:
        return e.errors
Exemple #10
0
def Validar_Token():
    try:
        token = request.json['token']
        info_token = orq.consulta_info_token(token)
        vencimento_token = info_token['vencimento']
        projeto_token = info_token['id_projeto']
        redirect_token = info_token['redirect']
        if datetime.now() < vencimento_token:
            projeto = orq.verificar_id_projeto(projeto_token)
            json_retorno = RespostasAPI(
                'Token válido', {
                    "token": token,
                    "id_projeto": projeto_token,
                    "redirect": redirect_token,
                    "objeto_projeto": projeto
                }).JSON
            return json_retorno
        else:
            raise StatusInternos('SI-22', {'projeto': projeto_token})
    except StatusInternos as e:
        return e.errors
Exemple #11
0
def Logar_Externo():
    try:
        metodo_entrada = request.json['metodo_entrada']
        senha = request.json['senha']
        tipo_entrada = request.json['tipo_entrada']
        id_projeto = request.json['segredo']
        token = request.json['token']

        gerar_vinculo = False

        if 'gera_vinculo' in request.json:
            gerar_vinculo = True

        pessoa_logada = orq.login_pessoa(metodo_entrada,
                                         senha,
                                         tipo_entrada,
                                         externo=True)
        id_pessoa = pessoa_logada['_id']

        projeto_pessoa_info = orq.consultar_projeto_pessoa(
            id_projeto, str(id_pessoa))
        projeto_info = orq.verificar_id_projeto(id_projeto)

        if projeto_info:
            projeto_required_chaves = projeto_info['requerimentos']

            pessoa_req = []

            for key in pessoa_logada.keys():
                pessoa_req.append(key)

            projeto_req = []

            for key in projeto_required_chaves:
                projeto_req.append(key['campo'])

            missed_keys = []

            for key in projeto_req:
                if key not in pessoa_req:
                    missed_keys.append(key)

            if (len(missed_keys) == 0):
                if projeto_pessoa_info is None:
                    if gerar_vinculo:
                        criacao_vinculo = datetime.now()
                        redirect_token = orq.consulta_info_token(token)
                        redirect_link = redirect_token['redirect']
                        cadastro_pp = orq.cadastrar_projeto_pessoa(
                            str(id_projeto), str(id_pessoa), criacao_vinculo,
                            True, criacao_vinculo)
                        json_retorno = RespostasAPI(
                            'Vínculo Gerado', {
                                "status_requerimento": True,
                                "status_vinculo": True,
                                "segredo": str(cadastro_pp),
                                "redirect": redirect_link,
                            }).JSON

                    else:
                        json_retorno = RespostasAPI('Vínculo Pendente', {
                            "status_requerimento": True,
                            "status_vinculo": False
                        }).JSON
                else:
                    registro_pp = projeto_pessoa_info['_id']
                    redirect_token = orq.consulta_info_token(token)
                    redirect_link = redirect_token['redirect']
                    orq.atualizar_ultimo_login(str(registro_pp),
                                               datetime.now())
                    json_retorno = RespostasAPI(
                        'Vinculo Ok', {
                            "status_requerimento": True,
                            "status_vinculo": True,
                            "segredo": str(registro_pp),
                            "redirect": redirect_link,
                        }).JSON
            else:
                json_retorno = RespostasAPI(
                    'Vinculo NOK', {
                        "status_requerimento": False,
                        "campos_incompletos": missed_keys,
                    }).JSON

            return json_retorno
        else:
            raise StatusInternos('SI-22')

    except StatusInternos as e:
        return e.errors