Skip to content

Commit 77e5f23

Browse files
committed
Implement restore session and check session
1 parent a4f4cc5 commit 77e5f23

3 files changed

Lines changed: 25 additions & 8 deletions

File tree

JavaScript/client.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22

3+
const Session = require('./session.js');
4+
35
const UNIX_EPOCH = 'Thu, 01 Jan 1970 00:00:00 GMT';
46
const COOKIE_EXPIRE = 'Fri, 01 Jan 2100 00:00:00 GMT';
57
const COOKIE_DELETE = `=deleted; Expires=${UNIX_EPOCH}; Path=/; Domain=`;
@@ -21,6 +23,7 @@ class Client {
2123
this.cookie = {};
2224
this.preparedCookie = [];
2325
this.parseCookie();
26+
Session.restore(this);
2427
}
2528

2629
parseCookie() {

JavaScript/server.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ const routing = {
1111
return `Session token is: ${client.token}`;
1212
},
1313
'/api/method1': async client => {
14-
return { data: 'example result' };
14+
if (client.session) {
15+
return { data: 'example result' };
16+
} else {
17+
return { data: 'access is denied' };
18+
}
1519
},
1620
'/api/method2': async client => ({
1721
url: client.req.url,
@@ -44,7 +48,11 @@ http.createServer((req, res) => {
4448
res.end(result);
4549
}, err => {
4650
console.error(err.stack);
51+
res.statusCode = 500;
4752
res.end('Internal Server Error 500');
4853
});
54+
return;
4955
}
56+
res.statusCode = 404;
57+
res.end('Not found 404');
5058
}).listen(8000);

JavaScript/session.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,28 @@ class Session extends Map {
2626
}
2727

2828
static start(client) {
29+
if (client.session) return client.session;
30+
const token = generateToken();
31+
client.token = token;
32+
const session = new Session(token);
33+
client.session = session;
34+
client.setCookie('token', token);
35+
sessions.set(token, session);
36+
return session;
37+
}
38+
39+
static restore(client) {
2940
const { cookie } = client;
3041
const sessionToken = cookie.token;
42+
console.log({ sessionToken });
3143
if (sessionToken) {
3244
const session = sessions.get(sessionToken);
3345
if (session) {
46+
client.token = sessionToken;
3447
client.session = session;
3548
return session;
3649
}
3750
}
38-
const token = generateToken();
39-
client.token = token;
40-
const session = new Session(token);
41-
client.session = session;
42-
client.setCookie('token', token);
43-
sessions.set(token, session);
44-
return session;
4551
}
4652

4753
static drop(client) {

0 commit comments

Comments
 (0)