@@ -873,61 +873,85 @@ mongoClient.connect((err) => {
873873
874874 app . post ( '/auth/register' , ( req , res ) => {
875875 var nameCount = 0 ;
876- if (
877- req . body . name1 != '' &&
878- displayNames . list1 . includes ( getLowerCaseName ( req . body . name1 ) )
879- )
876+ const name1 = req . body . name1 ? req . body . name1 . trim ( ) : '' ;
877+ const name2 = req . body . name2 ? req . body . name2 . trim ( ) : '' ;
878+ const name3 = req . body . name3 ? req . body . name3 . trim ( ) : '' ;
879+
880+ if ( name1 !== '' && displayNames . list1 . includes ( getLowerCaseName ( name1 ) ) ) {
880881 nameCount ++ ;
881- else if ( req . body . name1 != '' ) nameCount = - 100 ;
882- if (
883- req . body . name2 != '' &&
884- displayNames . list2 . includes ( getLowerCaseName ( req . body . name2 ) )
885- )
882+ } else if ( name1 !== '' ) {
883+ nameCount = - 100 ;
884+ }
885+
886+ if ( name2 !== '' && displayNames . list2 . includes ( getLowerCaseName ( name2 ) ) ) {
886887 nameCount ++ ;
887- else if ( req . body . name2 != '' ) nameCount = - 100 ;
888- if (
889- req . body . name3 != '' &&
890- displayNames . list3 . includes ( getLowerCaseName ( req . body . name3 ) )
891- )
888+ } else if ( name2 !== '' ) {
889+ nameCount = - 100 ;
890+ }
891+
892+ if ( name3 !== '' && displayNames . list3 . includes ( getLowerCaseName ( name3 ) ) ) {
892893 nameCount ++ ;
893- else if ( req . body . name3 != '' ) nameCount = - 100 ;
894+ } else if ( name3 !== '' ) {
895+ nameCount = - 100 ;
896+ }
897+
898+ const username = req . body . username ? req . body . username . trim ( ) : '' ;
899+ const password = req . body . password ;
900+ const confirmPassword = req . body . confirm ;
901+ const forgotPhrase = req . body . forgot ? req . body . forgot . trim ( ) : '' ;
894902
895903 if (
896- req . body . username != '' &&
897- req . body . password != '' &&
898- nameCount > 1 &&
899- req . body . password == req . body . confirm
904+ username !== '' &&
905+ password !== '' &&
906+ forgotPhrase !== '' &&
907+ nameCount >= 2 && // Require at least 2 valid parts for the display name
908+ password === confirmPassword
900909 ) {
901- var names = [ req . body . name1 , req . body . name2 , req . body . name3 ] ;
910+ var namesForDisplay = [ name1 , name2 , name3 ] . filter ( n => n !== '' ) ; // Filter out empty parts for display name construction
911+
902912 postRequest
903913 . handleRegister (
904- req . body . username ,
905- req . body . password ,
906- names ,
907- req . body . forgot ,
914+ username ,
915+ password ,
916+ namesForDisplay ,
917+ forgotPhrase ,
908918 playerCollection
909919 )
910- . then ( ( user ) => {
911- if ( user == 'login' ) {
912- res . redirect ( '/login?exists=true' ) ;
913- } else {
914- res . cookie ( 'TEGid' , user . user . TEGid ) ;
915- res . cookie ( 'authid' , user . user . authid ) ;
916- res . cookie ( 'dname' , user . user . dname ) ;
917- res . cookie ( 'authpass' , user . user . authpass ) ;
918- var date = Date . parse ( user . session . expires_at ) ;
919- res . cookie ( 'session_token' , user . session . token , {
920+ . then ( ( result ) => {
921+ if ( result === 'usernameTaken' ) {
922+ res . redirect ( '/register?usernameTaken=true' ) ;
923+ } else if ( result === 'displayNameTaken' ) {
924+ res . redirect ( '/register?displayNameTaken=true' ) ;
925+ } else if ( typeof result === 'object' && result . user && result . session ) { // Successful registration
926+ res . cookie ( 'TEGid' , result . user . TEGid ) ;
927+ res . cookie ( 'authid' , result . user . authid ) ;
928+ res . cookie ( 'dname' , result . user . dname ) ;
929+ res . cookie ( 'authpass' , result . user . authpass ) ;
930+ var date = Date . parse ( result . session . expires_at ) ;
931+ res . cookie ( 'session_token' , result . session . token , {
920932 maxAge : date . valueOf ( ) - Date . now ( ) ,
921933 } ) ;
922934 res . cookie ( 'logged' , true ) ;
923935 res . redirect ( config . httpserver . url ) ;
936+ } else {
937+ console . warn ( "handleRegister returned unexpected result:" , result ) ;
938+ res . redirect ( '/register?failed=true&reason=unexpected' ) ;
924939 }
925940 } )
926941 . catch ( ( e ) => {
927- console . log ( e ) ;
928- res . redirect ( '/register?failed=true' ) ;
942+ console . error ( "Error during registration process:" , e ) ;
943+
944+ res . redirect ( '/register?failed=true&reason=servererror' ) ;
929945 } ) ;
930- } else res . redirect ( '/register?failed=true' ) ;
946+ } else {
947+ // Initial validation failed (empty fields, passwords don't match, invalid display name count)
948+ let reason = 'validation' ;
949+ if ( password !== confirmPassword ) reason = 'passwordmismatch' ;
950+ if ( nameCount < 2 && nameCount > - 100 ) reason = 'displaynameparts' ; // if nameCount is -100, it's an invalid selection
951+ else if ( nameCount === - 100 ) reason = 'invaliddisplayname' ;
952+
953+ res . redirect ( `/register?failed=true&reason=${ reason } ` ) ;
954+ }
931955 } ) ;
932956
933957 app . post ( '/auth/forgot' , ( req , res ) => {
0 commit comments