improved register endpoint, etc.

This commit is contained in:
Tobias Kurze
2020-08-05 16:36:14 +02:00
parent 16e4231807
commit 82b3e78488
5 changed files with 31 additions and 17 deletions

View File

@@ -22,11 +22,13 @@ from random import randint
from flask_login import logout_user, login_user
from typing import Iterable
from flask_restx import Resource, fields
from flask_restx import Resource, fields, abort, inputs
from sqlalchemy.exc import IntegrityError
from werkzeug.routing import BuildError
from backend import db, app, jwt_extended
from backend.api import auth_api_bp, auth_api_providers_ns, auth_api_register_ns
from backend.api.models import user_model
from backend.auth import AUTH_PROVIDERS, oidc_auth
from backend.auth.oidc_config import PROVIDER_NAME
from backend.models.user_model import User, Group, BlacklistToken
@@ -53,15 +55,6 @@ class AuthProviders(Resource):
return get_auth_providers()
@auth_api_bp.route('/register', methods=('POST',))
def register():
data = request.get_json()
user = User(**data)
db.session.add(user)
db.session.commit()
return jsonify(user.to_dict()), 201
@auth_api_register_ns.route('/')
@auth_api_register_ns.expect(auth_api_register_ns.model('RegisterModel', {
'nickname': fields.String(required=False, description='The user\'s nickname'),
@@ -69,12 +62,24 @@ def register():
'last_name': fields.String(required=False, description='The user\'s last name'),
'lang': fields.String(required=False, description='The user\'s preferred language'),
'timezone': fields.String(required=False, description='The user\'s preferred timezone'),
'email': fields.String(required=True, description='The user\'s e-mail address'),
'email': fields.String(required=True, type=inputs.email(), description='The user\'s e-mail address'),
'password': fields.String(required=False, description='The group\'s name')
}))
class AuthProviders(Resource):
def get(self):
return register()
class Registration(Resource):
@auth_api_register_ns.marshal_list_with(user_model)
def post(self):
print("in registration")
data = request.get_json()
try:
user = User(**data)
db.session.add(user)
db.session.commit()
pprint(user.to_dict())
return user, 201
except IntegrityError as e:
abort(400, message=str(e).split('\n')[0].split(')')[1].strip())
except AssertionError as e:
abort(400, message=str(e))
@auth_api_bp.route('/login', methods=('GET', 'POST',))