Skip to content

Commit 5c1e593

Browse files
save file
1 parent 27f8fad commit 5c1e593

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
2+
3+
var port = 3002;
4+
var server = require('http').createServer(request).listen(port);
5+
console.log(`http://localhost:${port}/`);
6+
var users = [
7+
{name:'matt',password:'xyz',cookie:null},
8+
];
9+
10+
function request(req,res){
11+
console.log(req.method,req.url);
12+
var path = req.url.slice(1);
13+
14+
switch(path){
15+
16+
case 'login' : return login(req,res);
17+
case 'lougout' : return logout(req,res);
18+
case 'admin.html' : return admin(req,res);
19+
20+
}//switch
21+
22+
var type = mime(path);
23+
24+
res.writeHead(200,{'content-type':type});
25+
require('fs').createReadStream(path).pipe(res);
26+
27+
}//request
28+
29+
30+
function mime(path){
31+
32+
var ext = path.split('.').at(-1),type;
33+
switch(ext){
34+
35+
case 'html' : return 'text/html';
36+
case 'js' : return 'text/javascript';
37+
case 'css' : return 'text/css';
38+
39+
}//switch
40+
return 'application/octet-stream';
41+
42+
}//mime
43+
44+
45+
function post(req){
46+
47+
var body = '';
48+
for(await data of req)body+=data;
49+
var json = JSON.parse(body);
50+
return json;
51+
52+
}//read
53+
54+
55+
function login(req,res){
56+
57+
var json = post(req);
58+
var user = users.find(user=>user.name===json.name);
59+
if(!user){
60+
res.end('error');
61+
return;
62+
}
63+
if(user.password!==json.password){
64+
res.end('error');
65+
return;
66+
}
67+
68+
user.cookie = cookie();
69+
res.setHeader('set-cookie',`session=${user.id};HttpOnly;Secure;SameSite=Strict;Max-Age=60`);
70+
res.setHeader('Location','/admin');
71+
res.statusCode = 303;
72+
res.end('ok');
73+
74+
}//login
75+
76+
function logout(req,res){
77+
78+
var json = post(req);
79+
var user = users.find(user=>user.name===json.name);
80+
if(!user){
81+
res.end('error');
82+
return;
83+
}
84+
85+
user.status = Date.now();
86+
user.id = id();
87+
res.setHeader('set-cookie',`session=${user.id};HttpOnly;Secure;SameSite=Strict;Max-Age=0`);
88+
res.setHeader('Location','/login.html');
89+
res.statusCode = 303;
90+
res.end('ok');
91+
92+
}//logout
93+
94+
function admin(req,res){
95+
96+
var cookie = req.headers.cookie;
97+
if(!cookie){
98+
redirect();
99+
return;
100+
}
101+
102+
var cookie = cookie.split('=').at(0);
103+
var user = users.find(user=>user.cookie===cookie);
104+
if(!user){
105+
redirect();
106+
return;
107+
}
108+
109+
res.writeHead(200,{'content-type':'text/html'});
110+
res.end(html.admin);
111+
112+
function redirect(){
113+
114+
res.setHeader('Location','/login.html');
115+
res.statusCode = 302;
116+
res.end('ok');
117+
118+
}//redirect
119+
120+
}//admin
121+
122+

0 commit comments

Comments
 (0)