64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
READ_REPO = {
|
|
'scope': 'repo:read',
|
|
'icon': 'fa-hdd-o',
|
|
'title': 'View all visible repositories',
|
|
'description': ('This application will be able to view and pull all repositories visible to the '
|
|
'granting user or robot account')
|
|
}
|
|
|
|
WRITE_REPO = {
|
|
'scope': 'repo:write',
|
|
'icon': 'fa-hdd-o',
|
|
'title': 'Read/Write to any accessible repositories',
|
|
'description': ('This application will be able to view, push and pull to all repositories to which the '
|
|
'granting user or robot account has write access')
|
|
}
|
|
|
|
ADMIN_REPO = {
|
|
'scope': 'repo:admin',
|
|
'icon': 'fa-hdd-o',
|
|
'title': 'Administer Repositories',
|
|
'description': ('This application will have administrator access to all repositories to which the '
|
|
'granting user or robot account has access')
|
|
}
|
|
|
|
CREATE_REPO = {
|
|
'scope': 'repo:create',
|
|
'icon': 'fa-plus',
|
|
'title': 'Create Repositories',
|
|
'description': ('This application will be able to create repositories in to any namespaces that '
|
|
'the granting user or robot account is allowed to create repositories')
|
|
}
|
|
|
|
ALL_SCOPES = {scope['scope']:scope for scope in (READ_REPO, WRITE_REPO, ADMIN_REPO, CREATE_REPO)}
|
|
|
|
|
|
def scopes_from_scope_string(scopes):
|
|
return {ALL_SCOPES.get(scope, {}).get('scope', None) for scope in scopes.split(',')}
|
|
|
|
|
|
def validate_scope_string(scopes):
|
|
decoded = scopes_from_scope_string(scopes)
|
|
return None not in decoded and len(decoded) > 0
|
|
|
|
|
|
def is_subset_string(full_string, expected_string):
|
|
""" Returns true if the scopes found in expected_string are also found
|
|
in full_string.
|
|
"""
|
|
full_scopes = scopes_from_scope_string(full_string)
|
|
expected_scopes = scopes_from_scope_string(expected_string)
|
|
return expected_scopes.issubset(full_scopes)
|
|
|
|
def get_scope_information(scopes_string):
|
|
scopes = scopes_from_scope_string(scopes_string)
|
|
scope_info = []
|
|
for scope in scopes:
|
|
scope_info.append({
|
|
'title': ALL_SCOPES[scope]['title'],
|
|
'scope': ALL_SCOPES[scope]['scope'],
|
|
'description': ALL_SCOPES[scope]['description'],
|
|
'icon': ALL_SCOPES[scope]['icon'],
|
|
})
|
|
|
|
return scope_info
|