100 lines
2.5 KiB
Python
100 lines
2.5 KiB
Python
import uuid
|
|
import csv
|
|
# Генерация случайного UUID (версия 4)
|
|
import hashlib
|
|
import database.database as database
|
|
random_uuid = uuid.uuid4()
|
|
DB = 'password_db.csv'
|
|
|
|
|
|
class UserFoundException(Exception):
|
|
pass
|
|
|
|
class PasswordWrongException(Exception):
|
|
pass
|
|
|
|
def get_db_password():
|
|
"""Читаем файл паролей в список"""
|
|
users = [ ]
|
|
with open(DB, newline='') as csvfile:
|
|
spamreader = csv.reader(csvfile, delimiter=':')
|
|
for row in spamreader:
|
|
users.append(row)
|
|
return users
|
|
|
|
|
|
def checkUser(login: str) -> bool:
|
|
"""Проверяем пользователя в БД"""
|
|
db = get_db_password()
|
|
for row in db:
|
|
if login == row[1]:
|
|
return row
|
|
# raise UserFoundException("Такой пользователь существует!")
|
|
|
|
# try:
|
|
# checkUser('user')
|
|
# except UserFoundException as e:
|
|
# print(e)
|
|
|
|
|
|
|
|
def calculate_md5(data):
|
|
"""Вычисляет MD5-хеш для данных."""
|
|
md5_hash = hashlib.md5(data.encode('utf-8')).hexdigest()
|
|
return md5_hash
|
|
|
|
|
|
def login(username, passwd):
|
|
|
|
_l , _p = database.get_list_account(username)
|
|
|
|
# user = checkUser(username)
|
|
# print(user[2])
|
|
passwd_md5 = calculate_md5(str(passwd))
|
|
|
|
# print(passwd_md5)
|
|
isRight = False if (_p == passwd_md5) else True
|
|
if isRight:
|
|
raise PasswordWrongException
|
|
else:
|
|
print("Пользователь авторизован")
|
|
|
|
# try:
|
|
# checkUser('user')
|
|
# except UserFoundException as e:
|
|
# print(e)
|
|
# except PasswordWrongException as e:
|
|
# print(e)
|
|
|
|
# login('oper', 123)
|
|
# exit(0)
|
|
|
|
def logout(username):
|
|
#todo: Сделать флаг выхода из системы
|
|
pass
|
|
|
|
def delete_user(username):
|
|
#todo: Дописать удаление пользователя
|
|
pass
|
|
|
|
def registration(login, passwd, rep_passwd):
|
|
"""Регистрация пользователей."""
|
|
|
|
if passwd == rep_passwd:
|
|
passwd_md5 = calculate_md5(passwd)
|
|
#print(f"MD5-хеш для '{passwd}': {passwd_md5}")
|
|
str = f"{random_uuid}:{login}:{passwd_md5}\n"
|
|
with open("password_db.csv", "a+") as fd:
|
|
fd.write(str)
|
|
|
|
if not database.add_account(login, passwd_md5):
|
|
print("Запись добавлена")
|
|
|
|
|
|
_login = input("login:")
|
|
_passwd = input("passwd:")
|
|
_rep_passwd = input("rep_passwd:")
|
|
|
|
|
|
#registration( _login, _passwd,_rep_passwd )
|
|
login( _login, _passwd ) |