Exemple #1
0
def is_in_scope(admin_id, path):
    '''
    路由权限判断
    '''
    s = db.session()
    try:
        admin = s.query(Admin).filter(Admin.admin_id == admin_id).first()
        if not admin:
            return str('管理员不存在')
        if not admin.isLock:
            return str('管理员被禁用')

        role = s.query(Role).filter(Role.id == admin.role_id).first()
        route = []
        if role:
            for i in role.routes:
                route.append(i.to_json())

        for i in route:
            if i['path'] == path:
                return True

        return False
    except Exception, e:
        print e
        return False
Exemple #2
0
    def CreateLogRequest(self, params):
        '''
        新建日志
        '''
        try:
            s = db.session()
            if not params['username']:
                return True

            type = 0
            if params['path'] == '/v1/Admin/Login':
                type = 1
                if str(params['content']) == '管理员被禁用':
                    params['status'] = 2

            item = Log(
                ip=params['ip'],
                method=params['method'],
                path=params['path'],
                username=params['username'],
                status=params['status'],
                time=params['time'],
                content=str(params['content']),
                params=str(params['params']),
                type=type
            )
            s.add(item)
            s.commit()
            return True
        except Exception, e:
            print e
            return False
Exemple #3
0
    def __init_menus(self, data, parentId, role_id):
        s = db.session()
        for m in data:
            menu_id = uuid.uuid4()
            menu = self.__create_menu(m, menu_id, parentId)

            if m.has_key('interface'):
                interfaces = []
                for f in m['interface']:
                    interface = self.__create_interface(f, uuid.uuid4(), menu_id)
                    s.add(interface)
                    s.commit()
                    interfaces.append(interface)
                menu.interfaces = interfaces
            s.add(menu)

            role = s.query(Role).filter(Role.role_id == role_id).first()
            menus = []
            for i in role.menus:
                menus.append(i)
            menus.append(menu)
            role.menus = menus

            s.commit()
            if m.has_key('children'):
                self.__init_menus(m['children'], menu_id, role_id)
Exemple #4
0
    def CreateAdminRequest(self, params):
        '''
        新建管理员
        '''
        s = db.session()
        try:
            if params['role_id'] == 1:
                return str('不能设为为超级管理员')

            admin = s.query(Admin).filter(Admin.username == params['username']).first()

            if admin:
                return str('管理员已存在')

            item = Admin(
                admin_id=uuid.uuid4(),
                username=params['username'],
                password=Config().get_md5(params['password']),
                sex=int(params['sex']),
                nickname=params['nickname'],
                role_id=int(params['role_id']),
                avatarUrl=params['avatarUrl']
            )
            s.add(item)
            s.commit()
            return True
        except Exception as e:
            s.rollback()
            print e
            return str(e.message)
Exemple #5
0
def is_in_scope(admin_id, path):
    '''
    路由权限判断
    '''
    s = db.session()
    try:
        admin = s.query(Admin).filter(Admin.admin_id == admin_id).first()
        if not admin:
            return str('管理员不存在')
        if admin.is_disabled:
            return str('管理员被禁用')

        role = s.query(Role).filter(Role.role_id == admin.role_id,
                                    Role.is_disabled == False).first()
        if role:
            i = role.interfaces.filter(Interface.is_disabled == False,
                                       Interface.path == path)
            if i:
                return True
            m = role.menus.filter(Menu.is_disabled == False, Menu.path == path)
            if m:
                return True
            r = s.query(Route).filter(Route.path == path,
                                      Route.is_disabled == False).first()
            if r:
                return True

        return False
    except Exception, e:
        print e
        return False
Exemple #6
0
    def ModifyRoleRequest(self, role_id, params):
        '''
        修改权限信息
        '''
        s = db.session()
        try:
            role = s.query(Role).filter(Role.role_id == role_id).first()
            if not role:
                return str('数据不存在')

            route = s.query(Route).filter(
                Route.route_id.in_(params['route_id'])).all()
            menu = s.query(Menu).filter(Menu.menu_id.in_(
                params['menu_id'])).all()

            role.name = params['name']
            role.checkKey = params['checkKey']
            role.routes = route
            role.menus = menu
            s.commit()
            return True
        except Exception as e:
            print e
            s.rollback()
            return str(e.message)
