Browse Source

Модуль авторизации в первом приближении #9

auth_koop
Alexei 1 year ago
parent
commit
5dd44fe7f2
  1. 1
      .gitignore
  2. 231
      bot_modules/authorize.py
  3. 8
      bot_sys/bd_table.py
  4. 7
      main.py

1
.gitignore vendored

@ -3,3 +3,4 @@ config_root_ids
__pycache__
log.txt
bot.db
tmp.py

231
bot_modules/authorize.py

@ -0,0 +1,231 @@
# -*- coding: utf8 -*-
# Общественное достояние, 2023, Алексей Безбородов (Alexei Bezborodov) <AlexeiBv+mirocod_platform_bot@narod.ru>
# Авторизация или регистрация в кооперативе или другой организации
from bot_sys import bot_bd, keyboard, user_access, bd_table, bot_subscribes
from bot_modules import mod_table_operate, mod_simple_message
from enum import Enum
from enum import auto
# ---------------------------------------------------------
# БД
module_name = 'authorize'
table_name = module_name
user_id_field = 'userID'
user_name_field = 'userName'
user_family_name_field = 'userFamilyName'
user_middle_name_field = 'userMiddleName'
user_birthday_field = 'userBirthday'
user_address_field = 'userAddress'
user_contacts_field = 'userContacts'
user_confirm_field = 'userConfirm'
access_field = 'authorizeAccess'
create_datetime_field = 'authorizeCreateDateTime'
user_id_table_field = bd_table.TableField(user_id_field, bd_table.TableFieldDestiny.USER_ID, bd_table.TableFieldType.INT)
class ConfirmStatus(Enum):
YES = auto()
NO = auto()
table = bd_table.Table(table_name, [
user_id_table_field,
bd_table.TableField(user_name_field, bd_table.TableFieldDestiny.USER_NAME, bd_table.TableFieldType.STR),
bd_table.TableField(user_family_name_field, bd_table.TableFieldDestiny.USER_FAMILY_NAME, bd_table.TableFieldType.STR),
bd_table.TableField(user_middle_name_field, bd_table.TableFieldDestiny.USER_MIDDLE_NAME, bd_table.TableFieldType.STR),
bd_table.TableField(user_birthday_field, bd_table.TableFieldDestiny.USER_BIRTHDAY, bd_table.TableFieldType.STR),
bd_table.TableField(user_address_field, bd_table.TableFieldDestiny.USER_ADDRESS, bd_table.TableFieldType.STR),
bd_table.TableField(user_contacts_field, bd_table.TableFieldDestiny.USER_CONTACTS, bd_table.TableFieldType.STR),
bd_table.TableField(user_confirm_field, bd_table.TableFieldDestiny.USER_CONFIRM, bd_table.TableFieldType.ENUM, a_Enum = ConfirmStatus),
bd_table.TableField(access_field, bd_table.TableFieldDestiny.ACCESS, bd_table.TableFieldType.STR),
bd_table.TableField(create_datetime_field, bd_table.TableFieldDestiny.CREATE_DATE, bd_table.TableFieldType.STR),
]
,
[
[user_id_table_field],
]
)
init_access = f'{user_access.user_access_group_new}=va'
# ---------------------------------------------------------
# Сообщения и кнопки
class ButtonNames(Enum):
LIST_AUTH_DOCS = auto()
button_names = {
mod_simple_message.ButtonNames.START: "🔑 Авторизация",
mod_table_operate.ButtonNames.LIST: "≣ Список авторизаций пользователей",
mod_table_operate.ButtonNames.ADD: "📨 Заявка на вступление",
mod_table_operate.ButtonNames.EDIT: "🛠 Редактировать свои данные",
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_ID): "☐ Изменить id пользователя",
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_NAME): "☐ Изменить имя пользователя",
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_FAMILY_NAME): "☐ Изменить фамилию пользователя",
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_MIDDLE_NAME): "☐ Изменить отчество пользователя",
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_BIRTHDAY): "☐ Изменить дату рождения пользователя",
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_ADDRESS): "☐ Изменить адрес пользователя",
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_CONTACTS): "☐ Изменить контакты пользователя",
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_CONFIRM): "☐ Изменить подтверждение пользователя",
# mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_ID): "☐ Изменить id пользователя",
mod_table_operate.EditButton(bd_table.TableFieldDestiny.ACCESS): "✋ Доступ к авторизации пользователя", mod_table_operate.ButtonNames.DEL: "❌ Удалить авторизацию пользователя",
}
messages = {
mod_simple_message.Messages.START: f'''
<b>{button_names[mod_simple_message.ButtonNames.START]}</b>
''',
mod_table_operate.Messages.SELECT: '''
Пожалуйста, выберите пользователя:
''',
mod_table_operate.Messages.ERROR_FIND: '''
Ошибка, пользователь не найден
''',
mod_table_operate.Messages.OPEN: f'''
<b>Пользователь: #{user_id_field}</b>
Имя: #{user_name_field}
Фамилия: #{user_family_name_field}
Отчество: #{user_middle_name_field}
Дата рождения: #{user_birthday_field}
Адрес: #{user_address_field}
Контакты: #{user_contacts_field}
Подтверждение авторизации: #{user_confirm_field}
Время создания: #{create_datetime_field}
''',
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_NAME): '''
Авторизация. Шаг 1
Введите своё имя:
''',
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_FAMILY_NAME): '''
Авторизация. Шаг 2
Введите свою фамилию:
''',
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_MIDDLE_NAME): '''
Авторизация. Шаг 3
Введите своё отчество:
''',
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_BIRTHDAY): '''
Авторизация. Шаг 4
Введите свою дату рождения в формате ДД.ММ.ГГГГ:
''',
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_ADDRESS): '''
Авторизация. Шаг 5
Введите свой домашний адрес:
''',
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_CONTACTS): '''
Авторизация. Шаг 6
Введите свои контакты:
''',
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_CONFIRM): '''
Авторизация. Шаг 7
Имя: #{user_name_field}
Фамилия: #{user_family_name_field}
Отчество: #{user_middle_name_field}
Дата рождения: #{user_birthday_field}
Адрес: #{user_address_field}
Контакты: #{user_contacts_field}
Подтверждение авторизации: #{user_confirm_field}
Подтвердите свои данные:
''',
mod_table_operate.Messages.SUCCESS_CREATE: '''✅ Вы успешно зарегистрированы! Посмотрите документы и отправьте фотографии подписанных документов''',
mod_table_operate.Messages.START_EDIT: '''
Пожалуйста, выберите действие:
''',
mod_table_operate.Messages.SELECT_TO_EDIT: '''
Выберите пользователя, у которого вы хотите отредактировать данные.
''',
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_NAME): f'''
Текущее имя пользователя:
#{user_name_field}
Введите новое имя пользователя:
''',
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_FAMILY_NAME): f'''
Текущая фамилия пользователя:
#{user_family_name_field}
Введите новую фамилию пользователя:
''',
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_MIDDLE_NAME): f'''
Текущее отчество пользователя:
#{user_middle_name_field}
Введите новое отчество пользователя:
''',
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_BIRTHDAY): f'''
Текущая дата рождения пользователя:
#{user_birthday_field}
Введите новую дату рождения пользователя:
''',
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_ADDRESS): f'''
Текущий адрес пользователя:
#{user_address_field}
Введите новый адрес пользователя:
''',
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_CONTACTS): f'''
Текущие контакты пользователя:
#{user_contacts_field}
Введите новые контакты пользователя:
''',
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_CONFIRM): f'''
Текущее подтвержение пользователя:
#{user_confirm_field}
Введите новое подтверждение пользователя:
''',
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.ACCESS): f'''
Текущий доступ к проекту:
#{access_field}
{user_access.user_access_readme}
Введите новую строку доступа:
''',
mod_table_operate.Messages.SUCCESS_EDIT: '''✅ Проект успешно отредактирован!''',
mod_table_operate.Messages.SELECT_TO_DELETE: '''
Выберите пользователя, у которого вы хотите удалить авторизованные данные.
''',
mod_table_operate.Messages.SUCCESS_DELETE: '''✅ Данные пользователя успешно удалены!''',
}
messages_subscribes = {
mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ADD):f'''Данные по авторизации созданы''',
mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT):f'''Данные по авторизации отредактированы''',
mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL):f'''Данные по авторизации удалены''',
mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_EDIT):f'''Данные по авторизации отредактированы #item_id''',
mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_DEL):f'''Данные по авторизации удалены #item_id''',
}
messages.update(messages_subscribes)
messages_order_status = {
mod_table_operate.EnumMessageForView(ConfirmStatus.YES): f'''Да, все данные верны''',
mod_table_operate.EnumMessageForView(ConfirmStatus.NO): f'''Нет, данные не верны''',
}
messages.update(messages_order_status)
class ModuleAuthorize(mod_table_operate.TableOperateModule):
def __init__(self, a_ParentModName, a_ChildModName, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_BotSubscribes, a_Log):
super().__init__(table, messages, button_names, a_ParentModName, a_ChildModName, init_access, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_BotSubscribes, a_Log)
def GetName(self):
return module_name

