summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnike Arni <aarni@thoughtworks.com>2017-03-29 14:37:41 -0300
committerAnike Arni <aarni@thoughtworks.com>2017-03-30 15:10:56 -0300
commitc5c858f92b30862d0b8977b7559e437cdd073d7f (patch)
tree1f3bd8ea3ec2b2edb92ea1fbc457395246cac55d
parent648aeebe1be3d29a6fdf3199a8d86d92de676b5a (diff)
[#932] Makes account recovery resource public
-rw-r--r--service/pixelated/resources/account_recovery_resource.py5
-rw-r--r--service/pixelated/resources/login_resource.py3
-rw-r--r--service/pixelated/resources/root_resource.py2
-rw-r--r--service/test/unit/resources/test_login_resource.py10
-rw-r--r--web-ui/config/public-assets-webpack.js1
-rw-r--r--web-ui/src/account_recovery/account_recovery.html2
-rw-r--r--web-ui/webpack.config.js4
-rw-r--r--web-ui/webpack.production.config.js4
8 files changed, 23 insertions, 8 deletions
diff --git a/service/pixelated/resources/account_recovery_resource.py b/service/pixelated/resources/account_recovery_resource.py
index ccfdc580..8cb10fc8 100644
--- a/service/pixelated/resources/account_recovery_resource.py
+++ b/service/pixelated/resources/account_recovery_resource.py
@@ -18,19 +18,20 @@ import os
from pixelated.resources import BaseResource
from twisted.python.filepath import FilePath
-from pixelated.resources import get_protected_static_folder
+from pixelated.resources import get_public_static_folder
from twisted.web.http import OK
from twisted.web.template import Element, XMLFile, renderElement
class AccountRecoveryPage(Element):
- loader = XMLFile(FilePath(os.path.join(get_protected_static_folder(), 'account_recovery.html')))
+ loader = XMLFile(FilePath(os.path.join(get_public_static_folder(), 'account_recovery.html')))
def __init__(self):
super(AccountRecoveryPage, self).__init__()
class AccountRecoveryResource(BaseResource):
+ BASE_URL = 'account-recovery'
isLeaf = True
def __init__(self, services_factory):
diff --git a/service/pixelated/resources/login_resource.py b/service/pixelated/resources/login_resource.py
index 3e1200d7..45942ea6 100644
--- a/service/pixelated/resources/login_resource.py
+++ b/service/pixelated/resources/login_resource.py
@@ -20,6 +20,7 @@ from xml.sax import SAXParseException
from pixelated.authentication import Authenticator
from pixelated.config.leap import BootstrapUserServices
from pixelated.resources import BaseResource, UnAuthorizedResource, IPixelatedSession
+from pixelated.resources.account_recovery_resource import AccountRecoveryResource
from pixelated.resources import get_public_static_folder, respond_json
from twisted.cred.error import UnauthorizedLogin
from twisted.internet import defer
@@ -101,6 +102,8 @@ class LoginResource(BaseResource):
return self
if path == 'status':
return LoginStatusResource(self._services_factory)
+ if path == AccountRecoveryResource.BASE_URL:
+ return AccountRecoveryResource(self._services_factory)
if not self.is_logged_in(request):
return UnAuthorizedResource()
return NoResource()
diff --git a/service/pixelated/resources/root_resource.py b/service/pixelated/resources/root_resource.py
index 02f2fb62..d860c422 100644
--- a/service/pixelated/resources/root_resource.py
+++ b/service/pixelated/resources/root_resource.py
@@ -92,7 +92,7 @@ class RootResource(BaseResource):
def initialize(self, provider=None, disclaimer_banner=None, authenticator=None):
self._child_resources.add('assets', File(self._protected_static_folder))
- self._child_resources.add('account-recovery', AccountRecoveryResource(self._services_factory))
+ self._child_resources.add(AccountRecoveryResource.BASE_URL, AccountRecoveryResource(self._services_factory))
self._child_resources.add('backup-account', BackupAccountResource(self._services_factory, authenticator))
self._child_resources.add('sandbox', SandboxResource(self._protected_static_folder))
self._child_resources.add('keys', KeysResource(self._services_factory))
diff --git a/service/test/unit/resources/test_login_resource.py b/service/test/unit/resources/test_login_resource.py
index 9f940bc6..eaaba1d4 100644
--- a/service/test/unit/resources/test_login_resource.py
+++ b/service/test/unit/resources/test_login_resource.py
@@ -67,6 +67,16 @@ class TestLoginResource(unittest.TestCase):
d.addCallback(assert_unauthorized_resources)
return d
+ def test_account_recovery_resource_does_not_require_login(self):
+ request = DummyRequest(['account-recovery'])
+ d = self.web.get(request)
+
+ def assert_successful(_):
+ self.assertEqual(200, request.responseCode)
+
+ d.addCallback(assert_successful)
+ return d
+
@patch('pixelated.resources.session.PixelatedSession.is_logged_in')
def test_there_are_no_grand_children_resources_when_logged_in(self, mock_is_logged_in):
request = DummyRequest(['/login/grand_children'])
diff --git a/web-ui/config/public-assets-webpack.js b/web-ui/config/public-assets-webpack.js
index 28dff566..13364e2c 100644
--- a/web-ui/config/public-assets-webpack.js
+++ b/web-ui/config/public-assets-webpack.js
@@ -3,6 +3,7 @@ var CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = new CopyWebpackPlugin([
{ context: 'src/login/', from: '*.html' },
{ context: 'src/login/', from: '*.css' },
+ { context: 'src/account_recovery/', from: 'account_recovery.html' },
{ context: 'src/interstitial/', from: '*' },
{ context: 'app/', from: 'fonts/*' },
{ context: 'app/', from: 'locales/**/*' },
diff --git a/web-ui/src/account_recovery/account_recovery.html b/web-ui/src/account_recovery/account_recovery.html
index f4601239..35054455 100644
--- a/web-ui/src/account_recovery/account_recovery.html
+++ b/web-ui/src/account_recovery/account_recovery.html
@@ -9,6 +9,6 @@
</head>
<body>
<div id="root"/>
- <script type="text/javascript" src="/assets/account_recovery.js"></script>
+ <script type="text/javascript" src="/public/account_recovery.js"></script>
</body>
</html>
diff --git a/web-ui/webpack.config.js b/web-ui/webpack.config.js
index 0470b508..e82cf88b 100644
--- a/web-ui/webpack.config.js
+++ b/web-ui/webpack.config.js
@@ -21,11 +21,12 @@ var commonConfiguration = {
var publicAssets = Object.assign({}, commonConfiguration, {
entry: {
'login': './src/login/login.js',
+ 'account_recovery': './src/account_recovery/account_recovery.js'
},
output: {
path: path.join(__dirname, 'dist/public'),
filename: '[name].js',
- publicPath: '/assets/'
+ publicPath: '/public/'
},
plugins: [
publicAssetsWebpack,
@@ -39,7 +40,6 @@ var publicAssets = Object.assign({}, commonConfiguration, {
var protectedAssets = Object.assign({}, commonConfiguration, {
entry: {
'app': './app/js/index.js',
- 'account_recovery': './src/account_recovery/account_recovery.js',
'backup_account': './src/backup_account/backup_account.js',
'sandbox': './app/js/sandbox.js'
},
diff --git a/web-ui/webpack.production.config.js b/web-ui/webpack.production.config.js
index 23be0565..c731526a 100644
--- a/web-ui/webpack.production.config.js
+++ b/web-ui/webpack.production.config.js
@@ -31,11 +31,12 @@ var commonPlugins = [
var publicAssets = Object.assign({}, commonConfiguration, {
entry: {
'login': './src/login/login.js',
+ 'account_recovery': './src/account_recovery/account_recovery.js'
},
output: {
path: path.join(__dirname, 'dist/public'),
filename: '[name].js',
- publicPath: '/assets/'
+ publicPath: '/public/'
},
plugins: commonPlugins.concat([ publicAssetsWebpack ])
});
@@ -43,7 +44,6 @@ var publicAssets = Object.assign({}, commonConfiguration, {
var protectedAssets = Object.assign({}, commonConfiguration, {
entry: {
'app': './app/js/index.js',
- 'account_recovery': './src/account_recovery/account_recovery.js',
'backup_account': './src/backup_account/backup_account.js',
'sandbox': './app/js/sandbox.js'
},