wowstash/wowstash/blueprints/authentication/routes.py

45 lines
1.7 KiB
Python

from flask import request, render_template, session, redirect, url_for
from wallet.blueprints.authentication import authentication_bp
from wallet.library.daemon import daemon
from wallet.library.wallet import wallet
from monero.seed import Seed
from binascii import hexlify
from datetime import datetime
from os import urandom
@authentication_bp.route("/login", methods=["GET", "POST"])
def login():
error = None
if request.method == "POST":
if request.form.get('seed'):
try:
seed = Seed(str(request.form['seed']))
session['seed'] = seed.phrase
session['start_time'] = datetime.utcnow()
session['public_address'] = seed.public_address()
session['private_spend_key'] = seed.secret_spend_key()
session['public_spend_key'] = seed.public_spend_key()
session['private_view_key'] = seed.secret_view_key()
session['public_view_key'] = seed.public_view_key()
session['wallet_password'] = hexlify(urandom(64))
if request.form.get('persistence'):
session['wallet_persistence'] = "Enabled"
else:
session['wallet_persistence'] = "Disabled"
return redirect(url_for('account.overview'))
except AssertionError:
error = "Invalid seed checksum"
except Exception as e:
error = "Invalid seed {0}".format(e)
else:
error = "Must provide a seed"
return render_template("login.html", error=error)
@authentication_bp.route("/logout")
def logout():
session.clear()
return redirect(url_for('index'))