44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
import glob
|
|
import secrets
|
|
import sys
|
|
|
|
import yaml
|
|
from flask import Flask, request
|
|
|
|
from user import User
|
|
|
|
|
|
class LaToSa:
|
|
|
|
def __init__(self, app: Flask):
|
|
self.users = [
|
|
User(app, 'micke', 'Micke Nordin', 'hej@mic.ke', 'S3cr3t!',
|
|
secrets.token_hex(32))
|
|
]
|
|
|
|
def get_users(self):
|
|
return self.users
|
|
|
|
def login_user(self, username, password):
|
|
for user in self.users:
|
|
if user.get_id() == username and user.check_password(password):
|
|
user.set_authenticated(True)
|
|
user.set_active(True)
|
|
print(f'Logged in {user.get_id()}', file=sys.stderr)
|
|
return user
|
|
print(f'Login failed for {username}', file=sys.stderr)
|
|
return None
|
|
|
|
def get_i18n(self, request: request):
|
|
language_files = glob.glob("i18n/*.yaml")
|
|
languages = {}
|
|
for lang in language_files:
|
|
filename = lang.split('/')
|
|
lang_code = filename[1].split('.')[0]
|
|
with open(lang, 'r', encoding='utf8') as file:
|
|
languages[lang_code] = yaml.safe_load(file.read())
|
|
|
|
supported_languages = list(languages.keys())
|
|
user_language = request.accept_languages.best_match(
|
|
supported_languages)
|
|
return languages[user_language]
|