mirror of
https://git.wownero.com/lza_menace/wowstash.git
synced 2024-08-15 00:33:15 +00:00
67 lines
1.8 KiB
Python
67 lines
1.8 KiB
Python
import click
|
|
from flask import Blueprint, url_for
|
|
|
|
import wowstash.models
|
|
from wowstash.library.docker import docker
|
|
from wowstash.models import User, PasswordReset, Event
|
|
from wowstash.factory import db, bcrypt
|
|
|
|
|
|
bp = Blueprint("cli", "cli", cli_group=None)
|
|
|
|
|
|
@bp.cli.command('clean_containers')
|
|
def clean_containers():
|
|
docker.cleanup()
|
|
|
|
@bp.cli.command('reset_wallet')
|
|
@click.argument('user_id')
|
|
def reset_wallet(user_id):
|
|
user = User.query.get(user_id)
|
|
user.clear_wallet_data()
|
|
print(f'Wallet data cleared for user {user.id}')
|
|
|
|
@bp.cli.command('init')
|
|
def init():
|
|
db.create_all()
|
|
|
|
@bp.cli.command('list_users')
|
|
def list_users():
|
|
users = User.query.all()
|
|
for i in users:
|
|
print(f'{i.id} - {i.email}')
|
|
|
|
@bp.cli.command('wipe_user')
|
|
@click.argument('user_id')
|
|
def wipe_user(user_id):
|
|
user = User.query.get(user_id)
|
|
if user:
|
|
events = Event.query.filter(Event.user == user.id)
|
|
for i in events:
|
|
print(f'[+] Deleting event {i.id} for user {user.id}')
|
|
db.session.delete(i)
|
|
print(f'[+] Deleting user {user.id}')
|
|
db.session.delete(user)
|
|
db.session.commit()
|
|
return True
|
|
else:
|
|
print('That user id does not exist')
|
|
return False
|
|
|
|
@bp.cli.command('reset_password')
|
|
@click.argument('user_email')
|
|
@click.argument('duration')
|
|
def reset_password(user_email, duration):
|
|
user = User.query.filter(User.email==user_email).first()
|
|
if not user:
|
|
click.echo('[!] Email address does not exist!')
|
|
return
|
|
|
|
pwr = PasswordReset(
|
|
user=user.id,
|
|
hash=PasswordReset().generate_hash(),
|
|
expiration_hours=duration
|
|
)
|
|
db.session.add(pwr)
|
|
db.session.commit()
|
|
click.echo(f'[+] Password reset link #{pwr.id} for {user_email} expires in {duration} hours: {url_for("auth.reset", hash=pwr.hash)}')
|