diff --git a/webadmin/src/js/appstore.js b/webadmin/src/js/appstore.js
index 57324bdfb..4abe0b857 100644
--- a/webadmin/src/js/appstore.js
+++ b/webadmin/src/js/appstore.js
@@ -114,6 +114,22 @@ angular.module('Application').service('AppStore', ['$http', '$base64', 'Client',
});
};
+ AppStore.prototype.register = function (email, password, callback) {
+ if (Client.getConfig().apiServerOrigin === null) return callback(new AppStoreError(420, 'Enhance Your Calm'));
+
+ var data = {
+ email: email,
+ password: password
+ };
+
+ $http.post(Client.getConfig().apiServerOrigin + '/api/v1/users', data).success(function (data, status) {
+ if (status !== 201) return callback(new AppStoreError(status, data));
+ return callback(null, data);
+ }).error(function (data, status) {
+ return callback(new AppStoreError(status, data));
+ });
+ };
+
AppStore.prototype.login = function (email, password, callback) {
if (Client.getConfig().apiServerOrigin === null) return callback(new AppStoreError(420, 'Enhance Your Calm'));
diff --git a/webadmin/src/views/appstore.html b/webadmin/src/views/appstore.html
index 3dbe8d997..1d4c87283 100644
--- a/webadmin/src/views/appstore.html
+++ b/webadmin/src/views/appstore.html
@@ -163,7 +163,8 @@
diff --git a/webadmin/src/views/appstore.js b/webadmin/src/views/appstore.js
index e946a5399..9d8abe849 100644
--- a/webadmin/src/views/appstore.js
+++ b/webadmin/src/views/appstore.js
@@ -218,12 +218,14 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca
error: {},
email: '',
password: '',
+ register: false,
reset: function () {
$scope.appstoreLogin.busy = false;
$scope.appstoreLogin.error = {};
$scope.appstoreLogin.email = '';
$scope.appstoreLogin.password = '';
+ $scope.appstoreLogin.register = false;
$scope.appstoreLoginForm.$setUntouched();
$scope.appstoreLoginForm.$setPristine();
@@ -240,43 +242,16 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca
$scope.appstoreLogin.error = {};
$scope.appstoreLogin.busy = true;
- AppStore.login($scope.appstoreLogin.email, $scope.appstoreLogin.password, function (error, result) {
- if (error) {
- $scope.appstoreLogin.busy = false;
-
- if (error.statusCode === 403) {
- $scope.appstoreLogin.error.password = 'Wrong email or password';
- $scope.appstoreLogin.password = '';
- $('#inputAppstoreLoginPassword').focus();
- $scope.appstoreLoginForm.password.$setPristine();
- } else {
- console.error(error);
- }
-
- return;
- }
-
- var config = {
- userId: result.userId,
- token: result.accessToken
- };
-
- Client.setAppstoreConfig(config, function (error) {
+ function login() {
+ AppStore.login($scope.appstoreLogin.email, $scope.appstoreLogin.password, function (error, result) {
if (error) {
$scope.appstoreLogin.busy = false;
- if (error.statusCode === 406) {
- if (error.message === 'wrong user') {
- $scope.appstoreLogin.error.generic = 'Wrong cloudron.io account';
- $scope.appstoreLogin.email = '';
- $scope.appstoreLogin.password = '';
- $scope.appstoreLoginForm.email.$setPristine();
- $scope.appstoreLoginForm.password.$setPristine();
- $('#inputAppstoreLoginEmail').focus();
- } else {
- console.error(error);
- $scope.appstoreLogin.error.generic = 'Please retry later';
- }
+ if (error.statusCode === 403) {
+ $scope.appstoreLogin.error.password = 'Wrong email or password';
+ $scope.appstoreLogin.password = '';
+ $('#inputAppstoreLoginPassword').focus();
+ $scope.appstoreLoginForm.password.$setPristine();
} else {
console.error(error);
}
@@ -284,9 +259,62 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca
return;
}
- $scope.appstoreLogin.reset();
- $('#appstoreLoginModal').modal('hide');
+ var config = {
+ userId: result.userId,
+ token: result.accessToken
+ };
+
+ Client.setAppstoreConfig(config, function (error) {
+ if (error) {
+ $scope.appstoreLogin.busy = false;
+
+ if (error.statusCode === 406) {
+ if (error.message === 'wrong user') {
+ $scope.appstoreLogin.error.generic = 'Wrong cloudron.io account';
+ $scope.appstoreLogin.email = '';
+ $scope.appstoreLogin.password = '';
+ $scope.appstoreLoginForm.email.$setPristine();
+ $scope.appstoreLoginForm.password.$setPristine();
+ $('#inputAppstoreLoginEmail').focus();
+ } else {
+ console.error(error);
+ $scope.appstoreLogin.error.generic = 'Please retry later';
+ }
+ } else {
+ console.error(error);
+ }
+
+ return;
+ }
+
+ $scope.appstoreLogin.reset();
+ $('#appstoreLoginModal').modal('hide');
+ });
});
+ }
+
+ if (!$scope.appstoreLogin.register) return login();
+
+ AppStore.register($scope.appstoreLogin.email, $scope.appstoreLogin.password, function (error) {
+ if (error) {
+ $scope.appstoreLogin.busy = false;
+
+ if (error.statusCode === 409) {
+ $scope.appstoreLogin.error.generic = 'An account with this email already exists';
+ $scope.appstoreLogin.email = '';
+ $scope.appstoreLogin.password = '';
+ $scope.appstoreLoginForm.email.$setPristine();
+ $scope.appstoreLoginForm.password.$setPristine();
+ $('#inputAppstoreLoginEmail').focus();
+ } else {
+ console.error(error);
+ $scope.appstoreLogin.error.generic = 'Please retry later';
+ }
+
+ return;
+ }
+
+ login();
});
}
};