diff --git a/Respositorio_img/Fundos/thiago.purkote.jpg b/Respositorio_img/Fundos/thiago.purkote.jpg new file mode 100644 index 0000000..dec7f57 Binary files /dev/null and b/Respositorio_img/Fundos/thiago.purkote.jpg differ diff --git a/Respositorio_img/Logos/anatram.png b/Respositorio_img/Logos/anatram.png new file mode 100644 index 0000000..9d10679 Binary files /dev/null and b/Respositorio_img/Logos/anatram.png differ diff --git a/Respositorio_img/Logos/enseg.png b/Respositorio_img/Logos/enseg.png new file mode 100644 index 0000000..9d10679 Binary files /dev/null and b/Respositorio_img/Logos/enseg.png differ diff --git a/Respositorio_img/Logos/itguys.jpg b/Respositorio_img/Logos/itguys.jpg new file mode 100644 index 0000000..9d10679 Binary files /dev/null and b/Respositorio_img/Logos/itguys.jpg differ diff --git a/Respositorio_img/Perfil/daivid.alves.jpg b/Respositorio_img/Perfil/daivid.alves.jpg new file mode 100644 index 0000000..dec7f57 Binary files /dev/null and b/Respositorio_img/Perfil/daivid.alves.jpg differ diff --git a/Respositorio_img/Perfil/rafael.cavadas.jpg b/Respositorio_img/Perfil/rafael.cavadas.jpg new file mode 100644 index 0000000..dec7f57 Binary files /dev/null and b/Respositorio_img/Perfil/rafael.cavadas.jpg differ diff --git a/Respositorio_img/Perfil/thiago.purkote.jpg b/Respositorio_img/Perfil/thiago.purkote.jpg new file mode 100644 index 0000000..dec7f57 Binary files /dev/null and b/Respositorio_img/Perfil/thiago.purkote.jpg differ diff --git a/python/json/itguys.json b/python/json/itguys.json index 5ceae83..9b44a3c 100644 --- a/python/json/itguys.json +++ b/python/json/itguys.json @@ -1,30 +1,13 @@ { "info_html": [ { - "imagem_Cab": "", - "A_cab": "..", - "button_Cab": "Logout", - "imagem_segumento_1": "../Acessts/Imagens/Iconis/seta-direita.png", - "imagem_User_1_segumento_2": "../Acessts/Imagens/Iconis/profile-user.png", - "imagem_User_2_segumento_2": "../Acessts/Imagens/Iconis/profile-user.png", - "texto_User_segumento_2": "Usuario", - "texto_Empresa_segumento_2": "itguys", - "Menu_home_a": "https://dev.itguys.com.br/ambiente_do_usu%C3%A1rio/html/construindo.html", - "Menu_home_img": "../Acessts/Imagens/Iconis/home.png", - "Menu_home_text": "Home", - "Menu_Monitor_a": "./Tela_Monitoramento/Monitoramento copy.html", - "Menu_Monitor_img": "../Acessts/Imagens/Iconis/monitor.png", - "Menu_Monitor_text": "Monitoramento", - "Menu_Servicedesk_a": "https://servicedesk.itguys.com.br/HomePage.do", - "Menu_Servicedesk_img": "../Acessts/Imagens/Iconis/technical-support.png", - "Menu_Servicedesk_text": "Servicedesk", - "Menu_Suporte_a": "https://api.whatsapp.com/send?phone=5521966344698", - "Menu_Suporte_img": "../Acessts/Imagens/Iconis/central-de-atendimento.png", - "Menu_Suporte_text": "Suporte", - "Menu_Config_a": "./Tela_config/Config_Ambiente_usuario.html", - "Menu_Config_img": "../Acessts/Imagens/Iconis/engrenagem - Copia.png", - "Menu_Config_text": "Configuracões", - "Tela": "https://dev.itguys.com.br/ambiente_do_usu%C3%A1rio/html/construindo.html" + "usuario": "Daivid", + "empresa": "ItGuys", + "imagemUser": "../Acessts/Imagens/1605305486169.jpg", + "imagemFun": "../Acessts/Imagens/01160209321024.jpg", + "Permissoes_Monitor": "true", + "Imagem_empresa" : "" + } ], "config_influxdb": [ diff --git a/python/server.py b/python/server.py index 034c673..29c1bf3 100644 --- a/python/server.py +++ b/python/server.py @@ -1,4 +1,4 @@ -from flask import Flask, request, jsonify, send_from_directory +from flask import Flask, request, jsonify, send_from_directory,url_for,send_file from flask_mysqldb import MySQL from MySQLdb.cursors import DictCursor import ldap3 @@ -51,8 +51,17 @@ app.config['SMTP_PASSWORD'] = os.getenv('SMTP_PASSWORD') app.config['SMTP_PORT'] = os.getenv('SMTP_PORT') app.config['SMTP_RECIPIENT'] = os.getenv('SMTP_RECIPIENT') +# Diretório onde as imagens sigilosas estão armazenadas +PROTECTED_FOLDER = '/var/www/ambiente_python/Respositorio_img/' mysql = MySQL(app) +# Função auxiliar para obter o caminho completo da imagem +def get_protected_image_path(filename): + file_path = os.path.join(PROTECTED_FOLDER, filename) + # Verifica se o arquivo existe no diretório seguro + if os.path.isfile(file_path): + return file_path + return None def token_required(f): @wraps(f) # Adiciona wraps aqui para manter o nome da função original @@ -177,57 +186,70 @@ def login(): except LDAPException as e: # Captura qualquer outra exceção LDAP genérica return jsonify({'Erro 500': f'Erro LDAP: {str(e)}'}), 500 + +@app.route('/get_profile_picture/', methods=['GET']) +@token_required # Garante que apenas usuários autenticados possam acessar +def get_profile_picture(filename): + # O 'filename' já pode incluir subpastas, por exemplo: "usuarios/perfil/joao_perfil.jpg" + file_path = get_protected_image_path(filename) + + if file_path and os.path.isfile(file_path): + return send_file(file_path, mimetype='image/jpg') # Ajuste o mimetype conforme o tipo da imagem + else: + return jsonify({'msg': 'Imagem não encontrada ou acesso não permitido'}), 404 + @app.route('/mounting', methods=['GET']) -@token_required +@token_required # Verificação de token para autenticação def mounting(): # Decodifica o token para obter o e-mail do usuário token = request.headers.get('x-access-token') data = jwt.decode(token, app.config['SECRET_KEY'], algorithms=["HS256"]) username_full = data['user'] - # Extrair o domínio do email do usuário autenticado - domain = username_full.split('@')[1] - # Verifica se o usuário está autenticado if not username_full: return jsonify({'msg': 'Token inválido!'}), 401 - # Consultar o banco de dados para obter o nome da empresa com base no domínio + # Extrair o nome de usuário e o domínio do email do usuário autenticado + username = username_full.split('@')[0] + domain = username_full.split('@')[1] + + # Consultar o banco de dados para obter as informações do usuário (nome, img_perfil, img_fundo) cur = mysql.connection.cursor() - cur.execute("SELECT nome FROM empresa WHERE dominio = %s", (domain,)) + cur.execute("SELECT nome, img_perfil, img_fundo FROM usuarios WHERE usuario = %s", (username,)) + usuario_result = cur.fetchone() + + if usuario_result is None: + cur.close() + return jsonify({'msg': 'Usuário não encontrado no banco de dados'}), 404 + + nome_usuario, img_perfil_path, img_fundo_path = usuario_result + + # Consultar o banco de dados para obter o nome e o logo da empresa com base no domínio + cur.execute("SELECT nome, logo FROM empresa WHERE dominio = %s", (domain,)) empresa_result = cur.fetchone() cur.close() - # Verifica se a empresa foi encontrada if empresa_result is None: return jsonify({'msg': 'Empresa não encontrada no banco de dados para o domínio fornecido'}), 404 - # Obtém o nome da empresa - nome_empresa = empresa_result[0] + nome_empresa, logo_empresa_path = empresa_result - # Definir o caminho do diretório onde os arquivos JSON estão armazenados - json_directory = './json/' # Substitua pelo caminho real do diretório + # Montar a resposta JSON com os caminhos relativos das imagens e outras informações + response_data = { + 'usuario': { + 'nome': nome_usuario, + 'img_perfil': f"/get_profile_picture/{img_perfil_path}", # Caminho relativo para a imagem de perfil + 'img_fundo': f"/get_profile_picture/{img_fundo_path}" # Caminho relativo para a imagem de fundo + }, + 'empresa': { + 'nome': nome_empresa, + 'logo': f"/get_profile_picture/{logo_empresa_path}" # Caminho relativo para o logo da empresa + } + } - # Nome do arquivo JSON correspondente ao nome da empresa - json_filename = f"{nome_empresa}.json" - - # Caminho completo para o arquivo JSON - json_filepath = os.path.join(json_directory, json_filename) - - # Verificar se o arquivo JSON existe - if not os.path.isfile(json_filepath): - return jsonify({'msg': 'Arquivo JSON não encontrado para a empresa fornecida'}), 404 - - # Carregar o conteúdo do arquivo JSON mantendo a ordem - with open(json_filepath, 'r') as json_file: - json_data = json.load(json_file, object_pairs_hook=OrderedDict) - - # Extrair apenas o conteúdo de 'info_html' - info_html_content = json_data.get('info_html', {}) - - # Retornar a resposta JSON com apenas o conteúdo de 'info_html' - return jsonify(info_html_content) + return jsonify(response_data), 200 @app.route('/api/options', methods=['GET']) @token_required