from flask import Flask, render_template, request, redirect, url_for
import mysql.connector
import base64
from deepface import DeepFace
import cv2
import numpy as np

app = Flask(__name__)

# MySQL Configuration
db_config = {
    'host': 'localhost',
    'user': 'root',
    'password': 'yourpassword',
    'database': 'yourdatabase'
}

# Home Page
@app.route('/')
def index():
    return render_template('index.html')

# Check Authorization
@app.route('/check_auth', methods=['POST'])
def check_auth():
    nokp = request.form['nokp']
    connection = mysql.connector.connect(**db_config)
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM tpass WHERE nokp = %s", (nokp,))
    user = cursor.fetchone()
    cursor.close()
    connection.close()

    if user:
        return redirect(url_for('register'))
    else:
        return "Unauthorized: NOKP not found."

# Registration Page
@app.route('/register')
def register():
    return render_template('register.html')

# Handle Face Registration
@app.route('/register_face', methods=['POST'])
def register_face():
    image_data = request.form['image_data']
    image_data = base64.b64decode(image_data.split(',')[1])
    nparr = np.frombuffer(image_data, np.uint8)
    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

    # Save the image or process it with DeepFace
    cv2.imwrite('registered_face.jpg', img)
    result = DeepFace.analyze(img, actions=['age', 'gender', 'emotion'])
    print("Face Analysis Result:", result)

    return redirect(url_for('success'))

# Success Page
@app.route('/success')
def success():
    return render_template('success.html')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)