import gradio as gr from auth import login, signup from certificate_ai import read_pdf, verify_certificate from db import cert_collection current_user = {"username":None,"role":None} def user_login(username,password): role = login(username,password) if role == "user": current_user["username"] = username return "User Login Successful" if role == "admin": current_user["username"] = username return "Admin Login Successful" return "Invalid Login" def upload_certificate(file): text = read_pdf(file) result = verify_certificate(text) cert_collection.insert_one({ "username":current_user["username"], "certificate_text":text, "result":result }) return result def view_certificates(): data = cert_collection.find() output = [] for d in data: output.append([d["username"],d["result"]]) return output with gr.Blocks() as demo: gr.Markdown("# Internship Certificate Verification System") with gr.Tab("Signup"): username = gr.Textbox(label="Username") password = gr.Textbox(label="Password",type="password") role = gr.Dropdown(["user","admin"]) signup_btn = gr.Button("Signup") signup_output = gr.Textbox() signup_btn.click(signup, inputs=[username,password,role], outputs=signup_output) with gr.Tab("Login"): l_user = gr.Textbox(label="Username") l_pass = gr.Textbox(label="Password",type="password") login_btn = gr.Button("Login") login_output = gr.Textbox() login_btn.click(user_login, inputs=[l_user,l_pass], outputs=login_output) with gr.Tab("Upload Certificate"): file = gr.File(label="Upload PDF") verify_btn = gr.Button("Verify") result = gr.Textbox(label="Result") verify_btn.click(upload_certificate, inputs=file, outputs=result) with gr.Tab("Admin Dashboard"): view_btn = gr.Button("View Certificates") table = gr.Dataframe(headers=["Username","Result"]) view_btn.click(view_certificates, outputs=table) demo.launch(server_name="0.0.0.0",server_port=7860)