diff --git a/server.py b/server.py index 063fb74d41cf2e1209237a3f839a7091408a9e3e..63f675fa67b1f0e19771da7bd18dee10c6c2392c 100755 --- a/server.py +++ b/server.py @@ -3,7 +3,7 @@ from flask import Flask, g, current_app, request, session, flash, redirect, url_for, abort, render_template, Response from flask.ext.login import login_user, logout_user, login_required, current_user from flask.ext.principal import Principal, Identity, AnonymousIdentity, identity_changed, identity_loaded, UserNeed, RoleNeed -from flask.ext.script import Manager +from flask.ext.script import Manager, prompt, prompt_pass from flask.ext.migrate import Migrate, MigrateCommand from passlib.hash import pbkdf2_sha256 @@ -29,6 +29,36 @@ from modules import admin, speech app.register_blueprint(admin.admin, url_prefix="/admin") app.register_blueprint(speech.speech, url_prefix="/speech") +@manager.command +def addadmin(): + """Add a new administrative user to the system""" + print("Adding new administrative user:") + admin_real_name = prompt("Real name") + admin_login = prompt("Username") + admin_pass = prompt_pass("Password") + if admin_real_name is not None and admin_login is not None and admin_pass is not None: + admin_hashed_pw = pbkdf2_sha256.encrypt(admin_pass, rounds=200000, salt_size=16) + u = User(admin_real_name, admin_login, admin_hashed_pw, ["admin", "user"]) + db.session.add(u) + db.session.commit(u) + else: + print("The provided data was invalid.") + +@manager.command +def adduser(): + """Add a new user to the system""" + print("Adding new user:") + admin_real_name = prompt("Real name") + admin_login = prompt("Username") + admin_pass = prompt_pass("Password") + if admin_real_name is not None and admin_login is not None and admin_pass is not None: + admin_hashed_pw = pbkdf2_sha256.encrypt(admin_pass, rounds=200000, salt_size=16) + u = User(admin_real_name, admin_login, admin_hashed_pw, ["user"]) + db.session.add(u) + db.session.commit(u) + else: + print("The provided data was invalid.") + @app.route("/") def index(): if not len(db.session.query(User).all()) > 0: