Пример #1
0
    def switch(self, space_id):
        session['space_id'] = space_id

        # TODO
        current_user.last_space = space_id
        current_user.save()
        UserModel.fresh_session()
        return self.render_json()
Пример #2
0
    def switch(self, space_id):
        session['space_id'] = space_id

        # TODO
        current_user.last_space = space_id
        current_user.save()
        UserModel.fresh_session()
        return self.render_json()
Пример #3
0
 def menu(self):
     role = SUPER if current_user.role == SUPER else ROLE_ACCESS[session['space_info']['role']]
     user = UserModel(id=current_user.id).item()
     menu = MenuModel().menu(role=role)
     space = {
         'current': '',
         'available': '',
     }
     UserModel.fresh_session()
     # TODO
     # 超管不需要展示空间列表
     if current_user.role != SUPER:
         space = {
             'current': session['space_info'],
             'available': session['space_list'],
         }
     data = {
         'user': user,
         'menu': menu,
         'space': space,
     }
     return self.render_json(data=data)
Пример #4
0
 def menu(self):
     role = SUPER if current_user.role == SUPER else ROLE_ACCESS[
         session['space_info']['role']]
     user = UserModel(id=current_user.id).item()
     menu = MenuModel().menu(role=role)
     space = {
         'current': '',
         'available': '',
     }
     UserModel.fresh_session()
     # TODO
     # 超管不需要展示空间列表
     if current_user.role != SUPER:
         space = {
             'current': session['space_info'],
             'available': session['space_list'],
         }
     data = {
         'user': user,
         'menu': menu,
         'space': space,
     }
     return self.render_json(data=data)
Пример #5
0
    def login(self):
        """
        user login
        /passport/

        :return:
        """
        form = LoginForm(request.form, csrf=False)
        if form.validate_on_submit():

            if current_app.config['LDAP']:
                ldap = LDAP(current_app)
                if form.password.data == '':
                    userbind = None
                else:
                    userbind = ldap.bind_user(form.email.data,
                                              form.password.data)
            else:
                ldap = current_app.config['LDAP']
                userbind = None

            if form.email.data in current_app.config['LDAP_PRIVILEGE']:
                ldap = False

            if ldap:
                if userbind:
                    user = UserModel.query.filter_by(
                        email=form.email.data).first()
                    if user is not None:
                        login_user(user)
                        user.fresh_session()
                        return self.render_json(data=current_user.to_json())
                    else:
                        # ldap验证成功,取信息入库
                        ldap_user = ldap.get_object_details(form.email.data)
                        user_info = {
                            'username': ldap_user['displayName'][0].decode(),
                            'password':
                            generate_password_hash(form.password.data),
                            'email': form.email.data,
                            'role': '',
                            'last_space': 1,
                            'created_at': datetime.now(),
                            'updated_at': datetime.now(),
                        }
                        user = UserModel().add(user_info)

                        member_info = {
                            'user_id': user.id,
                            'source_id': 1,
                            'source_type': 'group',
                            'access_level': 'DEVELOPER',
                            'status': MemberModel.status_available
                        }
                        m = MemberModel(**member_info)
                        db.session.add(m)
                        db.session.commit()

                        login_user(user)
                        user.fresh_session()
                        return self.render_json(data=current_user.to_json())
                else:
                    return self.render_json(code=Code.error_pwd,
                                            data=form.errors)
            else:
                user = UserModel.query.filter_by(email=form.email.data).first()
                if user is not None and user.verify_password(
                        form.password.data):
                    login_user(user)
                    user.fresh_session()
                    return self.render_json(data=current_user.to_json())

        return self.render_json(code=Code.error_pwd, data=form.errors)