mirror of
				https://git.anonymousland.org/anonymousland/synapse.git
				synced 2025-10-31 17:08:52 -04:00 
			
		
		
		
	Get everything working
This commit is contained in:
		
							parent
							
								
									e6363857d0
								
							
						
					
					
						commit
						e36b18ad5b
					
				
					 2 changed files with 113 additions and 24 deletions
				
			
		|  | @ -2,6 +2,7 @@ | |||
| <head> | ||||
| <title> Registration </title> | ||||
| <link rel="stylesheet" href="style.css"> | ||||
| <script src="js/jquery-2.1.3.min.js"></script> | ||||
| <script src="js/recaptcha_ajax.js"></script> | ||||
| <script src="register_config.js"></script> | ||||
| <script src="js/register.js"></script> | ||||
|  | @ -18,16 +19,11 @@ | |||
|         	<br/> | ||||
|         	<input id="pwd2" size="32" type="password" placeholder="Confirm your password"/> | ||||
|         	<br/> | ||||
|             <span id="feedback" style="color: #f00"></span> | ||||
|             <br/> | ||||
|         	<div id="regcaptcha"></div> | ||||
| 
 | ||||
|         	<div id="regcaptcha" /> | ||||
| 
 | ||||
|         	<button style="margin: 10px">Sign up</button> | ||||
|         </div> | ||||
| 
 | ||||
|         <div id="serverConfig" ng-show="!wait_3pid_code"> | ||||
|             <label for="homeserver">Home Server:</label>  | ||||
|             <input id="homeserver" size="32" type="text" placeholder="URL (e.g. http://matrix.org:8080)"/> | ||||
|             <div class="smallPrint">Your home server stores all your conversation and account data.</div> | ||||
|         	<button type="button" style="margin: 10px" onclick="matrixRegistration.signUp()">Sign up</button> | ||||
|         </div> | ||||
|     </div> | ||||
| </form> | ||||
|  |  | |||
|  | @ -1,10 +1,25 @@ | |||
| window.matrixRegistration = {}; | ||||
| window.matrixRegistration = { | ||||
|     endpoint: location.origin + "/_matrix/client/api/v1/register" | ||||
| }; | ||||
| 
 | ||||
| var setupCaptcha = function() { | ||||
|     if (!window.matrixRegistrationConfig) { | ||||
|         return; | ||||
|     } | ||||
|     console.log("Setting up ReCaptcha"); | ||||
|     $.get(matrixRegistration.endpoint, function(response) { | ||||
|         var serverExpectsCaptcha = false; | ||||
|         for (var i=0; i<response.flows.length; i++) { | ||||
|             var flow = response.flows[i]; | ||||
|             if ("m.login.recaptcha" === flow.type) { | ||||
|                 serverExpectsCaptcha = true; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|         if (!serverExpectsCaptcha) { | ||||
|             console.log("This server does not require a captcha."); | ||||
|             return; | ||||
|         } | ||||
|         console.log("Setting up ReCaptcha for "+matrixRegistration.endpoint); | ||||
|         var public_key = window.matrixRegistrationConfig.recaptcha_public_key; | ||||
|         if (public_key === undefined) { | ||||
|             console.error("No public key defined for captcha!"); | ||||
|  | @ -16,8 +31,86 @@ var setupCaptcha = function() { | |||
|             theme: "red", | ||||
|             callback: Recaptcha.focus_response_field | ||||
|         }); | ||||
|         window.matrixRegistration.isUsingRecaptcha = true; | ||||
|     }).error(errorFunc); | ||||
|      | ||||
| }; | ||||
| 
 | ||||
| var submitCaptcha = function(user, pwd) { | ||||
|     var challengeToken = Recaptcha.get_challenge(); | ||||
|     var captchaEntry = Recaptcha.get_response(); | ||||
|     var data = { | ||||
|         type: "m.login.recaptcha", | ||||
|         challenge: challengeToken, | ||||
|         response: captchaEntry | ||||
|     }; | ||||
|     console.log("Submitting captcha"); | ||||
|     $.post(matrixRegistration.endpoint, JSON.stringify(data), function(response) { | ||||
|         console.log("Success -> "+JSON.stringify(response)); | ||||
|         submitPassword(user, pwd, response.session); | ||||
|     }).error(function(err) { | ||||
|         Recaptcha.reload(); | ||||
|         errorFunc(err); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| var submitPassword = function(user, pwd, session) { | ||||
|     console.log("Registering..."); | ||||
|     var data = { | ||||
|         type: "m.login.password", | ||||
|         user: user, | ||||
|         password: pwd, | ||||
|         session: session | ||||
|     }; | ||||
|     $.post(matrixRegistration.endpoint, JSON.stringify(data), function(response) { | ||||
|         matrixRegistration.onRegistered( | ||||
|             response.home_server, response.user_id, response.access_token | ||||
|         ); | ||||
|     }).error(errorFunc); | ||||
| }; | ||||
| 
 | ||||
| var errorFunc = function(err) { | ||||
|     if (err.responseJSON && err.responseJSON.error) { | ||||
|         setFeedbackString(err.responseJSON.error + " (" + err.responseJSON.errcode + ")"); | ||||
|     } | ||||
|     else { | ||||
|         setFeedbackString("Request failed: " + err.status); | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| var setFeedbackString = function(text) { | ||||
|     $("#feedback").text(text); | ||||
| }; | ||||
| 
 | ||||
| matrixRegistration.onLoad = function() { | ||||
|     setupCaptcha(); | ||||
| }; | ||||
| 
 | ||||
| matrixRegistration.signUp = function() { | ||||
|     var user = $("#desired_user_id").val(); | ||||
|     if (user.length == 0) { | ||||
|         setFeedbackString("Must specify a username."); | ||||
|         return; | ||||
|     } | ||||
|     var pwd1 = $("#pwd1").val(); | ||||
|     var pwd2 = $("#pwd2").val(); | ||||
|     if (pwd1.length < 6) { | ||||
|         setFeedbackString("Password: min. 6 characters."); | ||||
|         return; | ||||
|     } | ||||
|     if (pwd1 != pwd2) { | ||||
|         setFeedbackString("Passwords do not match."); | ||||
|         return; | ||||
|     } | ||||
|     if (window.matrixRegistration.isUsingRecaptcha) { | ||||
|         submitCaptcha(user, pwd1); | ||||
|     } | ||||
|     else { | ||||
|         submitPassword(user, pwd1); | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| matrixRegistration.onRegistered = function(hs_url, user_id, access_token) { | ||||
|     // clobber this function
 | ||||
|     console.log("onRegistered - This function should be replaced to proceed."); | ||||
| }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Kegan Dougal
						Kegan Dougal