diff --git a/app/__init__.py b/app/__init__.py index d29b2d8..4cbf8e6 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -16,8 +16,17 @@ @login_manager.user_loader def load_user(user_id): - return User.get(email=user_id) + try: + return User.get(id=user_id) + except User.DoesNotExist: + pass +@login_manager.unauthorized_handler +def unauthorized_callback(): + return redirect('/login') + +from app.models.core import db User.create_table(fail_silently=True) +db.register_fields({'primary_key': 'BIGINT AUTOINCREMENT'}) from app.views.accounts import * diff --git a/app/forms/user_forms.py b/app/forms/user_forms.py index 896db38..fc039de 100644 --- a/app/forms/user_forms.py +++ b/app/forms/user_forms.py @@ -5,4 +5,5 @@ class LoginForm(Form): email = StringField('email', validators=[DataRequired()]) + username = StringField('username', validators=[DataRequired()]) password = StringField('password', validators=[DataRequired()]) diff --git a/app/models/accounts.py b/app/models/accounts.py index 09e03b1..3d87679 100644 --- a/app/models/accounts.py +++ b/app/models/accounts.py @@ -3,9 +3,12 @@ from werkzeug import security from app.models.core import Base -class UserAlreadyExists(BaseException): +class EmailAlreadyUsed(BaseException): pass +class UsernameAlreadyUsed(BaseException): + pass + class User(Base, UserMixin): ''' User model that represnts all user types in the app @@ -13,17 +16,24 @@ class User(Base, UserMixin): Note: should only contain methods and fields related to this functionalties only ''' - email = TextField(primary_key=True) + email = TextField(unique=True) + username = TextField(unique = True) password = TextField() + id = PrimaryKeyField() @staticmethod - def register(email, password): + def register(email, username, password): password = security.generate_password_hash(password, method='pbkdf2:sha1', salt_length=8) try: - user = User.get(email=email) - raise UserAlreadyExists + if User.get(email=email) : + raise EmailAlreadyUsed except User.DoesNotExist: - user = User.create(email=email, password=password) + try : + if User.get(username=username) : + raise UsernameAlreadyUsed + except User.DoesNotExist : + pass + user = User.create(email=email, username=username, password=password) return user def authenticat_password(self, password): @@ -31,4 +41,4 @@ def authenticat_password(self, password): def get_id(self): - return self.email + return self.id diff --git a/app/templates/edit_profile.html b/app/templates/edit_profile.html new file mode 100644 index 0000000..2c9e71b --- /dev/null +++ b/app/templates/edit_profile.html @@ -0,0 +1,13 @@ +{%extends 'base.html'%} +{% block title %} +
username :{{ user.username }}
+email : {{user.email}}
+{%endblock%} \ No newline at end of file diff --git a/app/templates/register.html b/app/templates/register.html index c0f93f2..7f93354 100644 --- a/app/templates/register.html +++ b/app/templates/register.html @@ -5,6 +5,7 @@ {%block content%}