Add an oauth authorization page

This commit is contained in:
Joseph Schorr 2014-03-14 18:57:28 -04:00
parent ab60a10a93
commit d469b41899
10 changed files with 287 additions and 41 deletions

View file

@ -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