Skip to content

Commit

Permalink
Remove email from user, instead use plain username
Browse files Browse the repository at this point in the history
  • Loading branch information
MattiasDC committed Jan 21, 2021
1 parent 3ca8de1 commit 306e447
Show file tree
Hide file tree
Showing 8 changed files with 18 additions and 19 deletions.
2 changes: 1 addition & 1 deletion app/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class BaseConfig(object):
DB_PWD)
SQLALCHEMY_TRACK_MODIFICATIONS = False
DB_SCHEMA = os.environ['db_schema']
ADMIN_EMAIL = os.environ['admin_email']
ADMIN_USERNAME = os.environ['admin_username']
ADMIN_PWD = get_docker_secret('admin_pwd')

class DevelopmentConfig(BaseConfig):
Expand Down
10 changes: 5 additions & 5 deletions app/login/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@
login.login_view = 'login.login'

def create_admin():
admin_email = app.config["ADMIN_EMAIL"]
if not User.query.filter_by(email=admin_email).count():
admin = User(email=admin_email, password=app.config["ADMIN_PWD"], admin=True)
admin_username = app.config["ADMIN_USERNAME"]
if not User.query.filter_by(username=admin_username).count():
admin = User(username=admin_username, password=app.config["ADMIN_PWD"], admin=True)
db.session.add(admin)
db.session.commit()

@login.user_loader
def load_user(email):
return get_user(email)
def load_user(username):
return get_user(username)

@login.unauthorized_handler
def unauthorized_handler():
Expand Down
4 changes: 2 additions & 2 deletions app/login/forms.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField, SubmitField
from wtforms.validators import DataRequired, Email
from wtforms.validators import DataRequired

class LoginForm(FlaskForm):
email = StringField('Email', validators=[DataRequired(), Email()])
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
rememberMe = BooleanField('Remember Me')
submit = SubmitField('Sign In')
10 changes: 5 additions & 5 deletions app/login/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
from utils.password_utils import check_password, get_hashed_password

class User(db.Model):
email = db.Column(db.String(120), primary_key=True, nullable=False)
username = db.Column(db.String(120), primary_key=True, nullable=False)
_password = db.Column(db.String, nullable=False)
admin = db.Column(db.Boolean, nullable=False)

def __repr__(self):
return '<User %r>' % self.email
return '<User %r>' % self.username

@property
def password(self):
Expand All @@ -26,16 +26,16 @@ def __init__(self, user):
self.user = user

def get_id(self):
return self.user.email
return self.user.username

def verify_password(self, password):
return self.user.verify_password(password)

def is_admin(self):
return self.user.admin

def get_user(email):
user = User.query.filter_by(email=email).first()
def get_user(username):
user = User.query.filter_by(username=username).first()
if not user:
return None
return FlaskUser(user)
6 changes: 3 additions & 3 deletions app/login/templates/login.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ <h1>Sign In</h1>
<form action="" method="post">
{{ form.hidden_tag() }}
<p>
{{ form.email.label }}<br>
{{ form.email(size=50) }}<br>
{% for error in form.email.errors %}
{{ form.username.label }}<br>
{{ form.username(size=50) }}<br>
{% for error in form.username.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
Expand Down
2 changes: 1 addition & 1 deletion app/login/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def login():
return redirect(url_for('main.home'))
form = LoginForm()
if form.validate_on_submit():
user = get_user(form.email.data)
user = get_user(form.username.data)
if user is not None and user.verify_password(form.password.data):
login_user(user, remember=form.rememberMe.data)
next_page = request.args.get('next')
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ services:
- db_port=1433
- db_database=bks
- db_username=bks
- admin_email=admin@admin.com
- admin_username=admin
secrets:
- db_pwd
- flask_secret_key
Expand Down
1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ Flask-SQLAlchemy
pyodbc
bcrypt
click
email_validator
get-docker-secret
jsonpickle
python-dateutil

0 comments on commit 306e447

Please sign in to comment.