Implement session-based and OAuth 2 authentications

Relates #21. Please see acceptance docs for feature details.

Signed-off-by: Aaron Tan <jangsutsr@gmail.com>
This commit is contained in:
Aaron Tan
2017-11-02 17:18:27 -04:00
committed by adamscmRH
parent 2ebee58727
commit 1c2621cd60
37 changed files with 1712 additions and 144 deletions

18
awx/api/urls/oauth.py Normal file
View File

@@ -0,0 +1,18 @@
# Copyright (c) 2017 Ansible, Inc.
# All Rights Reserved.
from django.conf.urls import url
from oauth2_provider.urls import base_urlpatterns
from awx.api.views import (
ApiOAuthAuthorizationRootView,
)
urls = [
url(r'^$', ApiOAuthAuthorizationRootView.as_view(), name='oauth_authorization_root_view'),
] + base_urlpatterns
__all__ = ['urls']

View File

@@ -5,6 +5,10 @@ from __future__ import absolute_import, unicode_literals
from django.conf import settings
from django.conf.urls import include, url
from awx.api.generics import (
LoggedLoginView,
LoggedLogoutView,
)
from awx.api.views import (
ApiRootView,
ApiV1RootView,
@@ -60,6 +64,8 @@ from .schedule import urls as schedule_urls
from .activity_stream import urls as activity_stream_urls
from .instance import urls as instance_urls
from .instance_group import urls as instance_group_urls
from .user_oauth import urls as user_oauth_urls
from .oauth import urls as oauth_urls
v1_urls = [
@@ -116,6 +122,7 @@ v2_urls = [
url(r'^jobs/(?P<pk>[0-9]+)/credentials/$', JobCredentialsList.as_view(), name='job_credentials_list'),
url(r'^job_templates/(?P<pk>[0-9]+)/extra_credentials/$', JobTemplateExtraCredentialsList.as_view(), name='job_template_extra_credentials_list'),
url(r'^job_templates/(?P<pk>[0-9]+)/credentials/$', JobTemplateCredentialsList.as_view(), name='job_template_credentials_list'),
url(r'^me/oauth/', include(user_oauth_urls))
url(r'^schedules/preview/$', SchedulePreview.as_view(), name='schedule_rrule'),
url(r'^schedules/zoneinfo/$', ScheduleZoneInfo.as_view(), name='schedule_zoneinfo'),
]
@@ -125,6 +132,14 @@ urlpatterns = [
url(r'^$', ApiRootView.as_view(), name='api_root_view'),
url(r'^(?P<version>(v2))/', include(v2_urls)),
url(r'^(?P<version>(v1|v2))/', include(v1_urls)),
url(r'^login/$', LoggedLoginView.as_view(
template_name='rest_framework/login.html',
extra_context={'inside_login_context': True}
), name='login'),
url(r'^logout/$', LoggedLogoutView.as_view(
next_page='/api/', redirect_field_name='next'
), name='logout'),
url(r'^o/', include(oauth_urls))
]
if settings.SETTINGS_MODULE == 'awx.settings.development':
from awx.api.swagger import SwaggerSchemaView

View File

@@ -0,0 +1,49 @@
# Copyright (c) 2017 Ansible, Inc.
# All Rights Reserved.
from django.conf.urls import url
from awx.api.views import (
UserMeOauthRootView,
UserMeOauthApplicationList,
UserMeOauthApplicationDetail,
UserMeOauthApplicationTokenList,
UserMeOauthApplicationActivityStreamList,
UserMeOauthTokenList,
UserMeOauthTokenDetail,
UserMeOauthTokenActivityStreamList
)
urls = [
url(r'^$', UserMeOauthRootView.as_view(), name='user_me_oauth_root_view'),
url(r'^applications/$', UserMeOauthApplicationList.as_view(), name='user_me_oauth_application_list'),
url(
r'^applications/(?P<pk>[0-9]+)/$',
UserMeOauthApplicationDetail.as_view(),
name='user_me_oauth_application_detail'
),
url(
r'^applications/(?P<pk>[0-9]+)/tokens/$',
UserMeOauthApplicationTokenList.as_view(),
name='user_me_oauth_application_token_list'
),
url(
r'^applications/(?P<pk>[0-9]+)/activity_stream/$',
UserMeOauthApplicationActivityStreamList.as_view(),
name='user_me_oauth_application_activity_stream_list'
),
url(r'^tokens/$', UserMeOauthTokenList.as_view(), name='user_me_oauth_token_list'),
url(
r'^tokens/(?P<pk>[0-9]+)/$',
UserMeOauthTokenDetail.as_view(),
name='user_me_oauth_token_detail'
),
url(
r'^tokens/(?P<pk>[0-9]+)/activity_stream/$',
UserMeOauthTokenActivityStreamList.as_view(),
name='user_me_oauth_token_activity_stream_list'
),
]
__all__ = ['urls']