Write survey data to backend (solves #70)

In this commit the survey data will be written into the database for the corresponding user. The usercheck works with the authtoken which is sent in the header
This commit is contained in:
cami 2021-06-28 02:19:51 +02:00
parent e320ab4c27
commit 2aae4e2b1b

View file

@ -17,6 +17,10 @@ class User(db.Model):
password = db.Column(db.Text) password = db.Column(db.Text)
roles = db.Column(db.Text) roles = db.Column(db.Text)
is_active = db.Column(db.Boolean, default=True, server_default='true') is_active = db.Column(db.Boolean, default=True, server_default='true')
age = db.Column(db.Integer)
gender = db.Column(db.Text)
education = db.Column(db.Text)
skills = db.Column(db.Text)
@property @property
def rolenames(self): def rolenames(self):
@ -128,7 +132,8 @@ def protected():
A protected endpoint. The auth_required decorator will require a header A protected endpoint. The auth_required decorator will require a header
containing a valid JWT containing a valid JWT
.. example:: .. example::
$ curl http://localhost:5000/api/protected -X GET \ $ curl http://
localhost:5000/api/protected -X GET \
-H "Authorization: Bearer <your_token>" -H "Authorization: Bearer <your_token>"
""" """
return {'message': f'protected endpoint (allowed user {flask_praetorian.current_user().username})'} return {'message': f'protected endpoint (allowed user {flask_praetorian.current_user().username})'}
@ -155,8 +160,22 @@ def register():
@flask_praetorian.auth_required @flask_praetorian.auth_required
def survey(): def survey():
req = flask.request.get_json(force=True) req = flask.request.get_json(force=True)
token = guard.read_token_from_header()
extracted_token = guard.extract_jwt_token(token)
id_req = extracted_token['id']
# get data from the survey and write it to the database
age = req.get('age', None)
gender = req.get('gender', None) gender = req.get('gender', None)
print(req) education = req.get('education', None)
skills = req.get('skills', None)
user_db = User.query.filter_by(id=id_req).first()
user_db.age = age
user_db.gender = gender
user_db.education = education
user_db.skills = skills
db.session.commit()
ret = {'message': 'Umfrage freigestellt'} ret = {'message': 'Umfrage freigestellt'}
return ret, 200 return ret, 200