allows admins to create new users
This commit is contained in:
48
admin.py
48
admin.py
@@ -136,4 +136,50 @@ def register_admin_routes(app):
|
||||
|
||||
except Exception as e:
|
||||
print(f"[ERR] Failed to update user: {e}")
|
||||
abort(500, "Failed to update user")
|
||||
abort(500, "Failed to update user")
|
||||
|
||||
@app.route("/admin/users/new")
|
||||
@admin_required
|
||||
def admin_user_new():
|
||||
"""Display form to create a new user"""
|
||||
return render_template("admin_user_create.html")
|
||||
|
||||
@app.route("/admin/users/create", methods=["POST"])
|
||||
@admin_required
|
||||
def create_user():
|
||||
"""Create a new user"""
|
||||
try:
|
||||
# Get form data
|
||||
user_email = request.form.get("user_email")
|
||||
if not user_email:
|
||||
abort(400, "User email is required")
|
||||
|
||||
# Validate email format
|
||||
if "@" not in user_email:
|
||||
abort(400, "Invalid email format")
|
||||
|
||||
# Create user in Firebase Authentication
|
||||
user_record = fb_auth.create_user(
|
||||
email=user_email,
|
||||
email_verified=False,
|
||||
disabled=not request.form.get("enabled", False)
|
||||
)
|
||||
|
||||
# Create user profile in Firestore
|
||||
user_ref = db.collection("users").document(user_record.uid)
|
||||
user_ref.set({
|
||||
"user_email": user_email,
|
||||
"case_email": request.form.get("case_email", ""),
|
||||
"enabled": bool(request.form.get("enabled", False)),
|
||||
"is_admin": bool(request.form.get("is_admin", False))
|
||||
})
|
||||
|
||||
# Redirect to admin users page
|
||||
return redirect(url_for("admin_users"))
|
||||
|
||||
except fb_auth.EmailAlreadyExistsError:
|
||||
print(f"[ERR] User with email {user_email} already exists")
|
||||
abort(400, "A user with this email already exists")
|
||||
except Exception as e:
|
||||
print(f"[ERR] Failed to create user: {e}")
|
||||
abort(500, "Failed to create user")
|
||||
Reference in New Issue
Block a user