-
Notifications
You must be signed in to change notification settings - Fork 0
/
myFirstFormStrategy.js
74 lines (74 loc) · 2.83 KB
/
myFirstFormStrategy.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// myFirstFormStrategy.js
var connect= require('connect');
var url= require('url');
module.exports= function(options) {
options= options || {};
var that= {};
var my= {};
that.name = options.name || "someName";
function failed_validation( request, response, uri ) {
var parsedUrl= url.parse(request.url, true);
var redirectUrl= "/auth/form_callback"
if( uri ) {
redirectUrl= redirectUrl + "?redirect_url=" + uri;
}
else if( parsedUrl.query && parsedUrl.query.redirect_url ) {
redirectUrl= redirectUrl + "?redirect_url=" + parsedUrl.query.redirect_url;
}
response.writeHead(303, { 'Location': redirectUrl });
response.end('');
}
function validate_credentials( executionScope, request, response, callback ) {
setTimeout(function() {
var parsedUrl= url.parse(request.url, true);
if( request.body && request.body.user && request.body.password ) {
if( request.body.user == 'foo' && request.body.password == 'bar' ) {
executionScope.success( {name:request.body.user}, callback )
}
else {
executionScope.fail( callback )
}
}
else {
failed_validation( request, response );
}
}, 100);
};
that.authenticate= function(request, response, callback) {
if( request.body && request.body.user && request.body.password ) {
validate_credentials( this, request, response, callback );
}
else {
failed_validation( request, response, request.url );
}
}
that.setupRoutes= function(server) {
server.use('/', connect.router(function routes(app){
app.post('/auth/form_callback', function(request, response){
request.authenticate( [that.name], function(error, authenticated) {
var redirectUrl= "/"
var parsedUrl= url.parse(request.url, true);
if( parsedUrl.query && parsedUrl.query.redirect_url ) {
redirectUrl= parsedUrl.query.redirect_url;
}
response.writeHead(303, { 'Location': redirectUrl });
response.end('');
})
});
app.get('/auth/form_callback', function(request, response){
response.writeHead(200, {'Content-Type': 'text/html'})
var parsedUrl= url.parse(request.url, true);
var redirectUrl= "";
if( parsedUrl.query && parsedUrl.query.redirect_url ) {
redirectUrl= "?redirect_url="+ parsedUrl.query.redirect_url;
}
response.end("<html><body><form action='/auth/form_callback"+ redirectUrl+ "' method='post'> \n\
<label for='user'>Name</label><input type='text' name='user' id='user'/><br/> \n\
<label for='password'>Password</label><input type='password' name='password' id='password'/> \n\
<input type='submit'/> \n\
</form></body</html>");
});
}));
};
return that;
};