diff --git a/nativeauthenticator/handlers.py b/nativeauthenticator/handlers.py index 0e49717..f38ad97 100644 --- a/nativeauthenticator/handlers.py +++ b/nativeauthenticator/handlers.py @@ -61,9 +61,12 @@ def get_result_message(self, user): return alert, message async def post(self): - username = self.get_body_argument('username', strip=False) - password = self.get_body_argument('password', strip=False) - user = self.authenticator.get_or_create_user(username, password) + user_info = { + 'username': self.get_body_argument('username', strip=False), + 'pw': self.get_body_argument('pw', strip=False), + 'email': self.get_body_argument('email', '', strip=False), + } + user = self.authenticator.get_or_create_user(**user_info) alert, message = self.get_result_message(user) diff --git a/nativeauthenticator/nativeauthenticator.py b/nativeauthenticator/nativeauthenticator.py index 2cff990..f4ad9b5 100644 --- a/nativeauthenticator/nativeauthenticator.py +++ b/nativeauthenticator/nativeauthenticator.py @@ -149,12 +149,14 @@ def get_or_create_user(self, username, pw, **kwargs): if username in self.admin_users or self.open_signup: infos.update({'is_authorized': True}) - user_info = UserInfo(**infos) - user = User(name=username) + try: + user_info = UserInfo(**infos) + user = User(name=username) + except AssertionError: + return self.db.add_all([user_info, user]) self.db.commit() - return user_info def change_password(self, username, new_password): diff --git a/nativeauthenticator/templates/signup.html b/nativeauthenticator/templates/signup.html index 85e3bc6..42bbeec 100644 --- a/nativeauthenticator/templates/signup.html +++ b/nativeauthenticator/templates/signup.html @@ -49,7 +49,7 @@