17
17
use \CarlBennett \MVC \Libraries \View ;
18
18
19
19
class Login extends Controller {
20
-
21
20
public function &run (Router &$ router , View &$ view , array &$ args ) {
22
-
23
21
$ model = new UserLoginModel ();
24
22
25
23
$ model ->csrf_id = mt_rand ();
@@ -44,30 +42,38 @@ protected function tryLogin(Router &$router, UserLoginModel &$model) {
44
42
if (!isset (Common::$ database )) {
45
43
Common::$ database = DatabaseDriver::getDatabaseObject ();
46
44
}
45
+
47
46
$ data = $ router ->getRequestBodyArray ();
48
47
$ csrf_id = (isset ($ data ["csrf_id " ]) ? $ data ["csrf_id " ] : null );
49
48
$ csrf_token = (isset ($ data ["csrf_token " ]) ? $ data ["csrf_token " ] : null );
50
49
$ csrf_valid = CSRF ::validate ($ csrf_id , $ csrf_token );
51
- $ email = (isset ($ data ["email " ]) ? $ data ["email " ] : null );
50
+ $ username = (isset ($ data ["username " ]) ? $ data ["username " ] : null );
52
51
$ password = (isset ($ data ["password " ]) ? $ data ["password " ] : null );
52
+
53
+ $ model ->username = $ username ;
54
+
53
55
if (!$ csrf_valid ) {
54
56
$ model ->error = "INVALID_CSRF " ;
55
57
return ;
56
58
}
57
59
CSRF ::invalidate ($ csrf_id );
60
+
58
61
if ( isset ( Authentication::$ user )) {
59
62
$ 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 " ;
62
65
} else if (Common::$ config ->bnetdocs ->user_login_disabled ) {
63
66
$ model ->error = "LOGIN_DISABLED " ;
64
67
}
68
+
65
69
if ($ model ->error ) return ;
70
+
66
71
try {
67
- $ user = new User (User::findIdByEmail ( $ email ));
72
+ $ user = new User (User::findIdByUsername ( $ username ));
68
73
} catch (UserNotFoundException $ e ) {
69
74
$ user = null ;
70
75
}
76
+
71
77
if (!$ user ) {
72
78
$ model ->error = "USER_NOT_FOUND " ;
73
79
} else if ($ user ->getOptionsBitmask () & User::OPTION_DISABLED ) {
@@ -77,16 +83,20 @@ protected function tryLogin(Router &$router, UserLoginModel &$model) {
77
83
} else if (!$ user ->checkPassword ($ password )) {
78
84
$ model ->error = "PASSWORD_INCORRECT " ;
79
85
}
86
+
80
87
if ($ model ->error ) return ;
81
- $ model ->error = false ;
82
- $ model -> password = '' ;
88
+ $ model ->error = false ;
89
+
83
90
Authentication::login ( $ user );
91
+
84
92
Logger::logEvent (
85
93
EventTypes::USER_LOGIN ,
86
94
($ user ? $ user ->getId () : null ),
87
95
getenv ("REMOTE_ADDR " ),
88
- json_encode (["error " => $ model ->error ])
96
+ json_encode ([
97
+ "error " => $ model ->error ,
98
+ "username " => $ username ,
99
+ ])
89
100
);
90
101
}
91
-
92
102
}
0 commit comments