Skip to content

Commit a75b8fc

Browse files
committed
initial commit
0 parents  commit a75b8fc

File tree

5 files changed

+72
-0
lines changed

5 files changed

+72
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.DS_Store
2+
node_modules

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
lambda-session-auth
2+
========
3+
4+
Cookie-based session authentication using AWS Lambda and Node.

auth.js

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

index.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
'use strict';
2+
3+
const auth = require('./auth');
4+
const session = require('./session');
5+
6+
module.exports = {
7+
post: (event, context) => {
8+
const user = event.data.username;
9+
const pass = event.data.password;
10+
auth(user, pass).then((authRes) => {
11+
if (res) {
12+
session.set(user).then((cookie) => {
13+
return context.done(null, Object.assign(authRes, cookie));
14+
});
15+
} else {
16+
return context.done(null, authRes)
17+
}
18+
});
19+
},
20+
get: (event, context) => {
21+
const cookie = event.headers ? event.headers.Cookie : '';
22+
23+
}
24+
};

session.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 cookieKey = 'SID';
4+
const cookiePrefix = 'Session::';
5+
6+
module.exports = {
7+
set: (user) => {
8+
const sessionId = `${cookiePrefix}${user}`;
9+
const newCookie = `${cookieKey}=${sessionId}`;
10+
return { Cookie: newCookie };
11+
},
12+
get: (sessionId) => {
13+
const user = sessionId.replace(cookiePrefix, '');
14+
if (user) {
15+
return true;
16+
} else {
17+
return false;
18+
}
19+
}
20+
};

0 commit comments

Comments
 (0)