Skip to content

Commit

Permalink
get project name from backend rather than param (#482)
Browse files Browse the repository at this point in the history
  • Loading branch information
Yuqing-cat authored Jul 20, 2022
1 parent ece50cf commit d463eae
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 13 deletions.
21 changes: 9 additions & 12 deletions registry/access_control/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,23 @@ def get_project_features(project: str, keyword: Optional[str] = None, requestor:
response = requests.get(registry_url + "/projects/" + project + "/features", headers = get_api_header(requestor)).content.decode('utf-8')
return json.loads(response)


@router.get("/features/{feature}", name="Get a single feature by feature Id [Read Access Required]")
def get_feature(feature: str, project: str, requestor: User = Depends(project_read_access)) -> dict:
response = requests.get(registry_url + "/features/" + feature, headers = get_api_header(requestor)).content.decode('utf-8')
return json.loads(response)

# To make sure the consistent experience of Registry API and Access Control Plugin.
# Even if user doesn't provide the project name, the API can still work.
@router.get("/features/{feature}", name="Get a single feature by feature Id [Read Access Required]")
def get_feature(feature: str, requestor: User = Depends(get_user)) -> dict:
response = requests.get(registry_url + "/features/" + feature, headers = get_api_header(requestor)).content.decode('utf-8')
ret = json.loads(response)
validate_project_access_for_feature(ret["qualified_name"], requestor, AccessType.READ)

feature_qualifiedName = ret['attributes']['qualifiedName']
validate_project_access_for_feature(feature_qualifiedName, requestor, AccessType.READ)
return ret

@router.get("/features/{feature}/lineage/{project}", name="Get Feature Lineage [Read Access Required]")
def get_feature_lineage(feature: str, requestor: User = Depends(project_read_access)) -> dict:
@router.get("/features/{feature}/lineage", name="Get Feature Lineage [Read Access Required]")
def get_feature_lineage(feature: str, requestor: User = Depends(get_user)) -> dict:
response = requests.get(registry_url + "/features/" + feature + "/lineage", headers = get_api_header(requestor)).content.decode('utf-8')
return json.loads(response)
ret = json.loads(response)

feature_qualifiedName = ret['guidEntityMap'][feature]['attributes']['qualifiedName']
validate_project_access_for_feature(feature_qualifiedName, requestor, AccessType.READ)
return ret

@router.post("/projects", name="Create new project with definition [Auth Required]")
def new_project(definition: dict, requestor: User = Depends(get_user)) -> dict:
Expand Down
2 changes: 1 addition & 1 deletion registry/access_control/rbac/access.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def validate_project_access_for_feature(feature:str, user:str, access:str):


def _get_project_from_feature(feature: str):
feature_delimiter = "__request_features__"
feature_delimiter = "__"
return feature.split(feature_delimiter)[0]

def get_api_header(requestor: User):
Expand Down

0 comments on commit d463eae

Please sign in to comment.