def user_info(): """ get user info :return: respond model """ request_model = RequestModel(request) jwt = request_model.token user_info_jwt = decode_jwt(jwt)['user_info'] respond_model = RespondModel() respond_model.message = 'success' if 'admin' in user_info_jwt.get('roles'): user_info_jwt['roles'] = 'admin,poweruser,' + get_all_plugin_name() elif 'poweruser' in user_info_jwt.get('roles'): user_info_jwt['roles'] = 'poweruser,' + get_all_plugin_name() respond_model.data = user_info_jwt return respond_model
def libraries_detail(user_name, libraries): """ get user libraries settings :param libraries: search libraries :param user_name: user name :return: list settings """ collection = get_collection('user_libraries') query = {"user_name": user_name, "libraries": libraries} settings = collection.find_one(query) all_plugin = get_all_plugin_name() if settings: result = { 'libraries': settings.get('libraries'), 'active': settings.get('active'), 'disable': list( set(all_plugin.split(',')).difference( set(settings.get('active')))) } return result return {'libraries': '', 'active': [], 'disable': all_plugin.split(',')}
def plugin_authorization(plugin_name): """ check if user have authority to access the plugin that they want to access :param plugin_name: the plugin name which user want to access :return: Boolean """ request_model = RequestModel(request) roles = decode_jwt(request_model.token)['user_info'].get('roles') if 'admin' in roles: roles = 'admin,' + get_all_plugin_name() if 'poweruser' in roles: roles = get_all_plugin_name() if plugin_name in roles: return True else: return False
def install_plugin_require(): """ use pip to install packages stated in plugins' requirements.json :return: """ plugins_name = get_all_plugin_name() if plugins_name == '': return for plugin in plugins_name.split(','): config = get_config('app/plugins/%s/requirements.json' % plugin) if config: requirements = config.get('requirements') if requirements: for requirement in requirements: install_package(requirement.get("name"), requirement.get("version"))
def user_sign_up(user_info): """ user sign up :param user_info: dict user info :return: """ collection = get_collection("user") if collection.find_one({'name': user_info.get('name')}): return False collection.insert({ 'name': user_info.get('name'), 'password': get_password(user_info.get('name'), user_info.get('password')), 'email': user_info.get('email'), 'roles': get_all_plugin_name() }) return True
def get_libraries_settings(user_name): """ get user libraries settings :param user_name: user name :return: list settings """ collection = get_collection('user_libraries') query = {"user_name": user_name} settings = collection.find(query) plugins_active = get_all_plugin_name() result = [] for setting in settings: if setting.get('active'): data_plugin = '' for plugin in setting['active']: if plugin in plugins_active: data_plugin += ',' + plugin setting['active'] = data_plugin setting['id'] = str(setting['_id']) setting.pop('_id') setting['active'] = setting['active'][1:] result.append(setting) return result