factor out the signup process into its own controller
							parent
							
								
									91753655b7
								
							
						
					
					
						commit
						3ef312fb95
					
				|  | @ -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."; | ||||
|                 } | ||||
|             }); | ||||
|     }; | ||||
| 
 | ||||
| }]); | ||||
| 
 | ||||
|  | @ -0,0 +1,48 @@ | |||
| <div ng-controller="RegisterController" class="register"> | ||||
|     <div id="wrapper" class="loginWrapper"> | ||||
| 
 | ||||
|         <a href ng-click="goToPage('/login')"> | ||||
|         <img src="img/logo.png" width="240" height="102" alt="[matrix]" style="padding: 50px"/> | ||||
|         </a> | ||||
|         <br/> | ||||
| 
 | ||||
|         <form id="loginForm" novalidate> | ||||
|             <div> | ||||
|                 Create account:<br/> | ||||
|                  | ||||
|                 <div style="text-align: center"> | ||||
|                     <br/> | ||||
|                     <input id="email" size="32" type="text" ng-focus="true" ng-model="account.email" placeholder="Email address (optional)"/> | ||||
|                     <div class="smallPrint">Specifying an email address lets other users find you on Matrix more easily,<br/> | ||||
|                         and gives you a way to reset your password</div> | ||||
|                     <input id="desired_user_id" size="32" type="text" ng-model="account.desired_user_id" placeholder="Matrix ID (e.g. bob)"/> | ||||
|                     <br/> | ||||
|                     <input id="pwd1" size="32" type="password" ng-model="account.pwd1" placeholder="Type a password"/> | ||||
|                     <br/> | ||||
|                     <input id="pwd2" size="32" type="password" ng-model="account.pwd2" placeholder="Confirm your password"/> | ||||
|                     <br/> | ||||
|                     <input id="displayName" size="32" type="text" ng-model="account.displayName" placeholder="Display name (e.g. Bob Obson)"/> | ||||
|                     <br/> | ||||
|                     <br/> | ||||
|                      | ||||
|                     <button ng-click="register()" ng-disabled="!account.desired_user_id || !account.homeserver || !account.pwd1 || !account.pwd2 || account.pwd1 !== account.pwd2">Sign up</button> | ||||
|                     <br/><br/> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <div class="feedback">{{ feedback }} {{ login_error_msg }}</div> | ||||
|                  | ||||
|                 <div id="serverConfig"> | ||||
|                     <label for="homeserver">Home Server:</label>  | ||||
|                     <input id="homeserver" size="32" type="text" ng-model="account.homeserver" placeholder="URL (e.g. http://matrix.org:8080)"/> | ||||
|                     <div class="smallPrint">Your home server stores all your conversation and account data.</div> | ||||
|                     <label for="identityServer">Identity Server:</label> | ||||
|                     <input id="identityServer" size="32" type="text" ng-model="account.identityServer" placeholder="URL (e.g. http://matrix.org:8090)"/> | ||||
|                     <div class="smallPrint">Matrix provides identity servers to track which emails etc. belong to which Matrix IDs.<br/> | ||||
|                         Only http://matrix.org:8090 currently exists.</div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </form> | ||||
| 
 | ||||
|     </div> | ||||
|     </div> | ||||
| </div> | ||||
		Loading…
	
		Reference in New Issue
	
	 Matthew Hodgson
						Matthew Hodgson