Skip to content

Commit 1fa7991

Browse files
committed
CSRF json
1 parent 8c6411e commit 1fa7991

3 files changed

Lines changed: 25 additions & 10 deletions

File tree

‎web/login/app.py‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
from flask import Flask, render_template, session, redirect, url_for, jsonify
88
from flask import request
9-
from flask_wtf.csrf import CSRFProtect
109
from web.login.models import *
1110

1211
templates_path = os.path.abspath(
@@ -16,7 +15,6 @@
1615
app.config.update(dict(
1716
SECRET_KEY="woopie"
1817
))
19-
csrf = CSRFProtect(app)
2018

2119

2220
def get_logged_in_user():
@@ -37,7 +35,6 @@ def after_request_func(response):
3735

3836

3937
@app.route('/', methods=['GET', 'POST'])
40-
@csrf.exempt
4138
def index():
4239
user = get_logged_in_user()
4340
if user is not None:
@@ -66,7 +63,8 @@ def update_age():
6663
user = get_logged_in_user()
6764
if user is None:
6865
return jsonify(status="User not logged in")
69-
age = int(request.form.get('age'))
66+
print(request.get_json())
67+
age = int(request.json['age'])
7068
user.age = age
7169
success = user.save()
7270
if success[0]:
@@ -76,7 +74,6 @@ def update_age():
7674

7775

7876
@app.route('/logout')
79-
@csrf.exempt
8077
def logout():
8178
if 'userid' in session:
8279
session['userid'] = None

‎web/login/static/js/change_age.js‎

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,21 @@
11
function changeAgeRequest() {
2-
var form = document.getElementById("change_age_form");
3-
alert(form);
2+
var newAge = document.getElementById("age_field").value;
3+
var xhr = new XMLHttpRequest();
4+
xhr.onload = function () {
5+
var notice = "";
6+
if (xhr.status >= 200 && xhr.status < 300) {
7+
var ageField = document.getElementById("age");
8+
ageField.innerHTML = newAge;
9+
} else {
10+
notice += "Error: ";
11+
}
12+
notice += JSON.parse(xhr.responseText)['status'];
13+
var noticeField = document.getElementById("notice");
14+
noticeField.innerText = notice;
15+
};
16+
var jsonData = {age: newAge};
17+
var formattedJsonData = JSON.stringify(jsonData);
18+
xhr.open('POST', '/update_age');
19+
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
20+
xhr.send(formattedJsonData)
421
}

‎web/login/template/welcome.html‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,17 @@
44
<script src="{{ url_for('static', filename='js/change_age.js') }}"></script>
55
</head>
66
<body>
7-
Hello {{ user.name }}, your age is {{ user.age }} <br/>
7+
Hello {{ user.name }}, your age is <span id="age">{{ user.age }}</span> <br/>
88
<a href="/logout">Log out</a><br/>
99

1010
{% if notice is defined %}
1111
Notice: {{ notice }}<br/>
1212
{% endif %}
1313

1414
<form id="change_age_form">
15-
Change age: <input type="text" name="age"/><br/>
16-
<input type="button" value="submit" onclick="changeAgeRequest()"/>
15+
Change age: <input type="text" name="age" id="age_field"/><br/>
16+
<input type="button" value="submit" onclick="changeAgeRequest()"/><br/>
17+
<span id="notice"></span>
1718
</form>
1819
</body>
1920
</html>

0 commit comments

Comments
 (0)