Skip to content

Commit 4a1977c

Browse files
committed
Fixes auto login bugs.
Signed-off-by: Eric Wang <[email protected]>
1 parent c0d79fe commit 4a1977c

File tree

3 files changed

+9
-10
lines changed

3 files changed

+9
-10
lines changed

lib/cli.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ function setLogLevel() {
2525
log.setLevel(level);
2626

2727
log.fail = function(e) {
28-
log.error(chalk.red('ERROR: ' + (e.msg || e)));
28+
log.error(chalk.red('ERROR: ' + (e.msg || e) + ' [' + (e.statusCode || 0) + ']'));
2929
};
3030
}
3131

lib/core.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,13 @@ core.exportProblem = function(problem, f, codeOnly) {
145145
};
146146

147147
core.login = function(user, cb) {
148-
var self = this;
148+
this.logout();
149149
client.login(user, function(e, user) {
150150
if (e) return cb(e);
151151

152+
saveUser(user);
152153
client.getFavorites(function(e, favorites) {
153154
if (e) return cb(e);
154-
self.logout();
155155

156156
// TODO: pick other useful values from favorites
157157
var favorite = _.find(favorites.favorites.private_favorites, function(f) {

lib/leetcode_client.js

+6-7
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ var request = require('request');
77
var config = require('./config');
88
var h = require('./helper');
99

10+
// request.debug = true;
11+
1012
// update options with user credentials
1113
function signOpts(opts, user) {
1214
opts.headers.Cookie = 'LEETCODE_SESSION=' + user.sessionId +
@@ -31,10 +33,8 @@ function checkError(e, resp, expectedStatus, msg) {
3133

3234
var code = resp.statusCode;
3335
if (resp && code !== expectedStatus) {
34-
if (code === 403) {
36+
if (code === 403 || code === 401) {
3537
msg = msg || 'session expired, please login again';
36-
var core = require('./core');
37-
core.logout();
3838
}
3939
e = {msg: msg || 'http error', statusCode: code};
4040
}
@@ -49,11 +49,10 @@ function requestWithReLogin(opts, cb) {
4949
var req = request(opts, function(e, resp, body) {
5050
e = checkError(e, resp, opts.expectedStatus);
5151

52-
// not 403: transparently pass down
53-
if (!config.AUTO_LOGIN || !e || e.statusCode !== 403)
54-
return cb(e, resp, body, req);
52+
// not session expired: transparently pass down
53+
if (!config.AUTO_LOGIN || !e) return cb(e, resp, body, req);
54+
if (e.statusCode !== 403 && e.statusCode !== 401) return cb(e, resp, body, req);
5555

56-
// if 403: try re-login
5756
log.debug('session expired, auto re-login...');
5857

5958
var core = require('./core');

0 commit comments

Comments
 (0)