summaryrefslogtreecommitdiffstats
path: root/testapi/opnfv_testapi/ui
diff options
context:
space:
mode:
authorSerenaFeng <feng.xiaowei@zte.com.cn>2017-05-17 18:31:26 +0800
committerSerena Feng <feng.xiaowei@zte.com.cn>2017-05-18 01:01:05 +0000
commitd57892f46ca4864f2188d0e4fccb97d3987c10d1 (patch)
treecaafd5d32898992591f9eb68a5e3d078ddd167c0 /testapi/opnfv_testapi/ui
parentbd392ea5ac1797d97348a8f98f254d0fff1241aa (diff)
add signin web to TestAPI
Change-Id: I4d39a8561c8ebd3238a495e5799fd43fb1a508b9 Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
Diffstat (limited to 'testapi/opnfv_testapi/ui')
-rw-r--r--testapi/opnfv_testapi/ui/__init__.py0
-rw-r--r--testapi/opnfv_testapi/ui/auth/__init__.py0
-rw-r--r--testapi/opnfv_testapi/ui/auth/constants.py14
-rw-r--r--testapi/opnfv_testapi/ui/auth/handlers.py37
-rw-r--r--testapi/opnfv_testapi/ui/auth/utils.py23
-rw-r--r--testapi/opnfv_testapi/ui/root.py10
6 files changed, 84 insertions, 0 deletions
diff --git a/testapi/opnfv_testapi/ui/__init__.py b/testapi/opnfv_testapi/ui/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testapi/opnfv_testapi/ui/__init__.py
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
--- /dev/null
+++ b/testapi/opnfv_testapi/ui/auth/__init__.py
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')