You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
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
|