Skip to content

Commit

Permalink
Modified user, db_handler and token files
Browse files Browse the repository at this point in the history
- Added to_json function to User model that
exposes less information to the client.

- Added types to methods parameters

- Added id column to token_blacklist table
  • Loading branch information
DoRTaL94 committed Apr 12, 2020
1 parent ba95634 commit aeac940
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 15 deletions.
1 change: 1 addition & 0 deletions backend/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from flask_sqlalchemy import SQLAlchemy
import os


db_role = 'postgres'
db_password = 'edison'
db_url = '0.0.0.0'
Expand Down
3 changes: 2 additions & 1 deletion backend/models/token.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
class Token(db.Model):
__tablename__ = 'token_blacklist'

jti = db.Column(db.String(150), primary_key=True)
id = db.Column(db.Integer, primary_key=True)
jti = db.Column(db.String(150), nullable=False, unique=True)
creation_timestamp = db.Column(db.TIMESTAMP(timezone=False), nullable=False)

def __repr__(self):
Expand Down
20 changes: 14 additions & 6 deletions backend/models/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,21 @@ class User(db.Model):
__tablename__ = 'users'
__table_args__ = {'extend_existing': True}

id = db.Column(db.Integer, primary_key = True)
username = db.Column(db.String(50), nullable = False, unique = True)
password = db.Column(db.String(150), nullable = False)
first_name = db.Column(db.String(50), nullable = False)
last_name = db.Column(db.String(50), nullable = False)
email = db.Column(db.String(150), nullable = False)
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(50), nullable=False, unique=True)
password = db.Column(db.String(150), nullable=False)
first_name = db.Column(db.String(50), nullable=False)
last_name = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(150), nullable=False)

def to_json(self):
return {
"username": self.username,
"first_name": self.first_name,
"last_name": self.last_name,
"email": self.email
}

def __repr__(self):
return f"<User: id = {self.id}, first_name = {self.first_name}, " \
f"last_name = {self.last_name}, username = {self.username}, email = {self.email}>"
16 changes: 8 additions & 8 deletions backend/services/db_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,29 @@
class DBHandler:

@staticmethod
def get_by_username(model, username):
def get_by_username(model: db.Model, username: str):
return model.query.filter_by(username=username).first()

@staticmethod
def get_by_id(model, _id):
def get_by_id(model: db.Model, _id: int):
return model.query.get(_id)

@staticmethod
def get_all(model):
def get_all(model: db.Model):
return model.query.all()

@staticmethod
def add(model):
def add(model: db.Model):
db.session.add(model)
db.session.commit()

@staticmethod
def delete(model):
def delete(model: db.Model):
db.session.delete(model)
db.session.commit()

@staticmethod
def update_user(updated_user, username):
def update_user(updated_user: db.Model, username: str):
user_to_be_updated = DBHandler.get_by_username(models.User, username)
if user_to_be_updated is None:
raise ValueError(f"The user with username: {username} is not in the DB.")
Expand All @@ -43,11 +43,11 @@ def update_user(updated_user, username):
return user_to_be_updated

@staticmethod
def add_blacklisted_jti(jti):
def add_blacklisted_jti(jti: str):
blacklisted_token = models.Token(jti, datetime.now().strftime("%m/%d/%Y, %H:%M:%S"))
db.session.add(blacklisted_token)
db.session.commit()

@staticmethod
def is_jti_blacklisted(jti):
def is_jti_blacklisted(jti: str):
return models.Token.query.get(jti) is not None

0 comments on commit aeac940

Please sign in to comment.