Added custom 404 display and login redirect

This commit is contained in:
Vivek Santayana 2021-12-04 17:40:01 +00:00
parent 766487b669
commit 0d63413835
6 changed files with 33 additions and 9 deletions

View File

@ -1,4 +1,4 @@
from flask import flash, make_response, Response from flask import flash, make_response, Response, session
from flask.helpers import url_for from flask.helpers import url_for
from flask.json import jsonify from flask.json import jsonify
from werkzeug.security import generate_password_hash, check_password_hash from werkzeug.security import generate_password_hash, check_password_hash
@ -61,7 +61,13 @@ class User:
return jsonify({ 'error': f'Username {self.username} does not exist.' }), 401 return jsonify({ 'error': f'Username {self.username} does not exist.' }), 401
if not check_password_hash( user['password'], self.password ): if not check_password_hash( user['password'], self.password ):
return jsonify({ 'error': f'The password you entered is incorrect.' }), 401 return jsonify({ 'error': f'The password you entered is incorrect.' }), 401
resp = make_response(jsonify({ 'success': f'Successfully logged in user {self.username}.' }), 200) response = {
'success': f'Successfully logged in user {self.username}.'
}
if 'prev_page' in session:
response['redirect_to'] = session['prev_page']
session.pop('prev_page')
resp = make_response(jsonify(response), 200)
self._id = user['_id'] self._id = user['_id']
self.start_session(resp) self.start_session(resp)
return resp return resp

View File

@ -27,7 +27,12 @@ $('form.form-post').submit(function(event) {
data: data, data: data,
dataType: 'json', dataType: 'json',
success: function(response) { success: function(response) {
window.location.href = rel_success; if (response.redirect_to) {
window.location.href = response.redirect_to;
}
else {
window.location.href = rel_success;
}
}, },
error: function(response) { error: function(response) {
error_response(response); error_response(response);

View File

@ -1,4 +1,4 @@
from flask import Blueprint, render_template, flash, redirect, request, jsonify, abort, make_response from flask import Blueprint, render_template, flash, redirect, request, jsonify, abort, session
from flask.helpers import url_for from flask.helpers import url_for
from functools import wraps from functools import wraps
from datetime import datetime from datetime import datetime
@ -56,6 +56,7 @@ def login_required(function):
@wraps(function) @wraps(function)
def decorated_function(*args, **kwargs): def decorated_function(*args, **kwargs):
if not check_login(): if not check_login():
session['prev_page'] = request.url
flash('Please log in to view this page.', 'alert') flash('Please log in to view this page.', 'alert')
return redirect(url_for('admin_auth.login')) return redirect(url_for('admin_auth.login'))
return function(*args, **kwargs) return function(*args, **kwargs)

View File

@ -1,6 +1,6 @@
from datetime import datetime from datetime import datetime
from flask import Flask, flash, request from flask import Flask, flash, request, render_template
from flask.helpers import url_for from flask.helpers import url_for
from flask.json import jsonify from flask.json import jsonify
from flask_bootstrap import Bootstrap from flask_bootstrap import Bootstrap
@ -77,4 +77,8 @@ if __name__ == '__main__':
def _get_id_from_cookie(): def _get_id_from_cookie():
return dict(get_id_from_cookie = get_id_from_cookie) return dict(get_id_from_cookie = get_id_from_cookie)
@app.errorhandler(404)
def _404_handler(e):
return render_template('/quiz/404.html'), 404
app.run(host=app.config['APP_HOST']) app.run(host=app.config['APP_HOST'])

View File

@ -0,0 +1,8 @@
{% extends "quiz/components/base.html" %}
{% block content %}
<h1>Page Not Found</h1>
<p>
The page you were looking for does not exist. Try going back and navigating to the desired destination correctly.
</p>
{% endblock %}

View File

@ -30,11 +30,11 @@
{% include "quiz/components/server-alerts.html" %} {% include "quiz/components/server-alerts.html" %}
{% endblock %} {% endblock %}
{% block content %}{% endblock %} {% block content %}{% endblock %}
</div>
<footer class="container site-footer"> <footer class="container site-footer">
{% include "quiz/components/footer.html" %} {% include "quiz/components/footer.html" %}
</footer> </footer>
</div>
<!-- JQuery, Popper, and Bootstrap js dependencies --> <!-- JQuery, Popper, and Bootstrap js dependencies -->
<script <script