diff --git a/js/firstscreen.js b/js/firstscreen.js index f51963f84..08deb2337 100644 --- a/js/firstscreen.js +++ b/js/firstscreen.js @@ -254,9 +254,14 @@ enyo.kind({ if (name.length == 0) { return; } - this.step++; + if (util.getClientType() == constant.appType && (this.createnew || !this.$.server.getValue())) { // No password for the app when create new or server is null + this.step += 2; + this.displayStep(); + } else if(!this.createnew) { // Login this.step++; + } else { // Signup + this.checkUsername(name); } this.displayStep(); } else if (this.step == 3) { @@ -423,6 +428,43 @@ enyo.kind({ } }, + checkUsername: function(name) { + var that = this; + that.$.spinner.setShowing(true); + myserver.postUser( + { + name: name, + role: "student", + beforeSignup: true + }, + function(inSender, inResponse) { + if(!inResponse.exists) { + // Username unique + that.step++; + that.displayStep(); + } + that.$.spinner.setShowing(false); + }, + function(response, error) { + if(error == 2) { + // Server does not support fix -> old workflow + that.step++; + that.displayStep(); + } else { + // Server supports fix -> new workflow + if(error == 22) { + // Username already exists + that.$.warningmessage.setContent(l10n.get("UserAlreadyExist")); + } else { + that.$.warningmessage.setContent(l10n.get("ServerError", {code: error})); + } + that.$.warningmessage.setShowing(true); + } + that.$.spinner.setShowing(false); + } + ); + }, + createUser: function() { var that = this; myserver.postUser( diff --git a/lib/server.js b/lib/server.js index 8ba878b87..3f9f8f6a5 100644 --- a/lib/server.js +++ b/lib/server.js @@ -148,10 +148,12 @@ define(["settings"], function(preferences) { } }); ajax.response(function(inSender, inResponse) { - var newuser = {"name": user.name, "password": user.password}; - server.loginUser(newuser, function(loginSender, loginResponse) { - preferences.setToken({'x_key': inResponse._id, 'access_token': loginResponse.token}); - }); + if(!user.beforeSignup) { + var newuser = {"name": user.name, "password": user.password}; + server.loginUser(newuser, function(loginSender, loginResponse) { + preferences.setToken({'x_key': inResponse._id, 'access_token': loginResponse.token}); + }); + } if (response) response(inSender, inResponse); }); ajax.error(function(inResponse) {