jellyfin-accounts/jellyfin_accounts/web.py

71 lines
3.0 KiB
Python
Raw Permalink Normal View History

import json
2020-04-11 14:20:25 +00:00
from pathlib import Path
from flask import Flask, send_from_directory, render_template
from jellyfin_accounts import config, app, g, css, data_store
from jellyfin_accounts import web_log as log
from jellyfin_accounts.web_api import checkInvite, validator
2020-04-11 14:20:25 +00:00
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html',
2020-05-17 14:22:50 +00:00
css_href=css['href'],
css_integrity=css['integrity'],
css_crossorigin=css['crossorigin'],
2020-04-11 14:20:25 +00:00
contactMessage=config['ui']['contact_message']), 404
@app.route('/', methods=['GET', 'POST'])
def admin():
# return app.send_static_file('admin.html')
return render_template('admin.html',
2020-05-17 14:22:50 +00:00
css_href=css['href'],
css_integrity=css['integrity'],
css_crossorigin=css['crossorigin'],
contactMessage='',
email_enabled=config.getboolean(
'invite_emails', 'enabled'))
2020-04-11 14:20:25 +00:00
@app.route('/<path:path>')
def static_proxy(path):
if 'html' not in path:
2020-04-11 14:20:25 +00:00
return app.send_static_file(path)
return render_template('404.html',
2020-05-17 14:22:50 +00:00
css_href=css['href'],
css_integrity=css['integrity'],
css_crossorigin=css['crossorigin'],
2020-04-11 14:20:25 +00:00
contactMessage=config['ui']['contact_message']), 404
@app.route('/invite/<path:path>')
def inviteProxy(path):
if checkInvite(path):
2020-04-12 20:25:27 +00:00
log.info(f'Invite {path} used to request form')
try:
email = data_store.invites[path]['email']
except KeyError:
email = ''
2020-04-11 14:20:25 +00:00
return render_template('form.html',
2020-05-17 14:22:50 +00:00
css_href=css['href'],
css_integrity=css['integrity'],
css_crossorigin=css['crossorigin'],
2020-04-11 14:20:25 +00:00
contactMessage=config['ui']['contact_message'],
helpMessage=config['ui']['help_message'],
successMessage=config['ui']['success_message'],
jfLink=config['jellyfin']['public_server'],
validate=config.getboolean(
'password_validation',
'enabled'),
requirements=validator.getCriteria(),
email=email)
2020-04-11 14:20:25 +00:00
elif 'admin.html' not in path and 'admin.html' not in path:
return app.send_static_file(path)
else:
2020-04-12 20:25:27 +00:00
log.debug('Attempted use of invalid invite')
2020-04-11 14:20:25 +00:00
return render_template('invalidCode.html',
2020-05-17 14:22:50 +00:00
css_href=css['href'],
css_integrity=css['integrity'],
css_crossorigin=css['crossorigin'],
2020-04-11 14:20:25 +00:00
contactMessage=config['ui']['contact_message'])