Exemple #7
0
    def QueryDocumentByParamRequest(self,
                                    params,
                                    page=1,
                                    page_size=20,
                                    order_by='create_time'):
        '''
        文档列表
        '''
        s = db.session()
        try:
            Int = ['type', 'deleted', 'folder_id']
            data = {}

            for i in Int:
                if params.has_key(i):
                    data[i] = params[i]

            result = Document.query.filter_by(**data).filter(
                Document.name.like("%" + params['name'] + "%") if params.
                has_key('name') else text('')).order_by(order_by).paginate(
                    page, page_size, error_out=False)

            return {
                'data': [value.to_json() for value in result.items],
                'total': result.total
            }
        except Exception as e:
            print e
            return str(e.message)
Exemple #8
0
    def ModifyInterfaceRequest(self, interface_id, params):
        '''
        修改接口信息
        '''
        s = db.session()
        try:
            interface = s.query(Interface).filter(
                Interface.interface_id == interface_id).first()
            if not interface:
                return str('接口不存在')

            AllowableFields = [
                'name', 'path', 'method', 'description', 'menu_id'
            ]
            data = {}

            for i in params:
                if i in AllowableFields and params.has_key(i):
                    data[i] = params[i]

            s.query(Interface).filter(
                Interface.interface_id == interface_id).update(data)
            s.commit()
            return True
        except Exception as e:
            print e
            s.rollback()
            return str(e.message)
Exemple #9
0
    def QueryDocumentByParamRequest(self,
                                    params,
                                    page=1,
                                    page_size=20,
                                    order_by='create_time'):
        '''
        文档列表
        '''
        s = db.session()
        try:
            deleted = Document.deleted == (True if params['deleted'] == 'true'
                                           else False)
            folder = Document.folder_id == params['folder_id']
            if params['folder_id'] == '0':
                folder = or_(Document.folder_id == params['folder_id'],
                             Document.folder_id == None)

            status = text('')
            if params.has_key('status'):
                status = Document.status == int(params['status'])

            result = Document.query.filter(folder, deleted,
                                           status).order_by(order_by).paginate(
                                               page,
                                               page_size,
                                               error_out=False)

            return {
                'data': [value.to_json() for value in result.items],
                'total': result.total
            }
        except Exception as e:
            print e
            return str(e.message)
Exemple #10
0
    def QueryAdminByParamRequest(self,
                                 params,
                                 page=1,
                                 page_size=20,
                                 order_by='id'):
        '''
        管理员列表
        '''
        s = db.session()
        try:
            data = {}
            for i in ['role_id', 'isLock']:
                if params.has_key(i):
                    data[i] = params[i]

            result = Admin.query.filter_by(**data).order_by(order_by).paginate(
                page, page_size, error_out=False)

            return {
                'data': [value.to_json() for value in result.items],
                'total': result.total
            }
        except Exception as e:
            print e
            return str(e.message)
Exemple #11
0
    def CreateDocumentRequest(self, file, params):
        '''
        新建文档
        '''
        s = db.session()
        try:
            # 上传
            file_name = file.filename
            ext = self.file_extension(file_name)
            size = len(file.read())
            file.seek(0)

            fn = '/' + str(time.strftime('%Y/%m/%d'))
            if not os.path.exists(document_dir + fn):
                os.makedirs(document_dir + fn)
            path = fn + '/' + str(uuid.uuid1()) + '.' + ext
            file.save(document_dir + path)

            item = Document(document_id=uuid.uuid4(),
                            admin_id=params['admin_id'],
                            name=file_name,
                            type=params['type'],
                            ext=ext,
                            path=path,
                            size=size)
            s.add(item)
            s.commit()
            return path
        except Exception as e:
            s.rollback()
            print e
            return str(e.message)
Exemple #12
0
    def GetAdminRequest(self, username, password):
        '''
        查询管理员
        '''
        s = db.session()
        try:
            admin = s.query(Admin).filter(Admin.username == username, Admin.password == Config().get_md5(password)).first()
            if not admin:
                return str('管理员不存在')
            if not admin.isLock:
                return str('管理员被禁用')

            data = admin.to_json()
            route = []
            menu = []
            interface = []
            role = s.query(Role).filter(Role.id == admin.role_id).first()
            if role:
                for i in role.routes:
                    route.append(i.to_json())
                for i in role.menus:
                    menu.append(i.to_json())
                    interfaces = s.query(Interface).filter(Interface.menu_id == i.menu_id).all()
                    interface = interface + [i.to_json() for i in interfaces]

            data['routes'] = route
            data['menus'] = menu
            data['interface'] = interface
            return data
        except Exception as e:
            print e
            return str(e.message)
