|
@@ -150,6 +150,8 @@ def send_email(to, subject, body):
|
|
|
# Call the send_email method
|
|
|
emailer.send_email(to, subject, body)
|
|
|
|
|
|
+# send_email('aday@twinfallspubliclibrary.org', 'TEST', 'This is a test email')
|
|
|
+
|
|
|
|
|
|
def shutdown_session(exception=None):
|
|
|
print('Stopping HTTP Service...')
|
|
@@ -183,6 +185,7 @@ def requires_auth():
|
|
|
if 'username' in session:
|
|
|
username = session['username']
|
|
|
user = User.get(User.username == username)
|
|
|
+
|
|
|
if user.logged_in is True:
|
|
|
return True
|
|
|
else:
|
|
@@ -191,6 +194,12 @@ def requires_auth():
|
|
|
return False
|
|
|
|
|
|
|
|
|
+def admin_password_check():
|
|
|
+ admin_user = User.get(User.username == 'admin')
|
|
|
+ if admin_user.password == encrypt_password('admin'):
|
|
|
+ return True
|
|
|
+
|
|
|
+
|
|
|
db.close()
|
|
|
|
|
|
app = Flask(__name__)
|
|
@@ -238,10 +247,35 @@ def after_request(response):
|
|
|
return response
|
|
|
|
|
|
|
|
|
+@app.route('/admin/password/reset', methods=['GET', 'POST'])
|
|
|
+def admin_password_reset():
|
|
|
+ message = None
|
|
|
+ if request.method == 'POST':
|
|
|
+ password = request.form.get('password')
|
|
|
+ password_confirm = request.form.get('password_confirm')
|
|
|
+ if password != password_confirm:
|
|
|
+ message = 'Passwords do not match'
|
|
|
+ else:
|
|
|
+ try:
|
|
|
+ user = User.get(User.username == 'admin')
|
|
|
+ user.password = encrypt_password(password)
|
|
|
+ user.logged_in = True
|
|
|
+ user.save()
|
|
|
+ session['username'] = 'admin'
|
|
|
+ return redirect(url_for('admin'))
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ message = 'Username not found'
|
|
|
+
|
|
|
+ context = {
|
|
|
+ 'message': message,
|
|
|
+ }
|
|
|
+ return render_template('admin_password_reset.html', context=context)
|
|
|
+
|
|
|
+
|
|
|
# Create a route for the home page
|
|
|
@app.route('/', methods=['GET', 'POST'])
|
|
|
def index():
|
|
|
- # send_email('aday@twinfallspubliclibrary.org', 'TEST', 'This is a test email')
|
|
|
error = None
|
|
|
reset = False
|
|
|
reset_url = is_valid_url(password_reset_url)
|
|
@@ -287,6 +321,9 @@ def index():
|
|
|
# Create a route for admin page
|
|
|
@app.route('/admin/')
|
|
|
def admin():
|
|
|
+ if admin_password_check():
|
|
|
+ return redirect(url_for('admin_password_reset'))
|
|
|
+
|
|
|
# Check to see if user is logged in
|
|
|
if not requires_auth():
|
|
|
return redirect(url_for('login'))
|
|
@@ -334,6 +371,49 @@ def admin_users():
|
|
|
return render_template('admin_users.html', context=context)
|
|
|
|
|
|
|
|
|
+@app.route('/admin/users/edit/<int:id>', methods=['GET', 'POST'])
|
|
|
+def admin_users_edit(id):
|
|
|
+ # Check to see if user is logged in
|
|
|
+ if not requires_auth():
|
|
|
+ return redirect(url_for('login'))
|
|
|
+
|
|
|
+ # Get the user from the DB
|
|
|
+ user = User.get(User.id == id)
|
|
|
+
|
|
|
+ message = None
|
|
|
+ if request.method == 'POST':
|
|
|
+ username = request.form.get('username')
|
|
|
+ password = request.form.get('password')
|
|
|
+ confirm_password = request.form.get('confirm_password')
|
|
|
+
|
|
|
+ # Check to see if username already exists
|
|
|
+ try:
|
|
|
+ user = User.filter(User.username == username).first()
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ user = None
|
|
|
+
|
|
|
+ if user.username != username:
|
|
|
+ message = 'Username already exists'
|
|
|
+ else:
|
|
|
+ user.username = username
|
|
|
+ if password is not None or password != '':
|
|
|
+ if password == confirm_password:
|
|
|
+ user.password = encrypt_password(password)
|
|
|
+ else:
|
|
|
+ message = 'Passwords do not match'
|
|
|
+ user.save()
|
|
|
+ message = 'User updated successfully'
|
|
|
+ Log.create(username=session['username'], action='Updated admin user: %s' % username, ).save()
|
|
|
+
|
|
|
+ context = {
|
|
|
+ 'user': user,
|
|
|
+ 'message': message,
|
|
|
+ }
|
|
|
+
|
|
|
+ return render_template('admin_user_edit.html', context=context)
|
|
|
+
|
|
|
+
|
|
|
@app.route('/admin/users/delete/<int:id>', methods=['GET', 'POST'])
|
|
|
def admin_users_delete(id):
|
|
|
# Check to see if user is logged in
|