in redash/cli/users.py [0:0]
def create_root(email, name, google_auth=False, password=None, organization="default"):
"""
Create root user.
"""
print(
"Creating root user (%s, %s) in organization %s..."
% (email, name, organization)
)
print("Login with Google Auth: %r\n" % google_auth)
user = models.User.query.filter(models.User.email == email).first()
if user is not None:
print("User [%s] is already exists." % email)
exit(1)
org_slug = organization
org = models.Organization.query.filter(
models.Organization.slug == org_slug
).first()
if org is None:
org = models.Organization(name=org_slug, slug=org_slug, settings={})
admin_group = models.Group(
name="admin",
permissions=["admin", "super_admin"],
org=org,
type=models.Group.BUILTIN_GROUP,
)
default_group = models.Group(
name="default",
permissions=models.Group.DEFAULT_PERMISSIONS,
org=org,
type=models.Group.BUILTIN_GROUP,
)
models.db.session.add_all([org, admin_group, default_group])
models.db.session.commit()
user = models.User(
org=org,
email=email,
name=name,
group_ids=[admin_group.id, default_group.id],
)
if not google_auth:
user.hash_password(password)
try:
models.db.session.add(user)
models.db.session.commit()
except Exception as e:
print("Failed creating root user: %s" % e)
exit(1)