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(); }); } };