Здравствуйте! Пытаюсь сделать систему авторизации для сайта. Задание из университета: использовать Passport.js и подобные вещи нельзя, можно только хранилище сессий. В качестве хранилища сессий использую connect-pg. После нажатия на кнопку Login на сайте браузер отправляет POST запрос на сервер с логином и паролем. При получении этого запроса сервер лезет в базу данных и ищет пользователя в ней. Если такой пользователь найден, то сервер редеректит на корень сайта. В корне сайте рендерится index. Так вот после редеректа сайт виснет, в браузере отображается надпись "Ожидание ответа от localhost". В чем может быть ошибка?
router.post('/login.:format?', function (req, res) {
var login = req.body;
if (req.params.format === 'json'){
res.send(login);
}
else {
userUtils.login(login, function (user){
if (user) {
req.session.user_id = user.id;
res.redirect('/');
} else {
res.redirect('/users/login');
}
},
function (error) {
express.error(error);
});
}
});
var user_utils = {
pgConnect: function (callback) {
pg.connect(connection, function(err, client){
if (err) {
console.log('connection to PG error ', err);
}
if (client) {
callback(client);
}
});
},
loadUser: function(req, res, next) {
if (req.session.user_id) {
connectToDatabase(function (database) {
database.one('select * from users where id=${id}', {id: req.session.user_id})
.then(function (user) {
if (user) {
req.currentUser = user;
next();
}
else {
res.redirect('/users/login');
}
}).catch(function (e) {
res.redirect('/users/login')
})
})
} else {
res.redirect('/users/login');
}
},
login: function (user, loginCallback, errorCallback) {
connectToDatabase(function (database) {
database.one('select * from users where login=${login}', {login: user.login})
.then(function (u) {
console.log('login');
if (user.password === u.password){
console.log('user ' + u.id + ' logged');
loginCallback(u);
}
})
.catch(function (error) {
errorCallback(error)
})
})
},
register: function (user, registerCallback, errorCallback) {
connectToDatabase(function (database) {
database.one('insert into employers (id, first_name, middle_name, last_name) values (${id}, ${firstName}, ${middleName}, ${lastName}) returning id',
{
id: user.sequenceNumber,
firstName: user.firstName,
middleName: user.middleName,
lastName: user.lastName
})
.then(function (employer) {
database.none('insert into users (login, password, employer_id) values(${login}, ${password}, ${id})',
{
login: user.login,
password: user.password,
id: employer.id
})
.then(function () {
registerCallback();
})
.catch(function (error) {
errorCallback(error)
})
})
.catch(function (error) {
errorCallback(error)
})
})
}
};
block content
form(name='login' action='/users/login' method='post')
label
h1 Login
input(type='text' name='login')
br
br
label
h1 Password
input(type='text' name='password')
br
br
br
input(type='submit' value='Login')
a(href='/users/register') Register