Ejemplo n.º 1
0
 def mutate(self, info, email, password, firstname, lastname, **kwargs):
     user = MyUser.query.filter_by(email=email).first()
     if user:
         return SignUpResponse(ok=False,
                               error="Already signed up",
                               user=None)
     else:
         new_user = MyUser(email=email,
                           password=password,
                           firstname=firstname,
                           lastname=lastname)
         new_user.set_password(password)
         db.session.add(new_user)
         db.session.commit()
         return SignUpResponse(ok=True, error=None, user=new_user)
Ejemplo n.º 2
0
def icon(request, user_name, width, height):
    user = MyUser.all().filter('user_name', user_name).get()
    try:
        icon = Icon.all().filter('user', user).get().image
    except:
        icon = open('default_user_icon.png').read()
    return Response(mimetype='image/png', response=images.resize(icon, width, height))
Ejemplo n.º 3
0
def blog(request, user_name):
    user = MyUser.all().filter('user_name', user_name).get()
    query = BlogEntry.all().filter('user', user).order('-created')
    entries = create_paginator_page(request, query)
    return render_to_response('app/blog/index.html', {'user_name': user_name,
                                                      'entries': entries,
                                                      'paginator': render_paginator(entries)})
Ejemplo n.º 4
0
 def user_add(self):
     """add a user method via RESTAPI."""
     data = request.get_json()
     first_name = data['fn'].strip()
     last_name = data['ln'].strip()
     user_name = data['un'].strip().lower()
     password = data['password'].strip()
     email = data['email'].strip()
     # check if user name exists or not
     query = self.appbuilder.get_session.query(
         func.count('*')).select_from(MyUser).filter(
             MyUser.username == user_name)
     count = query.scalar()
     if count > 0:
         return jsonify({'msg': 'Login name already exists.'}), 400
     else:
         # fetch role
         roles = self.appbuilder.get_session.query(Role).filter(
             Role.id.in_(data['rolesSelect'])).all()
         item = MyUser()
         item.extinfo = UserExtInfo(user_type='local')
         item.first_name = first_name
         item.last_name = last_name
         item.username = user_name
         item.active = True if data['active'] else False
         item.email = email
         item.password = generate_password_hash(password)
         item.roles = roles
         result = self.datamodel.add(item)
         if result:
             log.debug("Successfully add user %s by %s", user_name,
                       g.user.username)
             return jsonify(
                 {'msg': "Add user {0} success".format(user_name)})
         else:
             log.error("Failed add user %s by %s", user_name,
                       g.user.username)
             return make_response(
                 jsonify({'msg': "Add user {0} failed".format(user_name)}),
                 500)
Ejemplo n.º 5
0
 def sync_ldap_user(self):
     data = request.get_json()
     if data.get('coreId'):
         # search user from ldap
         con = ldap.initialize(self.appbuilder.sm.auth_ldap_server)
         con.set_option(ldap.OPT_REFERRALS, 0)
         if self.appbuilder.sm.auth_ldap_use_tls:
             try:
                 con.start_tls_s()
             except Exception:
                 log.info(
                     LOGMSG_ERR_SEC_AUTH_LDAP_TLS.format(
                         self.appbuilder.sm.auth_ldap_server))
                 return jsonify(
                     {'msg': 'Init LDAP with SSL connection failed'}), 500
         filter_str = ""
         coreIds = data.get('coreId').split("\n")
         for coreId in coreIds:
             filter_str += "({0}={1})".format(
                 self.appbuilder.sm.auth_ldap_uid_field, coreId.strip())
         filter_str = "(|{0})".format(filter_str)
         users = con.search_s(
             self.appbuilder.sm.auth_ldap_search, ldap.SCOPE_SUBTREE,
             filter_str, [
                 self.appbuilder.sm.auth_ldap_uid_field,
                 self.appbuilder.sm.auth_ldap_firstname_field,
                 self.appbuilder.sm.auth_ldap_lastname_field,
                 self.appbuilder.sm.auth_ldap_email_field
             ])
         # fetch roles
         if data.get('rolesSelect') and len(data['rolesSelect']) > 0:
             roles = self.appbuilder.get_session.query(Role).filter(
                 Role.id.in_(data['rolesSelect'])).all()
         else:
             roles = None
         # sync into local
         success_list = []
         for user_ldapinfo in users:
             motGUID = self.appbuilder.sm.ldap_extract(
                 user_ldapinfo[1], self.appbuilder.sm.auth_ldap_uid_field,
                 None)
             local_user = self.datamodel.session.query(MyUser).filter(
                 MyUser.username == motGUID.lower()).one_or_none()
             if not local_user:
                 local_user = MyUser()
                 local_user.username = motGUID.lower()
                 local_user.active = True
                 local_user.extinfo = UserExtInfo(user_type='ldap')
             local_user.first_name = self.appbuilder.sm.ldap_extract(user_ldapinfo[1], \
                                 self.appbuilder.sm.auth_ldap_firstname_field, local_user.first_name)
             local_user.last_name = self.appbuilder.sm.ldap_extract(user_ldapinfo[1], \
                                 self.appbuilder.sm.auth_ldap_lastname_field, local_user.last_name)
             local_user.email = self.appbuilder.sm.ldap_extract(user_ldapinfo[1], \
                                     self.appbuilder.sm.auth_ldap_email_field, local_user.email)
             if roles:
                 local_user.roles = roles
             result = self.datamodel.edit(local_user)
             if result:
                 log.debug("Successfully sync ldap user %s by %s",
                           local_user.username, g.user.username)
                 success_list.append(local_user.username)
                 coreIds.remove(local_user.username)
             else:
                 log.debug("Failed sync ldap user %s by %s",
                           local_user.username, g.user.username)
         return jsonify({
             'success_list': success_list,
             'failed_list': coreIds
         })
     else:
         return jsonify({'msg': 'Wrong parameter, coreId is null'}), 400