You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@milagro.apache.org by sa...@apache.org on 2016/08/15 11:23:40 UTC
[3/9] incubator-milagro-mfa-server git commit: Refactor: Extract
business logic in separete file
Refactor: Extract business logic in separete file
Extract mobile flow logic from the handler in separete file
We want it to be more easy to test and change
Project: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-server/commit/89ec87d3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-server/tree/89ec87d3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-server/diff/89ec87d3
Branch: refs/heads/master
Commit: 89ec87d330253f354241b63bab5487e71344edfb
Parents: dfe7670
Author: Pavlin Angelov <pa...@miracl.com>
Authored: Wed Jun 1 15:39:07 2016 +0300
Committer: Pavlin Angelov <pa...@miracl.com>
Committed: Wed Jun 1 15:39:07 2016 +0300
----------------------------------------------------------------------
servers/rps/mobile_flow.py | 54 +++++++++++++++++++++++++++++++++++++++++
servers/rps/rps.py | 34 +++-----------------------
2 files changed, 58 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-server/blob/89ec87d3/servers/rps/mobile_flow.py
----------------------------------------------------------------------
diff --git a/servers/rps/mobile_flow.py b/servers/rps/mobile_flow.py
new file mode 100644
index 0000000..638b115
--- /dev/null
+++ b/servers/rps/mobile_flow.py
@@ -0,0 +1,54 @@
+import uuid
+import datetime
+
+from tornado.log import app_log as log
+from tornado.options import options
+
+from mpin_utils import secrets
+from mpin_utils.common import (
+ Time,
+)
+
+
+class MobileFlow:
+ """ Holds Bussines logic for the Mobile flow """
+
+ def __init__(self, application, storage):
+ self.application = application
+ self.storage = storage
+
+ def generate_wid(self):
+ # Generate request for MPinWIDServer for WID
+ wId = uuid.uuid4().hex
+
+ while wId is None or (self.storage.find(stage="auth", wid=wId)):
+ if wId is None:
+ log.debug("WebId is None".format(wId))
+ else:
+ log.debug("WebId {0} already exists. Generating a new one".format(wId))
+
+ wId = uuid.uuid4().hex
+ log.debug("New webId generated: {0}." .format(wId))
+
+ return wId
+
+ def generate_qr(self, wId):
+ webOTT = secrets.generate_ott(options.OTTLength, self.application.server_secret.rng, "hex")
+
+ nowTime = Time.syncedNow()
+ expirePinPadTime = nowTime + datetime.timedelta(seconds=options.accessNumberExpireSeconds)
+ expireTime = expirePinPadTime + datetime.timedelta(seconds=options.accessNumberExtendValiditySeconds)
+
+ self.storage.add(stage="auth", expire_time=expireTime, webOTT=webOTT, wid=wId)
+
+ qrUrl = options.rpsBaseURL + "#" + wId
+
+ params = {
+ "ttlSeconds": options.accessNumberExpireSeconds,
+ "qrUrl": qrUrl,
+ "webOTT": webOTT,
+ "localTimeStart": Time.DateTimetoEpoch(nowTime),
+ "localTimeEnd": Time.DateTimetoEpoch(expirePinPadTime)
+ }
+
+ return params
http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-server/blob/89ec87d3/servers/rps/rps.py
----------------------------------------------------------------------
diff --git a/servers/rps/rps.py b/servers/rps/rps.py
index ed6231b..12986dd 100755
--- a/servers/rps/rps.py
+++ b/servers/rps/rps.py
@@ -27,7 +27,6 @@ import random
import sys
import time
import urllib
-import uuid
from urlparse import urlparse
import tornado.autoreload
@@ -57,6 +56,8 @@ from dynamic_options import (
process_dynamic_options,
)
+from mobile_flow import MobileFlow
+
if os.name == "posix":
from mpDaemon import Daemon
elif os.name == "nt":
@@ -714,35 +715,8 @@ class RPSGetQrUrlHandler(BaseHandler):
@tornado.web.asynchronous
@tornado.gen.engine
def post(self):
- # Generate request for MPinWIDServer for WID
- wId = uuid.uuid4().hex
-
- while wId is None or (self.storage.find(stage="auth", wid=wId)):
- if wId is None:
- log.debug("WebId is None".format(wId))
- else:
- log.debug("WebId {0} already exists. Generating a new one".format(wId))
-
- wId = uuid.uuid4().hex
-
- log.debug("New webId generated: {0}." .format(wId))
-
- webOTT = secrets.generate_ott(options.OTTLength, self.application.server_secret.rng, "hex")
-
- nowTime = Time.syncedNow()
- expirePinPadTime = nowTime + datetime.timedelta(seconds=options.accessNumberExpireSeconds)
- expireTime = expirePinPadTime + datetime.timedelta(seconds=options.accessNumberExtendValiditySeconds)
-
- self.storage.add(stage="auth", expire_time=expireTime, webOTT=webOTT, wid=wId)
-
- qrUrl = options.rpsBaseURL + "#" + wId
- params = {
- "ttlSeconds": options.accessNumberExpireSeconds,
- "qrUrl": qrUrl,
- "webOTT": webOTT,
- "localTimeStart": Time.DateTimetoEpoch(nowTime),
- "localTimeEnd": Time.DateTimetoEpoch(expirePinPadTime)
- }
+ mobileFlow = MobileFlow(self.application, self.storage)
+ params = mobileFlow.generate_qr(mobileFlow.generate_wid())
self.write(params)
self.finish()