"""
The bootstrap_admin module: Admin user construction.
Provides functionality to create an admin user for the application.
"""
from Database.database import db
from Auth.auth import bcrypt
from Schema.admin import admin_schema
from Service.admin import create_admin, delete_admin, get_admin_user
[docs]def bootstrap_admin(app, force_bootstrap):
"""
The admin user setup function, used to gain user input of the desired admin credentials of the
applications admin user.
:param app: The Flask application to provide context
:type app: Flask application
:param force_bootstrap: A Boolean flag used to force new admin creation
:type force_bootstrap: Boolean
"""
with app.app_context():
if force_bootstrap or get_admin_user() == None:
delete_admin()
print('Creating Admin user...')
while True:
username = input('Admin username: ')
password = input('Admin password: ')
email = input('Admin email: ')
errors = admin_schema.validate({'username': username, 'password': password, 'email': email})
if len(errors) == 0:
break
print('Invalid admin credentials, username and password must be 8 characters long and email address must be valid')
create_admin(username, bcrypt.generate_password_hash(password), email)