mirror of
https://github.com/Garmelon/PFERD.git
synced 2023-12-21 10:23:01 +01:00
d63494908d
The simple authenticator now properly invalidates its credentials. Also, the invalidation functions have been given better names and documentation.
77 lines
2.0 KiB
Python
77 lines
2.0 KiB
Python
from abc import ABC, abstractmethod
|
|
from typing import Tuple
|
|
|
|
from .conductor import TerminalConductor
|
|
from .config import Config, Section
|
|
|
|
|
|
class AuthLoadException(Exception):
|
|
pass
|
|
|
|
|
|
class AuthException(Exception):
|
|
pass
|
|
|
|
|
|
class AuthSection(Section):
|
|
pass
|
|
|
|
|
|
class Authenticator(ABC):
|
|
def __init__(
|
|
self,
|
|
name: str,
|
|
section: AuthSection,
|
|
config: Config,
|
|
conductor: TerminalConductor,
|
|
) -> None:
|
|
"""
|
|
Initialize an authenticator from its name and its section in the config
|
|
file.
|
|
|
|
If you are writing your own constructor for your own authenticator,
|
|
make sure to call this constructor first (via super().__init__).
|
|
|
|
May throw an AuthLoadException.
|
|
"""
|
|
|
|
self.name = name
|
|
self.conductor = conductor
|
|
|
|
@abstractmethod
|
|
async def credentials(self) -> Tuple[str, str]:
|
|
pass
|
|
|
|
def invalidate_credentials(self) -> None:
|
|
"""
|
|
Tell the authenticator that some or all of its credentials are invalid.
|
|
|
|
Authenticators should overwrite this function if they have a way to
|
|
deal with this issue that is likely to result in valid credentials
|
|
(e. g. prompting the user).
|
|
"""
|
|
|
|
raise AuthException("Invalid credentials")
|
|
|
|
def invalidate_username(self) -> None:
|
|
"""
|
|
Tell the authenticator that specifically its username is invalid.
|
|
|
|
Authenticators should overwrite this function if they have a way to
|
|
deal with this issue that is likely to result in valid credentials
|
|
(e. g. prompting the user).
|
|
"""
|
|
|
|
raise AuthException("Invalid username")
|
|
|
|
def invalidate_password(self) -> None:
|
|
"""
|
|
Tell the authenticator that specifically its password is invalid.
|
|
|
|
Authenticators should overwrite this function if they have a way to
|
|
deal with this issue that is likely to result in valid credentials
|
|
(e. g. prompting the user).
|
|
"""
|
|
|
|
raise AuthException("Invalid password")
|