import tkinter as tk
import hashlib
import configparser
from tkinter import Label, Entry, Button, messagebox

config = configparser.ConfigParser()
config.read('config.ini')

adminid = config['User']['adminid']
adminpw = config['User']['adminpass']

def hashcryto(txt):
    original_string = txt
    # SHA-256 해시 객체 생성
    hash_object = hashlib.sha256()
    # 문자열을 바이트로 변환하여 해싱
    original_bytes = original_string.encode('utf-8')
    hash_object.update(original_bytes)

    # 해시된 결과를 16진수로 표시
    hashed_string = hash_object.hexdigest()
    return hashed_string

# 로그인 버튼 클릭 시 실행할 함수
def login():
    username = username_entry.get()
    password = password_entry.get()

    if hashcryto(username) == adminid and hashcryto(password) == adminpw:
        messagebox.showinfo("로그인 성공", "로그인에 성공했습니다!")
        # 로그인 성공 시, 새로운 창을 열고 메인 창을 숨깁니다.
        main_window.withdraw()  # 메인 창 숨김
        welcome_window.geometry("500x300")
        welcome_window.deiconify()  # 로그인 성공 페이지 표시
    else:
        messagebox.showerror("로그인 실패", "잘못된 사용자 이름 또는 비밀번호입니다.")

# 로그아웃 버튼 클릭 시 실행할 함수
def logout():
    welcome_window.withdraw()  # 로그인 성공 페이지 숨김
    main_window.deiconify()  # 메인 창 표시

# 메인 윈도우 생성
main_window = tk.Tk()
main_window.title("로그인 폼")

# 사용자 이름 레이블과 엔트리 위젯
username_label = Label(main_window, text="사용자 이름:")
username_label.pack()
username_entry = Entry(main_window)
username_entry.pack()

# 비밀번호 레이블과 엔트리 위젯
password_label = Label(main_window, text="비밀번호:")
password_label.pack()
password_entry = Entry(main_window, show="*")  # 비밀번호 필드를 표시하지 않음
password_entry.pack()

# 로그인 버튼
login_button = Button(main_window, text="로그인", command=login)
login_button.pack()

# 로그인 성공 페이지
welcome_window = tk.Toplevel(main_window)
welcome_window.title("환영합니다!")

welcome_label = Label(welcome_window, text="로그인에 성공했습니다!")
welcome_label.pack()

# 로그아웃 버튼
logout_button = Button(welcome_window, text="로그아웃", command=logout)
logout_button.pack()

# 처음에는 로그인 성공 페이지 숨김
welcome_window.withdraw()

# 메인 루프 시작
main_window.geometry("500x300")
main_window.resizable(False, False)  # 창 크기 조절 불가능
main_window.mainloop()