feat(usermodel): add User class

This commit is contained in:
Julian Lobbes 2022-11-10 00:14:53 +01:00
parent 1b9dc66b08
commit 4c9151e93c
2 changed files with 51 additions and 0 deletions

50
lumi2/usermodel.py Normal file
View File

@ -0,0 +1,50 @@
"""Provides the application-internal class-based models for users and groups.
Also provides methods to convert LDAP user/group entries into user/group objects
and vice versa.
"""
from PIL import Image
class User:
"""Class model for a user.
Attributes
----------
username : str
The user's username. Can contain only uppercase/lowercase latin characters,
numbers, hyphens, underscores and periods. Must start with a latin character.
Minimum length is 1, maximum length is 64 characters.
password_hash : str
Base64-encoded SHA512 hash of the user's password.
email : str
The user's email address.
Must contain an '@'-character, may not contain any whitespace.
first_name : str
The user's first name.
May not contain any whitespace.
last_name : str
The user's last name.
May not contain any whitespace.
display_name : str
The user's display name (as required by some LDAP-enabled applications).
May not contain any whitespace.
picture : PIL.Image
The user's profile picture as a PIL Image object.
"""
def __init__(
self,
username: str, password_hash: str, email: str,
first_name: str, last_name: str, display_name: str,
picture: Image,
):
self.username = username
self.password_hash = password_hash
self.email = email
self.first_name = first_name
self.last_name = last_name
self.display_name = display_name
self.picture = picture
# TODO validate params

View File

@ -1,3 +1,4 @@
Flask==2.2.2
ldap3==2.9.1
pytest==7.2.0
Pillow==9.3.0