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.
|
|
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()
|