Skip to content
Snippets Groups Projects

Resolve "user login and authentication"

+ 20
12
@@ -2,19 +2,23 @@ from flask import Flask, request
from flask_restful import Api, Resource
import os.path
from datetime import datetime
import re
from flask_bcrypt import Bcrypt
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
api = Api(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(255), nullable=False)
email = db.Column(db.String(255), nullable=False)
email = db.Column(db.String(255), nullable=False, unique=True)
pwd = db.Column(db.String(255), nullable=False)
admin = db.Column(db.Boolean, nullable=False, default=False)
accepted = db.Column(db.Boolean, nullable=False, default=False)
@@ -91,19 +95,23 @@ class FindSalamanderInfo(Resource):
class RegisterUser(Resource):
@staticmethod
def post():
output = {"message": "something went wrong"}
data = request.form
if not data['name'] or not data['email'] or not data['password'] or not data['confirmPassword']:
output = {"message": "data is incorrect"}
else:
if data['name'] or data['email'] or data['password'] or data['confirmPassword']:
if data['password'] == data['confirmPassword']:
user = User(name=data['name'], email=data['email'], pwd=data['password'])
db.session.add(user)
db.session.commit()
output = {"message": "user added"}
email_regex = "^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$"
user = db.session.query(User).filter_by(email=data['email']).first()
if user is None and re.search(email_regex, data['email']):
password_hash = bcrypt.generate_password_hash(data['password'])
new_user = User(name=data['name'], email=data['email'], pwd=password_hash)
db.session.add(new_user)
db.session.commit()
output = {"message": "new user created"}
else:
output = {"message": "invalid email"}
else:
output = {"message": "password does not match"}
else:
output = {"message": "wrong data posted"}
return output
Loading