This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
devicehub-teal/ereuse_devicehub/views.py

60 lines
2.0 KiB
Python
Raw Normal View History

import flask
from flask import Blueprint
2021-12-27 07:54:55 +00:00
from flask.views import View
from flask_login import current_user, login_required, login_user, logout_user
2021-12-27 07:54:55 +00:00
2022-03-15 10:46:32 +00:00
from ereuse_devicehub import __version__
from ereuse_devicehub.forms import LoginForm
from ereuse_devicehub.resources.user.models import User
from ereuse_devicehub.utils import is_safe_url
2021-12-22 23:29:44 +00:00
core = Blueprint('core', __name__)
2021-12-27 08:15:06 +00:00
class LoginView(View):
methods = ['GET', 'POST']
2021-12-27 08:15:06 +00:00
template_name = 'ereuse_devicehub/user_login.html'
def dispatch_request(self):
form = LoginForm()
if form.validate_on_submit():
# Login and validate the user.
# user should be an instance of your `User` class
user = User.query.filter_by(email=form.email.data).first()
2021-12-29 07:10:26 +00:00
login_user(user, remember=form.remember.data)
next_url = flask.request.args.get('next')
# is_safe_url should check if the url is safe for redirects.
# See http://flask.pocoo.org/snippets/62/ for an example.
if not is_safe_url(flask.request, next_url):
return flask.abort(400)
return flask.redirect(
next_url or flask.url_for('inventory.devices.devicelist')
)
2022-03-15 10:46:32 +00:00
context = {'form': form, 'version': __version__}
return flask.render_template('ereuse_devicehub/user_login.html', **context)
2021-12-27 08:15:06 +00:00
2021-12-28 12:05:41 +00:00
class LogoutView(View):
def dispatch_request(self):
logout_user()
return flask.redirect(flask.url_for('core.login'))
2021-12-27 07:54:55 +00:00
class UserProfileView(View):
decorators = [login_required]
2021-12-27 07:54:55 +00:00
template_name = 'ereuse_devicehub/user_profile.html'
def dispatch_request(self):
context = {
'current_user': current_user,
2022-03-15 10:46:32 +00:00
'version': __version__,
}
return flask.render_template(self.template_name, **context)
2021-12-27 07:54:55 +00:00
2021-12-27 08:15:06 +00:00
core.add_url_rule('/login/', view_func=LoginView.as_view('login'))
2021-12-28 12:05:41 +00:00
core.add_url_rule('/logout/', view_func=LogoutView.as_view('logout'))
2021-12-27 07:54:55 +00:00
core.add_url_rule('/profile/', view_func=UserProfileView.as_view('user-profile'))