Exemple #13
0
    def ModifyRouteRequest(self, route_id, params):
        '''
        修改路由信息
        '''
        s = db.session()
        try:
            route = s.query(Route).filter(Route.route_id == route_id).first()
            if not route:
                return str('路由不存在')

            AllowableFields = [
                'parent_id', 'name', 'path', 'title', 'component',
                'componentPath', 'cache'
            ]
            data = {}

            for i in params:
                if i in AllowableFields and params.has_key(i):
                    data[i] = params[i]

            s.query(Route).filter(Route.route_id == route_id).update(data)
            s.commit()
            return True
        except Exception as e:
            print e
            s.rollback()
            return str(e.message)
Exemple #14
0
    def CreateDropRequest(self):
        try:
            db.drop_all()
            db.create_all()

            s = db.session()
            admin = Admin(
                admin_id=uuid.uuid4(),
                username=u'Admin',
                password=Config().get_md5('123456'),
                avatarUrl='',
                role_id=1
            )
            s.add(admin)
            s.commit()

            role_id = uuid.uuid4()
            role = Role(role_id=role_id, name=u'超级管理员', checkKey='[]')
            s.add(role)
            s.commit()

            self.__init_routes(init_route, '0', role_id)
            self.__init_menus(init_menu, '0', role_id)
            return True
        except Exception as e:
            print e
            return str(e.message)
Exemple #15
0
    def ModifyAdminRequest(self, admin_id, params):
        '''
        修改管理员信息
        '''
        s = db.session()
        try:
            if params['role_id'] == 1:
                return str('不能设为为超级管理员')

            admin = s.query(Admin).filter(Admin.admin_id == admin_id).first()
            if not admin:
                return str('管理员不存在')
            if not admin.isLock:
                return str('管理员被禁用')

            AllowableFields = ['password', 'nickname', 'sex', 'role_id', 'avatarUrl']
            data = {}

            for i in params:
                if i in AllowableFields and params.has_key(i):
                    data[i] = params[i]

            s.query(Admin).filter(Admin.admin_id == admin_id).update(data)
            s.commit()
            return True
        except Exception as e:
            print e
            s.rollback()
            return str(e.message)
Exemple #16
0
    def LockMenuRequest(self, menu_id, isLock):
        '''
        禁用菜单
        '''
        s = db.session()
        try:
            menu = s.query(Menu).filter(Menu.menu_id == menu_id).first()

            if isLock:
                parent = s.query(Menu).filter(Menu.menu_id == menu.parent_id,
                                              Menu.isLock == False).first()
                if parent:
                    return str('父菜单处于禁用状态, 该菜单不能启用')

            menu.isLock = isLock
            s.commit()

            if not isLock:
                s.query(Menu).filter(Menu.parent_id == menu_id,
                                     Menu.isLock == True).update(
                                         {Menu.isLock: False})
                s.commit()

            return True
        except Exception as e:
            print e
            s.rollback()
            return str(e.message)
Exemple #17
0
    def ModifyMenuRequest(self, menu_id, params):
        '''
        修改菜单信息
        '''
        s = db.session()
        try:
            menu = s.query(Menu).filter(Menu.menu_id == menu_id).first()
            if not menu:
                return str('菜单不存在')

            AllowableFields = [
                'parent_id', 'title', 'path', 'icon', 'sort', 'type'
            ]
            data = {}

            for i in params:
                if i in AllowableFields and params.has_key(i):
                    data[i] = params[i]

            s.query(Menu).filter(Menu.menu_id == menu_id).update(data)
            s.commit()
            return True
        except Exception as e:
            print e
            s.rollback()
            return str(e.message)
Exemple #18
0
def checkDb():
    try:
        s = db.session()
        res = s.query(InitSql).first()
        return res.isInit
    except Exception as e:
        return str('数据库未连接或者其他错误请查看错误信息:' + e.message)
Exemple #19
0
def is_in_scope(admin_id, path):
    '''
    路由权限判断
    '''
    s = db.session()
    try:
        admin = s.query(Admin).filter(Admin.admin_id == admin_id).first()
        if not admin:
            return str('管理员不存在')
        if not admin.isLock:
            return str('管理员被禁用')

        role = s.query(Role).filter(Role.id == admin.role_id,
                                    Role.isLock == True).first()
        if role:
            route = role.routes.filter(Route.isLock == True,
                                       Route.path == path)
            if route:
                return True
            else:
                interface = role.menus.join(Interface).filter(
                    Menu.isLock == True, Interface.path == path)
                if interface:
                    return True

        return False
    except Exception, e:
        print e
        return False
