An ebook/comic library service and web client
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

48 lines
1.2 KiB

from datetime import datetime
from typing import Optional
from atheneum import app, db
from atheneum.model import User
from atheneum.service import authentication_service
def register(name: str, password: str, role: str) -> User:
pw_hash, pw_revision = authentication_service.get_password_hash(password)
new_user = User(
name=name,
role=role,
password_hash=pw_hash,
password_revision=pw_revision,
creation_time=datetime.now(),
version=0)
db.session.add(new_user)
db.session.commit()
app.logger.info('Registered new user: %s with role: %s', name, role)
return new_user
def delete(user: User) -> bool:
existing_user = db.session.delete(user)
if existing_user is None:
db.session.commit()
return True
return False
def update_last_login_time(user: User):
user.last_login_time = datetime.now()
db.session.commit()
def update_password(user: User, password: str):
pw_hash, pw_revision = authentication_service.get_password_hash(
password)
user.password_hash = pw_hash
user.password_revision = pw_revision
db.session.commit()
def find_by_name(name: str) -> Optional[User]:
return User.query.filter_by(name=name).first()