From 3ef312fb95b4f70744e1ddb78d549d1a628ecb5c Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sun, 31 Aug 2014 00:38:10 +0100 Subject: factor out the signup process into its own controller --- webclient/login/register-controller.js | 79 ++++++++++++++++++++++++++++++++++ webclient/login/register.html | 48 +++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 webclient/login/register-controller.js create mode 100644 webclient/login/register.html 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."; + } + }); + }; + +}]); + diff --git a/webclient/login/register.html b/webclient/login/register.html new file mode 100644 index 0000000000..85efa56414 --- /dev/null +++ b/webclient/login/register.html @@ -0,0 +1,48 @@ +
+
+ + + [matrix] + +
+ +
+
+ Create account:
+ +
+
+ +
Specifying an email address lets other users find you on Matrix more easily,
+ and gives you a way to reset your password
+ +
+ +
+ +
+ +
+
+ + +

+
+ + + +
+ + +
Your home server stores all your conversation and account data.
+ + +
Matrix provides identity servers to track which emails etc. belong to which Matrix IDs.
+ Only http://matrix.org:8090 currently exists.
+
+
+
+ +
+
+ -- cgit 1.4.1