Exemple #20
0
    def DelFolderRequest(self, folder_id, isFolder=True):
        '''
        删除文件夹
        isFolder True:删除关联文件夹 False:关联文件夹移到根目录
        关联文档默认到根目录
        '''
        s = db.session()
        try:
            folder = s.query(Folder).filter(
                Folder.folder_id == folder_id).first()
            if not folder:
                return str('文件夹不存在')

            folder_list = s.query(Folder).filter(
                Folder.parent_id == folder_id).all()
            if not isFolder:
                for i in folder_list:
                    s.query(Document).filter(
                        Document.folder_id == i.folder_id).update(
                            {Document.folder_id: '0'})
                folder_list.update({Folder.parent_id: '0'})
            else:
                folder_list.delete()

            s.commit()
            return True
        except Exception as e:
            print e
            s.rollback()
            return str(e.message)
Exemple #21
0
    def QueryInterfaceByParamRequest(self,
                                     params,
                                     page=1,
                                     page_size=20,
                                     order_by='id'):
        '''
        接口列表
        '''
        s = db.session()
        try:
            Int = ['menu_id', 'isLock', 'method']
            data = {}

            for i in Int:
                if params.has_key(i):
                    data[i] = params[i]

            result = Interface.query.filter_by(**data).filter(
                Interface.name.like("%" + params['name'] + "%") if params.
                has_key('name') else '').order_by(order_by).paginate(
                    page, page_size, error_out=False)

            data = []
            for value in result.items:
                data.append(value.to_json())

            return {'data': data, 'total': result.total}
        except Exception as e:
            print e
            return str(e.message)
Exemple #22
0
 def __init_routes(self, data, pid):
     s = db.session()
     for r in data:
         route_id = uuid.uuid4()
         route = self.__create_route(r, route_id, pid)
         s.add(route)
         s.commit()
         if r.has_key('children'):
             self.__init_routes(r['children'], route_id)
Exemple #23
0
 def before_first_request():
     # 运行models,以创建不存在的表
     try:
         db.create_all()
         s = db.session()
         res = s.query(InitSql).first()
         if not res:
             s.add(InitSql(isInit=False))
             s.commit()
     except:
         return ResultDeal(code=-1, msg=u'数据库未连接错误或者出现错误')
Exemple #24
0
    def QueryFolderByParamRequest(self):
        '''
        文件夹列表
        '''
        s = db.session()
        try:
            result = Folder.query.order_by(Folder.id).all()

            return [value.to_json() for value in result]
        except Exception as e:
            print e
            return str(e.message)
Exemple #25
0
 def GetMenuToInterfaceRequest(self, menu_id):
     '''
     获取菜单下级联的API接口
     '''
     s = db.session()
     try:
         menu = s.query(Menu).filter(Menu.menu_id == menu_id).first()
         return [i.to_json() for i in menu.interfaces]
     except Exception as e:
         print e
         s.rollback()
         return str(e.message)
Exemple #26
0
 def LockAdminRequest(self, admin_id, is_disabled):
     '''
     禁用管理员
     '''
     s = db.session()
     try:
         s.query(Admin).filter(Admin.admin_id.in_(admin_id)).update({Admin.is_disabled: is_disabled}, synchronize_session=False)
         s.commit()
         return True
     except Exception as e:
         print e
         s.rollback()
         return str(e.message)
Exemple #27
0
 def LockRouteRequest(self, route_id, is_disabled):
     '''
     禁用路由
     '''
     s = db.session()
     try:
         s.query(Route).filter(Route.route_id.in_(route_id)).update({Route.is_disabled: is_disabled}, synchronize_session=False)
         s.commit()
         return True
     except Exception as e:
         print e
         s.rollback()
         return str(e.message)
Exemple #28
0
 def LockInterfaceRequest(self, interface_id, isLock):
     '''
     禁用接口
     '''
     s = db.session()
     try:
         s.query(Interface).filter(Interface.interface_id.in_(interface_id)).update({Interface.isLock: isLock}, synchronize_session=False)
         s.commit()
         return True
     except Exception as e:
         print e
         s.rollback()
         return str(e.message)
Exemple #29
0
 def LockRoleRequest(self, role_id, isLock):
     '''
     禁用权限
     '''
     s = db.session()
     try:
         s.query(Role).filter(Role.role_id.in_(role_id)).update(
             {Role.isLock: isLock})
         s.commit()
         return True
     except Exception as e:
         print e
         s.rollback()
         return str(e.message)
Exemple #30
0
    def GetInterfaceRequest(self, interface_id):
        '''
        查询接口
        '''
        s = db.session()
        try:
            interface = s.query(Interface).filter(Interface.interface_id == interface_id).first()
            if not interface:
                return str('接口不存在')

            return interface.to_json()
        except Exception as e:
            print e
            return str(e.message)