jw-python/tools/python/jwutils/auth/dummy/Auth.py
Jan Lindemann bfd0544ff8 Fix errors reported by mypy
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-10-13 12:45:51 +02:00

93 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
from typing import Optional, Union
from ...log import *
from ... import Config
from .. import Access
from .. import Auth as AuthBase
from .. import Group as GroupBase
from .. import User as UserBase
from .. import ProjectFlags
class Group(GroupBase): # export
def __init__(self, auth: AuthBase, name: str):
self.__name = name
self.__auth = auth
def _name(self) -> str:
return self.__name
class User(UserBase): # export
def __init__(self, auth: AuthBase, name: str, conf: Config):
self.__name = name
self.__conf = conf
self.__auth = auth
self.__groups: Optional[list[GroupBase]] = None
self.__email: str = conf['email']
@property
def conf(self):
return self.__conf
def _name(self) -> str:
return self.__name
def _groups(self) -> list[GroupBase]:
if self.__groups is None:
name: str = ''
ret: list[GroupBase] = []
for name in self.conf['groups']:
ret.append(Group(self.__auth, name))
self.__groups = ret
return self.__groups
def _email(self) -> str:
return self.__email
class Auth(AuthBase): # export
def __init__(self, conf: Config):
super().__init__(conf)
self.___users: Optional[dict[str, UserBase]] = None
self.__groups = None
self.__current_user: UserBase|None = None
self.__user_by_email: Optional[dict[str, UserBase]] = None
@property
def __users(self) -> dict[str, UserBase]:
if self.___users is None:
ret: dict[str, UserBase] = {}
for name in self.conf.entries('user'):
conf = self.conf.branch('user.' + name)
ret[name] = User(self, name, conf)
self.___users = ret
return self.___users
def _access(self, what: str, access_type: Optional[Access], who: User|GroupBase|None) -> bool: # type: ignore
slog(WARNING, f'Returning False for {access_type} access to resource {what} by {who}')
return False
def _user(self, name) -> UserBase:
return self.__users[name]
def _users(self) -> dict[str, UserBase]:
return self.__users
def _current_user(self) -> UserBase:
if self.__current_user is None:
self.__current_user = self._user(self.conf['current_user'])
return self.__current_user
def _user_by_email(self, email: str) -> UserBase:
if self.__user_by_email is None:
ret: dict[str, UserBase] = dict()
for user in self.__users.values():
ret[user.email] = user
self.__user_by_email = ret
return self.__user_by_email[email]
def _projects(self, name, flags: ProjectFlags) -> list[str]:
return []