From 9cdb8861a771f44e63c6c753f94ee394a6129bab Mon Sep 17 00:00:00 2001
From: kaiyou <pierre@jaury.eu>
Date: Wed, 11 Dec 2019 16:20:43 +0100
Subject: [PATCH] Add an api for creating and promoting users

---
 hiboo/user/__init__.py |  2 +-
 hiboo/user/cli.py      | 29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)
 create mode 100644 hiboo/user/cli.py

diff --git a/hiboo/user/__init__.py b/hiboo/user/__init__.py
index 28fb9247..01bc3798 100644
--- a/hiboo/user/__init__.py
+++ b/hiboo/user/__init__.py
@@ -4,7 +4,7 @@ import flask
 blueprint = flask.Blueprint("user", __name__, template_folder="templates")
 
 from hiboo import models, utils
-from hiboo.user import users
+from hiboo.user import users, cli
 
 
 def get_user(**redirect_args):
diff --git a/hiboo/user/cli.py b/hiboo/user/cli.py
new file mode 100644
index 00000000..43965071
--- /dev/null
+++ b/hiboo/user/cli.py
@@ -0,0 +1,29 @@
+from hiboo.user import blueprint
+from hiboo import models
+
+import click
+
+
+@blueprint.cli.command()
+@click.argument("username")
+@click.argument("password")
+def create(username, password):
+    assert not models.User.query.filter_by(username=username).first()
+    auth = models.Auth()
+    auth.set_password(password)
+    user = models.User(
+        username=username,
+        auths=[auth]
+    )
+    models.db.session.add(auth)
+    models.db.session.add(user)
+    models.db.session.commit()
+
+
+@blueprint.cli.command()
+@click.argument("username")
+def promote(username):
+    user = models.User.query.filter_by(username=username).first()
+    assert user
+    user.is_admin = True
+    models.db.session.commit()
-- 
GitLab