package Ġserver Ċ Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ const Ġval ĠE MAIL Ġ= Ġ" input - email " Ċ const Ġval ĠNAME Ġ= Ġ" input - name " Ċ const Ġval ĠPASSWORD Ġ= Ġ" input - password " Ċ const Ġval ĠRE PEAT _ PASSWORD Ġ= Ġ" input - repeat - password " Ċ const Ġval ĠDELETE Ġ= Ġ" input - delete " Ċ const Ġval ĠCON FIRM _ DELETE Ġ= Ġ" input - confirm - delete " Ċ Ċ fun Ġprocess Settings User ( ssid : ĠString , Ġinputs : ĠMap < String , ĠString >): ĠResponse Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin ĠarrayOf ( NAME , ĠE MAIL , ĠPASSWORD , ĠDELETE , ĠCON FIRM _ DELETE )) Ġ{ ĊĠĠĠĠĠĠĠ Ġinputs [ i ]?. let Ġ{ Ġreturn Ġmap Settings ( ssid , Ġi , Ġinputs ) Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠIllegalArgumentException (" Invalid Ġsettings Ġinput ") Ċ } ĊĊ Ċ // ĠTODO : Ġ 1 2 . 1 2 . 2 0 2 0 Ġmake Ġpretty Ċ fun Ġmap Settings ( ssid : ĠString , Ġname : ĠString , Ġinputs : ĠMap < String , ĠString >): ĠResponse Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( name ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNAME Ġ-> Ġchange Name ( ssid , Ġinputs [ NAME ] !! ) ĊĠĠĠĠĠĠĠ ĠE MAIL Ġ-> Ġchange Email ( ssid , Ġinputs [ EMAIL ] !! ) ĊĠĠĠĠĠĠĠ ĠPASSWORD Ġ-> Ġchange Password ( ssid , Ġinputs [ PASSWORD ] !! , Ġinputs [ REPEAT _ PASSWORD ]) ĊĠĠĠĠĠĠĠ ĠDELETE Ġ-> Ġdelete Account ( ssid , Ġinputs [ DELETE ] !! ) ĊĠĠĠĠĠĠĠ ĠCON FIRM _ DELETE Ġ-> Ġconfirm Delete Account ( ssid , Ġinputs [ CONFIRM _ DELETE ] !! ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Invalid Ġsettings Ġinput ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġchange Email ( ssid : ĠString , Ġemail : ĠString ): ĠResponse Ġ{ ĊĠĠĠ Ġcheck Email ( email ). let Ġ{ Ġif Ġ( it . status Ġ== ĠValidation Status . ERROR ) Ġreturn Ġit Ġ} ĊĠĠĠ Ġdatabase . set Email ( ssid , Ġemail ) ĊĠĠĠ Ġsend Email Confirmation ( email ) ĊĠĠĠ Ġreturn Ġok ( message Ġ= Ġ" email ") Ċ } Ċ Ċ fun Ġchange Password ( ssid : ĠString , Ġnew Password : ĠString , Ġrepeat Password : ĠString ?): ĠResponse Ġ{ ĊĠĠĠ Ġresponse Or ( ĊĠĠĠĠĠĠĠ Ġcheck Password ( new Password ), ĊĠĠĠĠĠĠĠ Ġcheck Repeat Password ( new Password , Ġrepeat Password ) ĊĠĠĠ Ġ). let Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . status Ġ== ĠValidation Status . ERROR ) Ġreturn Ġit ĊĠĠĠ Ġ} ĊĠĠĠ Ġdatabase . set Password ( ssid , Ġnew Password ) ĊĠĠĠ Ġreturn Ġok ( message Ġ= Ġ" password ") Ċ } Ċ Ċ fun Ġchange Name ( ssid : ĠString , Ġname : ĠString ): ĠResponse Ġ{ ĊĠĠĠ Ġcheck Name ( name ). let Ġ{ Ġif Ġ( it . status Ġ== ĠValidation Status . ERROR ) Ġreturn Ġit Ġ} ĊĠĠĠ Ġdatabase . set AccountName ( ssid , Ġname ) ĊĠĠĠ Ġreturn Ġok ( message Ġ= Ġ" name ") Ċ } Ċ Ċ fun Ġdelete Account ( ssid : ĠString , Ġname : ĠString ): ĠResponse Ġ{ ĊĠĠĠ Ġif Ġ( database . getUser Attr ( ssid , Ġ" name ") Ġ== Ġname ) Ġreturn Ġok ( message Ġ= Ġ" delete ") ĊĠĠĠ Ġreturn Ġerror ( message Ġ= Ġ" delete ") Ċ } Ċ Ċ fun Ġconfirm Delete Account ( ssid : ĠString , Ġpassword : ĠString ): ĠResponse Ġ{ ĊĠĠĠ Ġval Ġdb Password Ġ= Ġdatabase . getUser Attr ( ssid , Ġ" password ") Ġ?: Ġthrow ĠIllegalArgumentException (" ssid Ġconfirm Ġdelete ") ĊĠĠĠ Ġif Ġ( verify Password ( db Password Ġas ĠString , Ġpassword )) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . delete Account ( ssid ) ĊĠĠĠĠĠĠĠ Ġreturn Ġok ( message Ġ= Ġ" confirm - delete ", Ġserver Ġ= Ġ" delete Ġsession ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġerror ( message Ġ= Ġ" confirm - delete ") Ċ } Ċ