Skip to content

Commit d4c370f

Browse files
committed
remove promises (simplify), rename auth, add login page
1 parent b76540a commit d4c370f

File tree

5 files changed

+100
-56
lines changed

5 files changed

+100
-56
lines changed

auth.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

authentication.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
'use strict';
2+
3+
const users = {
4+
user1: 'pass1',
5+
user2: 'pass2'
6+
};
7+
8+
module.exports = {
9+
auth: (user, pass) => {
10+
if (!user || !pass) {
11+
return { success: false, message: 'Must provide username and password.' };
12+
} else if (!users[user]) {
13+
return { success: false, message: 'User doesn\'t exist.' };
14+
} else if (users[user] !== pass) {
15+
return { success: false, message: 'Incorrect password.' };
16+
} else {
17+
return { success: true };
18+
}
19+
}
20+
};

index.js

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,37 @@
11
'use strict';
22

33
const cookie = require('cookie');
4-
5-
const auth = require('./auth');
4+
const fs = require('fs');
5+
const path = require('path');
6+
const authentication = require('./authentication');
67
const session = require('./session');
78

9+
const loginPath = path.resolve(__dirname, './login.html');
10+
811
module.exports = {
912
post: (event, context) => {
1013
const user = event.data.username;
1114
const pass = event.data.password;
12-
auth(user, pass).then((authRes) => {
13-
if (res) {
14-
session.set(user).then((cookie) => {
15-
return context.done(null, Object.assign(authRes, cookie));
16-
});
17-
} else {
18-
return context.done(null, authRes)
19-
}
20-
});
15+
const authRes = authentication.auth(user, pass);
16+
if (authRes) {
17+
const cookie = session.set(user);
18+
return context.done(null, Object.assign(authRes, cookie));
19+
} else {
20+
return context.done(null, authRes)
21+
}
2122
},
2223
get: (event, context) => {
2324
const cookieStr = event.headers ? (event.headers.Cookie || '') : '';
2425
const cookies = cookie.parse(cookieStr);
25-
session.get(cookies).then((sessionRes) => {
26-
if (sessionRes) {
27-
// authenticated
28-
29-
} else {
30-
31-
}
32-
});
26+
const sessionRes = session.get(cookies);
27+
if (sessionRes.valid) {
28+
// authenticated
29+
return context.done(null, `Logged in as: ${sessionRes.user}`)
30+
} else {
31+
fs.readFile(loginPath, (err, res) => {
32+
if (err) { return context.done(err); }
33+
return context.done(null, res.toString());
34+
});
35+
}
3336
}
3437
};

login.html

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<body>
4+
<h2>Login</h2>
5+
<div>
6+
<label>Username:</label>
7+
<input type="text" name="username" id="username"/>
8+
</div>
9+
<div>
10+
<label>Password:</label>
11+
<input type="password" name="password" id="password"/>
12+
</div>
13+
<div>
14+
<span id="result"></span>
15+
</div>
16+
<div>
17+
<button id="submit">Log In</button>
18+
</div>
19+
<script>
20+
var post = function() {
21+
var data = {
22+
username: document.getElementById('username').value,
23+
password: document.getElementById('password').value
24+
};
25+
var req = new XMLHttpRequest();
26+
req.onreadystatechange = function() {
27+
if (req.readyState == XMLHttpRequest.DONE ) {
28+
if (req.status == 200) {
29+
var res = JSON.parse(req.responseText);
30+
if (res.Success) {
31+
location.reload();
32+
} else {
33+
document.getElementById('result').innerHTML = res.message;
34+
}
35+
} else {
36+
document.getElementById('result').innerHTML = 'Unknown error.';
37+
}
38+
}
39+
};
40+
req.open('POST', '', true);
41+
req.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
42+
req.send(JSON.stringify(data));
43+
}
44+
document.getElementById('submit').addEventListener('click', post);
45+
</script>
46+
</body>
47+
</html>

session.js

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,18 @@ const cookiePrefix = 'Session::';
55

66
module.exports = {
77
set: (user) => {
8-
return new Promise((resolve, reject) => {
9-
const sessionId = `${cookiePrefix}${user}`;
10-
const newCookie = `${cookieKey}=${sessionId}`;
11-
return resolve({ Cookie: newCookie });
12-
});
8+
const sessionId = `${cookiePrefix}${user}`;
9+
const newCookie = `${cookieKey}=${sessionId}`;
10+
return { Cookie: newCookie };
1311
},
1412
get: (cookies) => {
15-
return new Promise((resolve, reject) => {
16-
if (!cookies[cookieKey]) {
17-
return resolve(false);
18-
}
19-
const user = cookies[cookieKey].replace(cookiePrefix, '');
20-
if (!user) {
21-
return resolve(false);
22-
}
23-
return resolve(true);
24-
});
13+
if (!cookies[cookieKey]) {
14+
return { valid: false };
15+
}
16+
const user = cookies[cookieKey].replace(cookiePrefix, '');
17+
return {
18+
valid: !!user,
19+
user: user
20+
};
2521
}
2622
};

0 commit comments

Comments
 (0)