Merge pull request #1018 from dod-ccpo/new-user-dev

Allow creation of new users in dev mode
This commit is contained in:
tomdds 2019-08-13 10:13:56 -04:00 committed by GitHub
commit 0410d82359
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 57 additions and 19 deletions

View File

@ -6,6 +6,7 @@ from atst.domain.users import Users
UNPROTECTED_ROUTES = [
"atst.root",
"dev.login_dev",
"dev.dev_new_user",
"atst.login_redirect",
"atst.logout",
"atst.unauthorized",

View File

@ -11,12 +11,14 @@ from flask import (
import pendulum
from . import redirect_after_login_url, current_user_setup
from atst.domain.exceptions import AlreadyExistsError, NotFoundError
from atst.domain.users import Users
from atst.domain.permission_sets import PermissionSets
from atst.forms.data import SERVICE_BRANCHES
from atst.queue import queue
from atst.utils import pick
bp = Blueprint("dev", __name__)
_ALL_PERMS = [
@ -110,31 +112,66 @@ _DEV_USERS = {
}
class IncompleteInfoError(Exception):
@property
def message(self):
return "You must provide each of: first_name, last_name and dod_id"
@bp.route("/login-dev")
def login_dev():
role = request.args.get("username", "amanda")
user_data = _DEV_USERS[role]
user = Users.get_or_create_by_dod_id(
user_data["dod_id"],
**pick(
[
"permission_sets",
"first_name",
"last_name",
"email",
"service_branch",
"phone_number",
"citizenship",
"designation",
"date_latest_training",
],
user_data,
),
)
dod_id = request.args.get("dod_id", None)
if dod_id is not None:
user = Users.get_by_dod_id(dod_id)
else:
role = request.args.get("username", "amanda")
user_data = _DEV_USERS[role]
user = Users.get_or_create_by_dod_id(
user_data["dod_id"],
**pick(
[
"permission_sets",
"first_name",
"last_name",
"email",
"service_branch",
"phone_number",
"citizenship",
"designation",
"date_latest_training",
],
user_data,
),
)
current_user_setup(user)
return redirect(redirect_after_login_url())
@bp.route("/dev-new-user")
def dev_new_user():
first_name = request.args.get("first_name", None)
last_name = request.args.get("last_name", None)
dod_id = request.args.get("dod_id", None)
if None in [first_name, last_name, dod_id]:
raise IncompleteInfoError()
try:
Users.get_by_dod_id(dod_id)
raise AlreadyExistsError("User with dod_id {}".format(dod_id))
except NotFoundError:
pass
new_user = {"first_name": first_name, "last_name": last_name}
created_user = Users.create(dod_id, **new_user)
current_user_setup(created_user)
return redirect(redirect_after_login_url())
@bp.route("/test-email")
def test_email():
queue.send_mail(