80 lines
2.6 KiB
Python
80 lines
2.6 KiB
Python
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() |