mirror of
https://github.com/janeczku/calibre-web
synced 2024-11-01 15:46:21 +00:00
66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
|
class UserMixin:
|
||
|
"""
|
||
|
This provides default implementations for the methods that Flask-Login
|
||
|
expects user objects to have.
|
||
|
"""
|
||
|
|
||
|
# Python 3 implicitly set __hash__ to None if we override __eq__
|
||
|
# We set it back to its default implementation
|
||
|
__hash__ = object.__hash__
|
||
|
|
||
|
@property
|
||
|
def is_active(self):
|
||
|
return True
|
||
|
|
||
|
@property
|
||
|
def is_authenticated(self):
|
||
|
return self.is_active
|
||
|
|
||
|
@property
|
||
|
def is_anonymous(self):
|
||
|
return False
|
||
|
|
||
|
def get_id(self):
|
||
|
try:
|
||
|
return str(self.id)
|
||
|
except AttributeError:
|
||
|
raise NotImplementedError("No `id` attribute - override `get_id`") from None
|
||
|
|
||
|
def __eq__(self, other):
|
||
|
"""
|
||
|
Checks the equality of two `UserMixin` objects using `get_id`.
|
||
|
"""
|
||
|
if isinstance(other, UserMixin):
|
||
|
return self.get_id() == other.get_id()
|
||
|
return NotImplemented
|
||
|
|
||
|
def __ne__(self, other):
|
||
|
"""
|
||
|
Checks the inequality of two `UserMixin` objects using `get_id`.
|
||
|
"""
|
||
|
equal = self.__eq__(other)
|
||
|
if equal is NotImplemented:
|
||
|
return NotImplemented
|
||
|
return not equal
|
||
|
|
||
|
|
||
|
class AnonymousUserMixin:
|
||
|
"""
|
||
|
This is the default object for representing an anonymous user.
|
||
|
"""
|
||
|
|
||
|
@property
|
||
|
def is_authenticated(self):
|
||
|
return False
|
||
|
|
||
|
@property
|
||
|
def is_active(self):
|
||
|
return False
|
||
|
|
||
|
@property
|
||
|
def is_anonymous(self):
|
||
|
return True
|
||
|
|
||
|
def get_id(self):
|
||
|
return
|