| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import asyncio
- from .proxy import proxy
- from .apikey import apikey
- from .password import password
- from .field_generator import field_generator
- from .model import model
- from .validators import validators
- class user(model):
- id = field_generator.id()
- nick = field_generator.nick()
- secret = field_generator.secret()
- apikey = field_generator.apikey()
- is_admin = field_generator.permissions()
- def _validators(self) -> dict:
- return {
- "nick": validators.nick,
- "apikey": validators.apikey
- }
- class user_proxy(proxy):
- @classmethod
- async def create(cls, nick: str, plain_password: str) -> proxy:
- secret = await password.from_plain_text(plain_password)
- key = apikey.create()
- return cls(user(
- nick = nick,
- secret = secret.result(),
- apikey = key.export(),
- is_admin = False
- ))
- def is_admin(self) -> bool:
- return self._target.is_admin
- def make_admin(self) -> None:
- self._target.is_admin = True
-
- def make_standard_user(self) -> None:
- self._target.is_admin = False
- async def set_password(self, plain_password: str) -> None:
- secret = await password.from_plain_text(plain_password)
- self._target.secret = secret.result()
- async def compare_password(self, target: str) -> bool:
- secret = await password.from_hash(self._target.secret)
- result = await secret.compare(target)
- return result
- def drop_sessions(self) -> None:
- self._target.apikey = apikey.create().export()
|