8
bot_sys/bd_table.py

@ -38,6 +38,14 @@ class TableFieldDestiny(Enum):
OTHER = auto()
VERSION_NUMBER = auto()
SUB_VERSION_NUMBER = auto()
USER_ID = auto()
USER_NAME = auto() # Имя
USER_FAMILY_NAME = auto() # Фамилия
USER_MIDDLE_NAME = auto() # Отчество
USER_BIRTHDAY = auto() # Дата рождения
USER_ADDRESS = auto() # Адресс
USER_CONTACTS = auto() # контакты
USER_CONFIRM = auto() # подтверждение
class TableField:
def __init__(self, a_Name, a_Destiny : TableFieldDestiny, a_Type : TableFieldType, a_Enum = None):

7
main.py

@ -6,7 +6,7 @@ import os
from bot_sys import config, log, aiogram_bot, bot_messages, bd_table, user_access
from bot_modules import mod_agregator, start, profile, backup, users_groups_agregator, access, projects, tasks, needs, comments
from bot_modules import languages, messages, buttons, users, groups, user_in_groups
from bot_modules import orders, all_orders
from bot_modules import orders, all_orders, authorize
from bot_modules import bd_version
from bot_sys import bot_subscribes
@ -110,6 +110,10 @@ g_ModuleAgregator.AddModule(mod_subscribe)
mod_bd_version = bd_version.ModuleBDVersion(g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_BotSubscribes, g_Log)
g_ModuleAgregator.AddModule(mod_bd_version)
child_mod_name_list = [mod_start_name]
mod_authorize = authorize.ModuleAuthorize(None, None, child_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_BotSubscribes, g_Log)
g_ModuleAgregator.AddModule(mod_authorize)
child_mod_name_list = [
mod_profile.GetName(),
mod_backup.GetName(),
@ -121,6 +125,7 @@ child_mod_name_list = [
mod_all_orders.GetName(),
mod_subscribe.GetName(),
mod_bd_version.GetName(),
mod_authorize.GetName(),
]
mod_start = start.ModuleStart(child_mod_name_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_BotSubscribes, g_Log)
g_ModuleAgregator.AddModule(mod_start)

Loading…
Cancel
Save