From d57892f46ca4864f2188d0e4fccb97d3987c10d1 Mon Sep 17 00:00:00 2001 From: SerenaFeng Date: Wed, 17 May 2017 18:31:26 +0800 Subject: add signin web to TestAPI Change-Id: I4d39a8561c8ebd3238a495e5799fd43fb1a508b9 Signed-off-by: SerenaFeng --- testapi/opnfv_testapi/ui/__init__.py | 0 testapi/opnfv_testapi/ui/auth/__init__.py | 0 testapi/opnfv_testapi/ui/auth/constants.py | 14 +++++++++++ testapi/opnfv_testapi/ui/auth/handlers.py | 37 ++++++++++++++++++++++++++++++ testapi/opnfv_testapi/ui/auth/utils.py | 23 +++++++++++++++++++ testapi/opnfv_testapi/ui/root.py | 10 ++++++++ 6 files changed, 84 insertions(+) create mode 100644 testapi/opnfv_testapi/ui/__init__.py create mode 100644 testapi/opnfv_testapi/ui/auth/__init__.py create mode 100644 testapi/opnfv_testapi/ui/auth/constants.py create mode 100644 testapi/opnfv_testapi/ui/auth/handlers.py create mode 100644 testapi/opnfv_testapi/ui/auth/utils.py create mode 100644 testapi/opnfv_testapi/ui/root.py (limited to 'testapi/opnfv_testapi/ui') diff --git a/testapi/opnfv_testapi/ui/__init__.py b/testapi/opnfv_testapi/ui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/testapi/opnfv_testapi/ui/auth/__init__.py b/testapi/opnfv_testapi/ui/auth/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/testapi/opnfv_testapi/ui/auth/constants.py b/testapi/opnfv_testapi/ui/auth/constants.py new file mode 100644 index 0000000..ec59751 --- /dev/null +++ b/testapi/opnfv_testapi/ui/auth/constants.py @@ -0,0 +1,14 @@ +# OpenID parameters +OPENID_MODE = 'openid.mode' +OPENID_NS = 'openid.ns' +OPENID_RETURN_TO = 'openid.return_to' +OPENID_CLAIMED_ID = 'openid.claimed_id' +OPENID_IDENTITY = 'openid.identity' +OPENID_REALM = 'openid.realm' +OPENID_NS_SREG = 'openid.ns.sreg' +OPENID_NS_SREG_REQUIRED = 'openid.sreg.required' +OPENID_NS_SREG_EMAIL = 'openid.sreg.email' +OPENID_NS_SREG_FULLNAME = 'openid.sreg.fullname' +OPENID_ERROR = 'openid.error' + +CSRF_TOKEN = 'csrf_token' diff --git a/testapi/opnfv_testapi/ui/auth/handlers.py b/testapi/opnfv_testapi/ui/auth/handlers.py new file mode 100644 index 0000000..511952d --- /dev/null +++ b/testapi/opnfv_testapi/ui/auth/handlers.py @@ -0,0 +1,37 @@ +from six.moves.urllib import parse + +from opnfv_testapi.common import config +from opnfv_testapi.resources import handlers +from opnfv_testapi.ui.auth import constants as const +from opnfv_testapi.ui.auth import utils + + +CONF = config.Config() + + +class SigninHandler(handlers.GenericApiHandler): + def get(self): + csrf_token = utils.get_token() + return_endpoint = parse.urljoin(CONF.api_url, + CONF.osid_openid_return_to) + return_to = utils.set_query_params(return_endpoint, + {const.CSRF_TOKEN: csrf_token}) + + params = { + const.OPENID_MODE: CONF.osid_openid_mode, + const.OPENID_NS: CONF.osid_openid_ns, + const.OPENID_RETURN_TO: return_to, + const.OPENID_CLAIMED_ID: CONF.osid_openid_claimed_id, + const.OPENID_IDENTITY: CONF.osid_openid_identity, + const.OPENID_REALM: CONF.api_url, + const.OPENID_NS_SREG: CONF.osid_openid_ns_sreg, + const.OPENID_NS_SREG_REQUIRED: CONF.osid_openid_sreg_required, + } + url = CONF.osid_openstack_openid_endpoint + url = utils.set_query_params(url, params) + self.redirect(url=url, permanent=False) + + +class SigninReturnHandler(handlers.GenericApiHandler): + def get(self): + self.redirect(url=CONF.ui_url) diff --git a/testapi/opnfv_testapi/ui/auth/utils.py b/testapi/opnfv_testapi/ui/auth/utils.py new file mode 100644 index 0000000..c3912ad --- /dev/null +++ b/testapi/opnfv_testapi/ui/auth/utils.py @@ -0,0 +1,23 @@ +import random +import string + +from six.moves.urllib import parse + + +def get_token(length=30): + """Get random token.""" + return ''.join(random.choice(string.ascii_lowercase) + for i in range(length)) + + +def set_query_params(url, params): + """Set params in given query.""" + url_parts = parse.urlparse(url) + url = parse.urlunparse(( + url_parts.scheme, + url_parts.netloc, + url_parts.path, + url_parts.params, + parse.urlencode(params), + url_parts.fragment)) + return url diff --git a/testapi/opnfv_testapi/ui/root.py b/testapi/opnfv_testapi/ui/root.py new file mode 100644 index 0000000..bba7a86 --- /dev/null +++ b/testapi/opnfv_testapi/ui/root.py @@ -0,0 +1,10 @@ +from opnfv_testapi.resources.handlers import GenericApiHandler +from opnfv_testapi.common import config + + +class RootHandler(GenericApiHandler): + def get_template_path(self): + return config.Config().static_path + + def get(self): + self.render('testapi-ui/index.html') -- cgit 1.2.3-korg