Added models and views
This commit is contained in:
@@ -2,13 +2,13 @@ from ..modules import db
|
||||
from ..tools.encryption import decrypt, encrypt
|
||||
from ..tools.logs import write
|
||||
|
||||
import secrets
|
||||
|
||||
from flask import flash, jsonify, session
|
||||
from flask.helpers import url_for
|
||||
from flask_login import UserMixin, login_user, logout_user
|
||||
from flask_login import current_user, login_user, logout_user, UserMixin
|
||||
from werkzeug.security import check_password_hash, generate_password_hash
|
||||
|
||||
import secrets
|
||||
from uuid import uuid4
|
||||
class User(UserMixin, db.Model):
|
||||
id = db.Column(db.String(36), primary_key=True)
|
||||
username = db.Column(db.String(128), nullable=False)
|
||||
@@ -20,6 +20,12 @@ class User(UserMixin, db.Model):
|
||||
def __repr__(self):
|
||||
return f'<user {self.username}> was added with <id {self.id}>.'
|
||||
|
||||
@property
|
||||
def generate_id(self): raise AttributeError('generate_id is not a readable attribute.')
|
||||
|
||||
generate_id.setter
|
||||
def generate_id(self): self.id = uuid4.hex()
|
||||
|
||||
@property
|
||||
def set_username(self): raise AttributeError('set_username is not a readable attribute.')
|
||||
|
||||
@@ -57,17 +63,11 @@ class User(UserMixin, db.Model):
|
||||
return True, f'User {self.get_username()} was created successfully.'
|
||||
|
||||
def login(self, remember:bool=False):
|
||||
self.authenticated = True
|
||||
db.session.add(self)
|
||||
db.session.commit()
|
||||
login_user(self, remember = remember)
|
||||
write('users.log', f'User \'{self.get_username()}\' has logged in.')
|
||||
flash(message=f'Welcome {self.get_username()}', category='success')
|
||||
|
||||
def logout(self):
|
||||
self.authenticated = False
|
||||
db.session.add(self)
|
||||
db.session.commit()
|
||||
session['remembered_username'] = self.get_username()
|
||||
logout_user()
|
||||
write('users.log', f'User \'{self.get_username()}\' has logged out.')
|
||||
@@ -93,4 +93,13 @@ class User(UserMixin, db.Model):
|
||||
username = self.get_username()
|
||||
db.session.delete(self)
|
||||
db.session.commit()
|
||||
write('users.log', f'User \'{username}\' was deleted.') # TODO add current user
|
||||
write('users.log', f'User \'{username}\' was deleted by \'{current_user.get_username()}\'.')
|
||||
|
||||
def update(self, password:str=None, email:str=None):
|
||||
if not password and not email: return False, jsonify({'error': 'There were no changes requested.'})
|
||||
if password: self.set_password(password)
|
||||
if email: self.set_email(email)
|
||||
db.session.commit()
|
||||
message = f'Information for user {self.get_username()} has been updated by {current_user.get_username()}.'
|
||||
write('system.log', message)
|
||||
return True, jsonify({'success': message})
|
||||
|
Reference in New Issue
Block a user