diff options
author | Matthew Hodgson <matthew@matrix.org> | 2014-08-31 00:38:10 +0100 |
---|---|---|
committer | Matthew Hodgson <matthew@matrix.org> | 2014-08-31 00:38:10 +0100 |
commit | 3ef312fb95b4f70744e1ddb78d549d1a628ecb5c (patch) | |
tree | 57a97cf0f79421e7dab1ceb328d640911c998c2e /webclient/login/register-controller.js | |
parent | moar logos! (diff) | |
download | synapse-3ef312fb95b4f70744e1ddb78d549d1a628ecb5c.tar.xz |
factor out the signup process into its own controller
Diffstat (limited to 'webclient/login/register-controller.js')
-rw-r--r-- | webclient/login/register-controller.js | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/webclient/login/register-controller.js b/webclient/login/register-controller.js new file mode 100644 index 0000000000..6c1bfd632a --- /dev/null +++ b/webclient/login/register-controller.js @@ -0,0 +1,79 @@ +angular.module('RegisterController', ['matrixService']) +.controller('RegisterController', ['$scope', '$location', 'matrixService', 'eventStreamService', + function($scope, $location, matrixService, eventStreamService) { + 'use strict'; + + // FIXME: factor out duplication with login-controller.js + + // Assume that this is hosted on the home server, in which case the URL + // contains the home server. + var hs_url = $location.protocol() + "://" + $location.host(); + if ($location.port()) { + hs_url += ":" + $location.port(); + } + + $scope.account = { + homeserver: hs_url, + desired_user_name: "", + user_id: "", + password: "", + identityServer: "http://matrix.org:8090", + pwd1: "", + pwd2: "", + displayName : "" + }; + + $scope.register = function() { + + // Set the urls + matrixService.setConfig({ + homeserver: $scope.account.homeserver, + identityServer: $scope.account.identityServer + }); + + if ($scope.account.pwd1 !== $scope.account.pwd2) { + $scope.feedback = "Passwords don't match."; + return; + } + else if ($scope.account.pwd1.length < 6) { + $scope.feedback = "Password must be at least 6 characters."; + return; + } + + matrixService.register($scope.account.desired_user_name, $scope.account.pwd1).then( + function(response) { + $scope.feedback = "Success"; + // Update the current config + var config = matrixService.config(); + angular.extend(config, { + access_token: response.data.access_token, + user_id: response.data.user_id + }); + matrixService.setConfig(config); + + // And permanently save it + matrixService.saveConfig(); + eventStreamService.resume(); + + if ($scope.account.displayName) { + // FIXME: handle errors setting displayName + matrixService.setDisplayName($scope.account.displayName); + } + + // Go to the user's rooms list page + $location.url("home"); + }, + function(error) { + if (error.data) { + if (error.data.errcode === "M_USER_IN_USE") { + $scope.feedback = "Username already taken."; + } + } + else if (error.status === 0) { + $scope.feedback = "Unable to talk to the server."; + } + }); + }; + +}]); + |