from dataclasses import dataclass, field, asdict import json from pathlib import Path import csv from typing import Optional @dataclass class User: lastname: str firstname: str username: str password: str = field(repr=False) title: str admin: bool write: bool department: list costcenter: list class Auth: def __init__(self) -> None: with open(Path(__file__).parent.parent.joinpath('config', 'users.csv'), 'r') as frh: csv_reader = csv.DictReader(frh, delimiter=';') self.users = dict([(row['username'], self.parse_users_csv(row)) for row in csv_reader]) def parse_users_csv(self, row: dict) -> User: row['admin'] = (row['admin'] == 'True') row['write'] = (row['write'] == 'True') row['department'] = json.loads(row['department']) row['costcenter'] = json.loads(row['costcenter']) return User(**row) def get_user(self, username, password) -> Optional[dict]: if username not in self.users: return None # if self.users[username].password != password: # return None if username != password: # nur zu Testzwecken return None res = asdict(self.users[username]) del(res['password']) return res if __name__ == '__main__': print(Auth().get_user('TKP', 'G9zHjA'))