def get_token(apiver=fg_config['fgapiver']): api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: response = {} subject = request.values.get('subject') if request.method == 'GET': message = "Unhandled method: '%s'" % request.method response["error"] = message status = 400 elif request.method == 'POST': response = { "error": None, "groups": get_groups_file(groups_file), "subject": subject, "token": get_token_file(token_file) } status = 200 else: message = "Unhandled method: '%s'" % request.method response["error"] = message status = 400 # include _links part response["_links"] = [ { "rel": "self", "href": "/get-token" }, ] js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp
def user_tasks(user, apiver=fg_config['fgapiver']): global fgapisrv_db logging.debug('user_tasks(%s)/%s: %s' % (request.method, user, request.values.to_dict())) api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: application = request.values.get('application') user_name = current_user.get_name() user_id = current_user.get_id() logging.debug("user_name: '%s'" % user_name) logging.debug("user_id: '%s'" % user_id) user = request.values.get('user', user) if request.method == 'GET': auth_state, auth_msg = \ authorize_user(current_user, None, user, "users_tasks_view") if auth_state is True: if fgapisrv_db.user_exists(user): tasks_list = [] user_task_ids =\ fgapisrv_db.user_tasks_retrieve(user, application) for task_id in user_task_ids: task_record = fgapisrv_db.get_task_record(task_id) tasks_list += [ task_record, ] status = 200 response = {'tasks': tasks_list} else: status = 404 response = { 'message': 'User \'%s\' does not exists' % user } else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } else: status = 400 response = {"message": "Unhandled method: '%s'" % request.method} logging.debug('message: %s' % response.get('message', 'success')) js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp
def checktoken(apiver=fg_config['fgapiver']): logger.debug('Tocken check(%s): %s' % (request.method, request.values.to_dict())) api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: response = {} token = request.values.get('token') if request.method == 'GET': message = "Unhandled method: '%s'" % request.method response["error"] = message status = 400 elif request.method == 'POST': # response = { # "token_status": "valid", # # you may specify: # # portal_user - A portal user that can be mapped by # # fgapiserver_ptvmap.json map file # # portal_group - A portal group that can be mapped by # # fgapiserver_ptvmap.json map file # # "portal_user": fgapisrv_ptvdefusr # "portal_group": "admin" # } response = { "error": None, "groups": get_groups_file(groups_file), "subject": get_subject_file(subject_file), "token": token } status = 200 else: message = "Unhandled method: '%s'" % request.method response["error"] = message status = 400 # include _links part response["_links"] = [ { "rel": "self", "href": "/checktoken" }, ] js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp
def groups_group(group, apiver=fg_config['fgapiver']): global fgapisrv_db logging.debug('groups_group(%s)/%s: %s' % (request.method, group, request.values.to_dict())) api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: user_name = current_user.get_name() user_id = current_user.get_id() logging.debug("user_name: '%s'" % user_name) logging.debug("user_id: '%s'" % user_id) user = request.values.get('user', user_name) if request.method == 'GET': auth_state, auth_msg = \ authorize_user(current_user, None, user, "groups_view") if auth_state is True: group_info = fgapisrv_db.group_retrieve(group) if group_info is not None: status = 200 response = group_info else: status = 404 response = { 'message': 'No groups found with name or id: %s' % group } else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } elif request.method == 'POST': status = 404 response = {"message": "Not yet implemented"} else: status = 404 response = {"message": "Unhandled method: '%s'" % request.method} logging.debug('message: %s' % response.get('message', 'success')) js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp
def roles(apiver=fg_config['fgapiver']): global fgapisrv_db logging.debug('groups(%s): %s' % (request.method, request.values.to_dict())) api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: user_name = current_user.get_name() user_id = current_user.get_id() logging.debug("user_name: '%s'" % user_name) logging.debug("user_id: '%s'" % user_id) user = request.values.get('user', user_name) if request.method == 'GET': auth_state, auth_msg = \ authorize_user(current_user, None, user, "roles_view") if auth_state is True: role_list = fgapisrv_db.roles_retrieve() status = 200 response = {'roles': role_list} else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } else: status = 400 response = {"message": "Unhandled method: '%s'" % request.method} logging.debug('message: %s' % response.get('message', 'success')) js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp
def groups_group_roles(group, apiver=fg_config['fgapiver']): global fgapisrv_db logging.debug('groups_group_roles(%s)/%s: %s' % (request.method, group, request.values.to_dict())) api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: user_name = current_user.get_name() user_id = current_user.get_id() logging.debug("user_name: '%s'" % user_name) logging.debug("user_id: '%s'" % user_id) user = request.values.get('user', user_name) if request.method == 'GET': auth_state, auth_msg = \ authorize_user(current_user, None, user, "groups_roles_view") if auth_state is True: group_roles_info = fgapisrv_db.group_roles_retrieve(group) if group_roles_info is not None: status = 200 response = group_roles_info else: status = 404 response = { 'message': ('No roles found for group having name or ' 'id: %s' % group) } else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } elif request.method == 'POST': auth_state, auth_msg = \ authorize_user(current_user, None, user, "groups_roles_change") if auth_state is True: params = request.get_json() if params is not None: logging.debug("params: '%s'" % params) role_ids = params.get('roles', []) new_roles = fgapisrv_db.group_roles_add(group, role_ids) if new_roles is not []: status = 201 response = {'roles': new_roles} else: status = 400 response = { 'message': ('Unable to add roles: \'%s\' ' 'to the group: \'%s\'' % (role_ids, group)) } else: status = 400 response = {'message': 'Missing group'} else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } else: status = 400 response = {"message": "Unhandled method: '%s'" % request.method} logging.debug('message: %s' % response.get('message', 'success')) js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp
def groups(apiver=fg_config['fgapiver']): global fgapisrv_db logging.debug('groups(%s): %s' % (request.method, request.values.to_dict())) api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: user_name = current_user.get_name() user_id = current_user.get_id() logging.debug("user_name: '%s'" % user_name) logging.debug("user_id: '%s'" % user_id) user = request.values.get('user', user_name) if request.method == 'GET': auth_state, auth_msg = \ authorize_user(current_user, None, user, "groups_view") if auth_state is True: group_list = fgapisrv_db.groups_retrieve() status = 200 response = {'groups': group_list} else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } elif request.method == 'POST': auth_state, auth_msg = \ authorize_user(current_user, None, user, "groups_change") if auth_state is True: params = request.get_json() if params is not None: logging.debug("params: '%s'" % params) group_name = params.get('name', '') new_group = fgapisrv_db.group_add(group_name) if new_group is not None: status = 201 response = new_group else: status = 400 response = { 'message': 'Unable to create group: \'%s\'' % group_name } else: status = 400 response = {'message': 'Missing group'} else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } else: status = 400 response = {"message": "Unhandled method: '%s'" % request.method} logging.debug('message: %s' % response.get('message', 'success')) js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp
def users(apiver=fg_config['fgapiver']): global fgapisrv_db logging.debug('users(%s): %s' % (request.method, request.values.to_dict())) api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: user_name = current_user.get_name() user_id = current_user.get_id() logging.debug("user_name: '%s'" % user_name) logging.debug("user_id: '%s'" % user_id) user = request.values.get('user', user_name) if request.method == 'GET': auth_state, auth_msg = \ authorize_user(current_user, None, user, "users_view") if auth_state is True: user_record = fgapisrv_db.users_retrieve() status = 200 response = {"users": user_record} else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } elif request.method == 'POST': auth_state, auth_msg = \ authorize_user(current_user, None, user, "users_change") if auth_state is True: params = request.get_json() logging.debug("params: '%s'" % params) new_users = [] if params is not None: user_records = params.get('users', []) for user_data in user_records: user_record = fgapisrv_db.user_create(user_data) if user_record is not None: new_users.append(user_record) if new_users is not []: status = 201 response = {"users": new_users} else: status = 400 response = { 'message': 'Unable to create user(s) \'%s\'' % user_records } else: status = 400 response = {'message': 'Missing userdata'} else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } else: status = 400 response = {"message": "Unhandled method: '%s'" % request.method} logging.debug('message: %s' % response.get('message', 'success')) js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp
def users_user_data_name(user, data_name, apiver=fg_config['fgapiver']): global fgapisrv_db logging.debug('user_data_name(%s, %s)/%s: %s' % (request.method, user, data_name, request.values.to_dict())) api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: user_name = current_user.get_name() user_id = current_user.get_id() logging.debug("user_name: '%s'" % user_name) logging.debug("user_id: '%s'" % user_id) user = request.values.get('user', user) if request.method == 'GET': if fgapisrv_db.user_exists(user): data = fgapisrv_db.user_data_name(user, data_name) status = 200 response = data else: status = 404 response = {'message': 'User \'%s\' does not exists' % user} elif request.method == 'POST': if not fgapisrv_db.user_exists(user): status = 404 response = {'message': 'User \'%s\' does not exists' % user} else: data = request.get_json() data['data_name'] = data_name if data is not None: data_entries = [ data, ] inserted_data =\ fgapisrv_db.add_user_data(user, data_entries) if inserted_data is not None: status = 201 response = inserted_data[0] else: status = 400 response = { 'message': ('Unable to add data %s ' 'to user \'%s\'') % (data_entries, user) } else: status = 400 response = {'message': 'Missing data'} elif request.method == 'DELETE': if not fgapisrv_db.user_exists(user): status = 404 response = {'message': 'User \'%s\' does not exists' % user} else: data = {'data_name': data_name} if data is not None: data_entries = [ data, ] deleted_data =\ fgapisrv_db.delete_user_data(user, data_entries) if deleted_data is not None: status = 201 response = deleted_data[0] else: status = 400 response = { 'message': ('Unable to delete data %s' ' to user \'%s\'') % (data_entries, user) } else: status = 400 response = {'message': 'Missing data'} elif request.method == 'PATCH': if not fgapisrv_db.user_exists(user): status = 404 response = {'message': 'User \'%s\' does not exists' % user} else: data = request.get_json() data['data_name'] = data_name logging.debug("data: '%s'" % data) if data is not None: data_entries = [ data, ] modified_data =\ fgapisrv_db.modify_user_data(user, data_entries) if modified_data is not None: status = 201 response = modified_data[0] else: status = 400 response = { 'message': ('Unable to modify data %s' ' to user \'%s\'') % (data_entries, user) } else: status = 400 response = {'message': 'Missing data'} else: status = 400 response = {"message": "Unhandled method: '%s'" % request.method} logging.debug('message: %s' % response.get('message', 'success')) js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp
def user_groups(user, apiver=fg_config['fgapiver']): global fgapisrv_db logging.debug('user_groups(%s)/%s: %s' % (request.method, user, request.values.to_dict())) api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: user_name = current_user.get_name() user_id = current_user.get_id() logging.debug("user_name: '%s'" % user_name) logging.debug("user_id: '%s'" % user_id) user = request.values.get('user', user) if request.method == 'GET': auth_state, auth_msg = \ authorize_user(current_user, None, user, "users_groups_view") if auth_state is True: if fgapisrv_db.user_exists(user): group_list = fgapisrv_db.user_groups_retrieve(user) status = 200 response = {'groups': group_list} else: status = 404 response = { 'message': 'User \'%s\' does not exists' % user } else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } elif request.method == 'POST': auth_state, auth_msg = \ authorize_user(current_user, None, user, "users_groups_change") if auth_state is True: if not fgapisrv_db.user_exists(user): status = 404 response = { 'message': 'User \'%s\' does not exists' % user } else: params = request.get_json() logging.debug("params: '%s'" % params) if params is not None: group_list = params.get('groups', []) inserted_groups =\ fgapisrv_db.add_user_groups(user, group_list) if inserted_groups is not None: status = 201 response = {'groups': inserted_groups} else: status = 400 response = { 'message': ('Unable to assign groups %s ' 'to user \'%s\'') % (group_list, user) } else: status = 400 response = {'message': 'Missing groups'} else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } elif request.method == 'DELETE': auth_state, auth_msg = \ authorize_user(current_user, None, user, "users_groups_change") if auth_state is True: if not fgapisrv_db.user_exists(user): status = 404 response = { 'message': 'User \'%s\' does not exists' % user } else: params = request.get_json() logging.debug("params: '%s'" % params) if params is not None: group_list = params.get('groups', []) deleted_groups =\ fgapisrv_db.delete_user_groups(user, group_list) if deleted_groups is not None: status = 200 response = {'groups': deleted_groups} else: status = 400 response = { 'message': ('Unable to delete groups %s' ' to user \'%s\'') % (group_list, user) } else: status = 400 response = {'message': 'Missing groups'} else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } else: status = 400 response = {"message": "Unhandled method: '%s'" % request.method} logging.debug('message: %s' % response.get('message', 'success')) js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp
def users_user(user, apiver=fg_config['fgapiver']): global fgapisrv_db logging.debug('users(%s)/%s: %s' % (request.method, user, request.values.to_dict())) api_support, state, message = check_api_ver(apiver) if not api_support: status = 400 response = {"message": message} else: user_name = current_user.get_name() user_id = current_user.get_id() logging.debug("user_name: '%s'" % user_name) logging.debug("user_id: '%s'" % user_id) user = request.values.get('user', user) if request.method == 'GET': auth_state, auth_msg = \ authorize_user(current_user, None, user, "users_view") if auth_state is True: if fgapisrv_db.user_exists(user): user_record = fgapisrv_db.user_retrieve(user) status = 200 response = user_record else: status = 404 response = { 'message': 'User \'%s\' does not exists' % user } else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } elif request.method == 'POST': auth_state, auth_msg = \ authorize_user(current_user, None, user, "users_change") if auth_state is True: if fgapisrv_db.user_exists(user): user_record = fgapisrv_db.user_retrieve(user) status = 200 response = user_record else: params = request.get_json() logging.debug("params: '%s'" % params) if params is not None: user_data = { 'first_name': params.get('first_name', ''), 'last_name': params.get('last_name', ''), 'name': user, 'institute': params.get('institute', ''), 'mail': params.get('mail', ''), } user_record = fgapisrv_db.user_create(user_data) if user_record is not None: status = 201 response = user_record else: status = 400 response = { 'message': 'Unable to create user \'%s\'' % user } else: status = 400 response = {'message': 'Missing userdata'} else: status = 402 response = { "message": "Not authorized to perform this request:\n%s" % auth_msg } else: status = 400 response = {"message": "Unhandled method: '%s'" % request.method} logging.debug('message: %s' % response.get('message', 'success')) js = json.dumps(response, indent=fg_config['fgjson_indent']) resp = Response(js, status=status, mimetype='application/json') resp.headers['Content-type'] = 'application/json' return resp