Make sure usernames and emails are unique and message is sent to user.
This commit is contained in:
parent
730f4f2d66
commit
1574be3c07
4 changed files with 23 additions and 6 deletions
|
@ -14,8 +14,11 @@ class DataModelException(Exception):
|
|||
|
||||
def create_user(username, password, email):
|
||||
pw_hash = bcrypt.hashpw(password, bcrypt.gensalt())
|
||||
new_user = User.create(username=username, password_hash=pw_hash,
|
||||
email=email)
|
||||
try:
|
||||
new_user = User.create(username=username, password_hash=pw_hash,
|
||||
email=email)
|
||||
except Exception as ex:
|
||||
raise DataModelException(ex.message)
|
||||
return new_user
|
||||
|
||||
|
||||
|
|
|
@ -16,6 +16,11 @@ from auth.permissions import (ReadRepositoryPermission,
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@app.errorhandler(model.DataModelException)
|
||||
def handle_dme(ex):
|
||||
return make_response(ex.message, 400)
|
||||
|
||||
|
||||
@app.route('/api/')
|
||||
def welcome():
|
||||
return make_response('welcome', 200)
|
||||
|
@ -45,8 +50,6 @@ def create_repo_api():
|
|||
@login_required
|
||||
def list_repos_api():
|
||||
def repo_view(repo_perm):
|
||||
|
||||
|
||||
return {
|
||||
'namespace': repo_perm.repository.namespace,
|
||||
'name': repo_perm.repository.name,
|
||||
|
|
|
@ -11,6 +11,7 @@ from app import app
|
|||
from auth.auth import (process_auth, get_authenticated_user,
|
||||
get_validated_token)
|
||||
from util.names import parse_namespace_repository, parse_repository_name
|
||||
from util.validation import validate_email
|
||||
from auth.permissions import (ModifyRepositoryPermission,
|
||||
ReadRepositoryPermission, UserPermission)
|
||||
|
||||
|
@ -46,8 +47,11 @@ def generate_headers(f):
|
|||
@app.route('/v1/users/', methods=['POST'])
|
||||
def create_user():
|
||||
user_data = request.get_json()
|
||||
model.create_user(user_data['username'], user_data['password'],
|
||||
user_data['email'])
|
||||
email = user_data['email'].strip()
|
||||
if not validate_email(email):
|
||||
return make_response('Invalid email address: %s' % email, 400)
|
||||
|
||||
model.create_user(user_data['username'], user_data['password'], email)
|
||||
return make_response('Created', 201)
|
||||
|
||||
|
||||
|
|
7
util/validation.py
Normal file
7
util/validation.py
Normal file
|
@ -0,0 +1,7 @@
|
|||
import re
|
||||
|
||||
|
||||
def validate_email(email_address):
|
||||
if re.match(r'[^@]+@[^@]+\.[^@]+', email_address):
|
||||
return True
|
||||
return False
|
Reference in a new issue