54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import asyncio
|
|
import os
|
|
|
|
from api.db.connection.session import get_connection
|
|
from api.db.tables.account import account_keyring_table, account_table, AccountRole, KeyStatus, KeyType
|
|
from api.utils.hasher import hasher
|
|
from api.utils.key_id_gen import KeyIdGenerator
|
|
|
|
INIT_LOCK_FILE = "../init.lock"
|
|
DEFAULT_LOGIN = "vorkout"
|
|
|
|
|
|
async def init():
|
|
if os.path.exists(INIT_LOCK_FILE):
|
|
print("Sorry, service is already initialized")
|
|
return
|
|
|
|
async with get_connection() as conn:
|
|
password = hasher.generate_password()
|
|
hashed_password = hasher.hash_data(password)
|
|
|
|
create_user_query = account_table.insert().values(
|
|
name=DEFAULT_LOGIN,
|
|
login=DEFAULT_LOGIN,
|
|
role=AccountRole.OWNER,
|
|
)
|
|
|
|
res = await conn.execute(create_user_query)
|
|
user_id = res.lastrowid
|
|
|
|
create_key_query = account_keyring_table.insert().values(
|
|
owner_id=user_id,
|
|
key_type=KeyType.PASSWORD,
|
|
key_id=KeyIdGenerator(),
|
|
key_value=hashed_password,
|
|
status=KeyStatus.ACTIVE,
|
|
)
|
|
|
|
await conn.execute(create_key_query)
|
|
|
|
await conn.commit()
|
|
|
|
await conn.close()
|
|
|
|
with open(INIT_LOCK_FILE, "w") as lock_file:
|
|
lock_file.write("initialized\n")
|
|
|
|
print(f"Login: {DEFAULT_LOGIN}")
|
|
print(f"Password: {password}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.get_event_loop().run_until_complete(init())
|