Add an oauth authorization page
This commit is contained in:
parent
ab60a10a93
commit
d469b41899
10 changed files with 287 additions and 41 deletions
|
@ -1,25 +1,33 @@
|
|||
READ_REPO = {
|
||||
'scope': 'repo:read',
|
||||
'description': ('Grants read-only access to all repositories for which the granting user or '
|
||||
' robot has access.')
|
||||
'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',
|
||||
'description': ('Grants read-write access to all repositories for which the granting user or '
|
||||
'robot has access, and is a superset of repo:read.')
|
||||
'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',
|
||||
'description': ('Grants administrator access to all repositories for which the granting user or '
|
||||
'robot has access, and is a superset of repo:read and repo:write.')
|
||||
'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',
|
||||
'description': ('Grants create repository access to all namespaces for which the granting user '
|
||||
'or robot is allowed to create repositories.')
|
||||
'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)}
|
||||
|
@ -32,3 +40,25 @@ def scopes_from_scope_string(scopes):
|
|||
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
|
||||
|
|
Reference in a new issue