Spaces:
Sleeping
Sleeping
| 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) |