1717use \CarlBennett \MVC \Libraries \View ;
1818
1919class Login extends Controller {
20-
2120 public function &run (Router &$ router , View &$ view , array &$ args ) {
22-
2321 $ model = new UserLoginModel ();
2422
2523 $ model ->csrf_id = mt_rand ();
@@ -44,30 +42,38 @@ protected function tryLogin(Router &$router, UserLoginModel &$model) {
4442 if (!isset (Common::$ database )) {
4543 Common::$ database = DatabaseDriver::getDatabaseObject ();
4644 }
45+
4746 $ data = $ router ->getRequestBodyArray ();
4847 $ csrf_id = (isset ($ data ["csrf_id " ]) ? $ data ["csrf_id " ] : null );
4948 $ csrf_token = (isset ($ data ["csrf_token " ]) ? $ data ["csrf_token " ] : null );
5049 $ csrf_valid = CSRF ::validate ($ csrf_id , $ csrf_token );
51- $ email = (isset ($ data ["email " ]) ? $ data ["email " ] : null );
50+ $ username = (isset ($ data ["username " ]) ? $ data ["username " ] : null );
5251 $ password = (isset ($ data ["password " ]) ? $ data ["password " ] : null );
52+
53+ $ model ->username = $ username ;
54+
5355 if (!$ csrf_valid ) {
5456 $ model ->error = "INVALID_CSRF " ;
5557 return ;
5658 }
5759 CSRF ::invalidate ($ csrf_id );
60+
5861 if ( isset ( Authentication::$ user )) {
5962 $ model ->error = "ALREADY_LOGGED_IN " ;
60- } else if (empty ($ email )) {
61- $ model ->error = "EMPTY_EMAIL " ;
63+ } else if (empty ($ username )) {
64+ $ model ->error = "EMPTY_USERNAME " ;
6265 } else if (Common::$ config ->bnetdocs ->user_login_disabled ) {
6366 $ model ->error = "LOGIN_DISABLED " ;
6467 }
68+
6569 if ($ model ->error ) return ;
70+
6671 try {
67- $ user = new User (User::findIdByEmail ( $ email ));
72+ $ user = new User (User::findIdByUsername ( $ username ));
6873 } catch (UserNotFoundException $ e ) {
6974 $ user = null ;
7075 }
76+
7177 if (!$ user ) {
7278 $ model ->error = "USER_NOT_FOUND " ;
7379 } else if ($ user ->getOptionsBitmask () & User::OPTION_DISABLED ) {
@@ -77,16 +83,20 @@ protected function tryLogin(Router &$router, UserLoginModel &$model) {
7783 } else if (!$ user ->checkPassword ($ password )) {
7884 $ model ->error = "PASSWORD_INCORRECT " ;
7985 }
86+
8087 if ($ model ->error ) return ;
81- $ model ->error = false ;
82- $ model -> password = '' ;
88+ $ model ->error = false ;
89+
8390 Authentication::login ( $ user );
91+
8492 Logger::logEvent (
8593 EventTypes::USER_LOGIN ,
8694 ($ user ? $ user ->getId () : null ),
8795 getenv ("REMOTE_ADDR " ),
88- json_encode (["error " => $ model ->error ])
96+ json_encode ([
97+ "error " => $ model ->error ,
98+ "username " => $ username ,
99+ ])
89100 );
90101 }
91-
92102}
0 commit comments