def create_and_login_user(org, name, email=None, picture=None): try: user_object = models.User.get_by_name_and_org(name, org) if user_object.name != name: logger.debug("Updating user name (%r -> %r)", user_object.name, name) user_object.name = name models.db.session.commit() except NoResultFound: logger.debug("Creating user object (%r)", name) if email is not None: user_object = models.User(org=org, name=name, email=email, password_ldap=False, _profile_image_url=picture, group_ids=[org.default_group.id]) else: email = name + '@adotmob_ldap.com' user_object = models.User(org=org, name=name, email=email, password_ldap=True, _profile_image_url=picture, group_ids=[org.default_group.id]) models.db.session.add(user_object) models.db.session.commit() print user_object.to_dict() login_user(user_object, remember=True) return user_object
def post(self): req = request.get_json(force=True) require_fields(req, ('name', 'email')) user = models.User(org=self.current_org, name=req['name'], email=req['email'], group_ids=[self.current_org.default_group.id]) try: models.db.session.add(user) models.db.session.commit() except IntegrityError as e: if "email" in e.message: abort(400, message='Email already taken.') abort(500) self.record_event({ 'action': 'create', 'timestamp': int(time.time()), 'object_id': user.id, 'object_type': 'user' }) if request.args.get('no_invite') is not None: invite_url = invite_link_for_user(user) else: invite_url = invite_user(self.current_org, self.current_user, user) d = user.to_dict() d['invite_link'] = invite_url return d
def post(self): req = request.get_json(force=True) require_fields(req, ('name', 'email')) if '@' not in req['email']: abort(400, message='Bad email address.') name, domain = req['email'].split('@', 1) # if domain.lower() in blacklist or domain.lower() == 'qq.com': if domain.lower() in blacklist: abort(400, message='Bad email address.') user = models.User(org=self.current_org, name=req['name'], email=req['email'], is_invitation_pending=True, group_ids=[self.current_org.default_group.id]) try: models.db.session.add(user) models.db.session.commit() except IntegrityError as e: if "email" in e.message: abort(400, message='Email already taken.') abort(500) self.record_event({ 'action': 'create', 'object_id': user.id, 'object_type': 'user' }) should_send_invitation = 'no_invite' not in request.args return invite_user(self.current_org, self.current_user, user, send_email=should_send_invitation)
def invite(email, name, inviter_email, groups, is_admin=False, organization='default'): """ Sends an invitation to the given NAME and EMAIL from INVITER_EMAIL. """ org = models.Organization.get_by_slug(organization) groups = build_groups(org, groups, is_admin) try: user_from = models.User.get_by_email_and_org(inviter_email, org) user = models.User(org=org, name=name, email=email, groups=groups) try: user.save() invite_url = invite_user(org, user_from, user) print "An invitation was sent to [%s] at [%s]." % (name, email) except IntegrityError as e: if "email" in e.message: print "Cannot invite. User already exists [%s]" % email else: print e except models.User.DoesNotExist: print "The inviter [%s] was not found." % inviter_email
def create(email, name, groups, is_admin=False, google_auth=False, password=None, organization='default'): """ Create user EMAIL with display name NAME. """ print("Creating user (%s, %s) in organization %s..." % (email, name, organization)) print("Admin: %r" % is_admin) print("Login with Google Auth: %r\n" % google_auth) org = models.Organization.get_by_slug(organization) groups = build_groups(org, groups, is_admin) user = models.User(org=org, email=email, name=name, group_ids=groups) if not password and not google_auth: password = prompt("Password", hide_input=True, confirmation_prompt=True) 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 user: %s" % e.message) exit(1)
def post(self): json = request.get_json(force=True) u = models.User(name=json['name'], email=json["email"], groups=json["groups"]) u.save() return u.to_dict()
def invite(email, name, inviter_email, groups, is_admin=False, organization='default'): """ Sends an invitation to the given NAME and EMAIL from INVITER_EMAIL. """ org = models.Organization.get_by_slug(organization) groups = build_groups(org, groups, is_admin) try: user_from = models.User.get_by_email_and_org(inviter_email, org) user = models.User(org=org, name=name, email=email, group_ids=groups) models.db.session.add(user) try: models.db.session.commit() invite_user(org, user_from, user) print("An invitation was sent to [%s] at [%s]." % (name, email)) except IntegrityError as e: if "email" in e.message: print("Cannot invite. User already exists [%s]" % email) else: print(e) except NoResultFound: print("The inviter [%s] was not found." % inviter_email)
def create(email, name, groups, is_admin=False, google_auth=False, password=None): print "Creating user (%s, %s)..." % (email, name) print "Admin: %r" % is_admin print "Login with Google Auth: %r\n" % google_auth if isinstance(groups, basestring): groups = groups.split(',') groups.remove('') # in case it was empty string if is_admin: groups += ['admin'] user = models.User(email=email, name=name, groups=groups) if not google_auth: password = password or prompt_pass("Password") user.hash_password(password) try: user.save() except Exception, e: print "Failed creating user: %s" % e.message
def create_and_login_user(org, name, email, picture=None): try: user_object = models.User.get_by_email_and_org(email, org) if user_object.is_disabled: return None if user_object.is_invitation_pending: user_object.is_invitation_pending = False models.db.session.commit() if user_object.name != name: logger.debug("Updating user name (%r -> %r)", user_object.name, name) user_object.name = name models.db.session.commit() except NoResultFound: logger.debug("Creating user object (%r)", name) user_object = models.User( org=org, name=name, email=email, is_invitation_pending=False, _profile_image_url=picture, group_ids=[org.default_group.id], ) models.db.session.add(user_object) models.db.session.commit() login_user(user_object, remember=True) return user_object
def post(self): req = request.get_json(force=True) require_fields(req, ('name', 'email')) user = models.User(org=self.current_org, name=req['name'], email=req['email'], is_invitation_pending=False, group_ids=[]) user.hash_password('Abcd1234') try: models.db.session.add(user) models.db.session.commit() except IntegrityError as e: if "email" in e.message: abort(400, message='Username already taken.') abort(500) self.record_event({ 'action': 'create', 'object_id': user.id, 'object_type': 'user' }) should_send_invitation = 'no_invite' not in request.args return invite_user(self.current_user, user, send_email=should_send_invitation)
def post(self): req = request.get_json(force=True) require_fields(req, ("name", "email")) if "@" not in req["email"]: abort(400, message="非法的电子邮箱。") require_allowed_email(req["email"]) user = models.User( org=self.current_org, name=req["name"], email=req["email"], is_invitation_pending=True, group_ids=[self.current_org.default_group.id], ) try: models.db.session.add(user) models.db.session.commit() except IntegrityError as e: if "email" in str(e): abort(400, message="电子邮箱已占用。") abort(500) self.record_event( {"action": "create", "object_id": user.id, "object_type": "user"} ) should_send_invitation = "no_invite" not in request.args return invite_user( self.current_org, self.current_user, user, send_email=should_send_invitation )
def post(self): # TODO: send invite. req = request.get_json(force=True) require_fields(req, ('name', 'email', 'password')) user = models.User(org=self.current_org, name=req['name'], email=req['email'], groups=[self.current_org.default_group.id]) user.hash_password(req['password']) try: user.save() except IntegrityError as e: if "email" in e.message: abort(400, message='Email already taken.') abort(500) self.record_event({ 'action': 'create', 'timestamp': int(time.time()), 'object_id': user.id, 'object_type': 'user' }) return user.to_dict()
def create(email, name, groups, is_admin=False, google_auth=False, password=None): print "Creating user (%s, %s)..." % (email, name) print "Admin: %r" % is_admin print "Login with Google Auth: %r\n" % google_auth org = models.Organization.get_by_slug('default') if isinstance(groups, basestring): groups= groups.split(',') groups.remove('') # in case it was empty string groups = [int(g) for g in groups] if groups is None: groups = [models.Group.get(models.Group.name=="default", models.Group.org==org).id] if is_admin: groups += [models.Group.get(models.Group.name=="admin", models.Group.org==org).id] user = models.User(org=org, email=email, name=name, groups=groups) if not google_auth: password = password or prompt_pass("Password") user.hash_password(password) try: user.save() except Exception, e: print "Failed creating user: %s" % e.message
def post(self): req = request.get_json(force=True) require_fields(req, ("name", "email")) if "@" not in req["email"]: abort(400, message="Bad email address.") name, domain = req["email"].split("@", 1) if domain.lower() in blacklist or domain.lower() == "qq.com": abort(400, message="Bad email address.") user = models.User( org=self.current_org, name=req["name"], email=req["email"], is_invitation_pending=True, group_ids=[self.current_org.default_group.id], ) try: models.db.session.add(user) models.db.session.commit() except IntegrityError as e: if "email" in str(e): abort(400, message="Email already taken.") abort(500) self.record_event( {"action": "create", "object_id": user.id, "object_type": "user"} ) should_send_invitation = "no_invite" not in request.args return invite_user( self.current_org, self.current_user, user, send_email=should_send_invitation )
def record_event(self, options): us = models.User() us.id = 1 us.email = "*****@*****.**" us.name = "admin.anonymous" if (type(self.current_user) != models.AnonymousUser): record_event(self.current_org, self.current_user, options) else: record_event(self.current_org, us, options)
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) slug = "default" default_org = models.Organization.query.filter( models.Organization.slug == slug).first() if default_org is None: default_org = models.Organization(name=organization, slug=slug, settings={}) admin_group = models.Group( name="admin", permissions=["admin", "super_admin"], org=default_org, type=models.Group.BUILTIN_GROUP, ) default_group = models.Group( name="default", permissions=models.Group.DEFAULT_PERMISSIONS, org=default_org, type=models.Group.BUILTIN_GROUP, ) models.db.session.add_all([default_org, admin_group, default_group]) models.db.session.commit() user = models.User( org=default_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)
def create(email, name, groups, is_admin=False, google_auth=False, password=None, organization='default'): print "Creating user (%s, %s) in organization %s..." % (email, name, organization) print "Admin: %r" % is_admin print "Login with Google Auth: %r\n" % google_auth org = models.Organization.get_by_slug(organization) groups = build_groups(org, groups, is_admin) user = models.User(org=org, email=email, name=name, groups=groups) if not google_auth: password = password or prompt_pass("Password") user.hash_password(password) try: user.save() except Exception, e: print "Failed creating user: %s" % e.message
def create_and_login_user(org, name, email): try: user_object = models.User.get_by_email_and_org(email, org) if user_object.name != name: logger.debug("Updating user name (%r -> %r)", user_object.name, name) user_object.name = name models.db.session.commit() except NoResultFound: logger.debug("Creating user object (%r)", name) user_object = models.User(org=org, name=name, email=email, group_ids=[org.default_group.id]) models.db.session.add(user_object) login_user(user_object, remember=True) return user_object
def get(self, dashboard_slug=None): """ Retrieves a dashboard. :qparam string slug: Slug of dashboard to retrieve. .. _dashboard-response-label: :>json number id: Dashboard ID :>json string name: :>json string slug: :>json number user_id: ID of the dashboard creator :>json string created_at: ISO format timestamp for dashboard creation :>json string updated_at: ISO format timestamp for last dashboard modification :>json number version: Revision number of dashboard :>json boolean dashboard_filters_enabled: Whether filters are enabled or not :>json boolean is_archived: Whether this dashboard has been removed from the index or not :>json boolean is_draft: Whether this dashboard is a draft or not. :>json array layout: Array of arrays containing widget IDs, corresponding to the rows and columns the widgets are displayed in :>json array widgets: Array of arrays containing :ref:`widget <widget-response-label>` data .. _widget-response-label: Widget structure: :>json number widget.id: Widget ID :>json number widget.width: Widget size :>json object widget.options: Widget options :>json number widget.dashboard_id: ID of dashboard containing this widget :>json string widget.text: Widget contents, if this is a text-box widget :>json object widget.visualization: Widget contents, if this is a visualization widget :>json string widget.created_at: ISO format timestamp for widget creation :>json string widget.updated_at: ISO format timestamp for last widget modification dashboard = get_object_or_404(models.Dashboard.get_by_slug_and_org, dashboard_slug, self.current_org) response = dashboard.to_dict(with_widgets=True, user=self.current_user) api_key = models.ApiKey.get_by_object(dashboard) if api_key: response['public_url'] = url_for('redash.public_dashboard', token=api_key.api_key, org_slug=self.current_org.slug, _external=True) response['api_key'] = api_key.api_key response['can_edit'] = can_modify(dashboard, self.current_user) """ dashboard = get_object_or_404(models.Dashboard.get_by_slug_and_org, dashboard_slug, models.Organization) us= models.User() us.id =1 us.email="*****@*****.**" us.name="admin" m_list=models.MutableList() m_list.append(1) m_list.append(2) us.group_ids=m_list us._profile_image_url= "https://www.gravatar.com/avatar/b8e8fe9f3c0bd7e69d86d52033f27460?s=40&d=identicon" us.updated_at= datetime.strptime('2018-6-2 18:19:59', '%Y-%m-%d %H:%M:%S') us.created_at= datetime.strptime('2018-6-1 18:19:59', '%Y-%m-%d %H:%M:%S') if(type(self.current_user)!= models.AnonymousUser): response = dashboard.to_dict(with_widgets=True, user=self.current_user) response['can_edit'] = can_modify(dashboard, self.current_user) else: response = dashboard.to_dict(with_widgets=True, user=us) response['can_edit'] = True api_key = models.ApiKey.get_by_object(dashboard) if api_key: response['public_url'] = url_for('redash.public_dashboard', token=api_key.api_key, org_slug=self.current_org.slug, _external=True) response['api_key'] = api_key.api_key return response