From 698d2d60726bf3df022d88eef1b48fae6f5be297 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Wed, 27 Sep 2017 16:19:02 +0200 Subject: [PATCH] Created endpoints for user tasks like login, register and a test endpoint history. A test for checking that session token works as expected. --- .../src/webserver/controllers/user/history.js | 22 +++++++++++++++ .../src/webserver/controllers/user/login.js | 28 +++++++++++++++++++ .../webserver/controllers/user/register.js | 24 ++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 seasoned_api/src/webserver/controllers/user/history.js create mode 100644 seasoned_api/src/webserver/controllers/user/login.js create mode 100644 seasoned_api/src/webserver/controllers/user/register.js diff --git a/seasoned_api/src/webserver/controllers/user/history.js b/seasoned_api/src/webserver/controllers/user/history.js new file mode 100644 index 0000000..e619d19 --- /dev/null +++ b/seasoned_api/src/webserver/controllers/user/history.js @@ -0,0 +1,22 @@ +const SearchHistory = require('src/searchHistory/searchHistory'); +const searchHistory = new SearchHistory(); + +/** + * Controller: Retrieves search history of a logged in user + * @param {Request} req http request variable + * @param {Response} res + * @returns {Callback} + */ +function historyController(req, res) { + const user = req.loggedInUser; + + searchHistory.read(user) + .then((searchQueries) => { + res.send({ success: true, searchQueries }); + }) + .catch((error) => { + res.status(401).send({ success: false, error: error.message }); + }); +} + +module.exports = historyController; diff --git a/seasoned_api/src/webserver/controllers/user/login.js b/seasoned_api/src/webserver/controllers/user/login.js new file mode 100644 index 0000000..4fe7755 --- /dev/null +++ b/seasoned_api/src/webserver/controllers/user/login.js @@ -0,0 +1,28 @@ +const User = require('src/user/user'); +const Token = require('src/user/token'); +const UserSecurity = require('src/user/userSecurity'); +const configuration = require('src/config/configuration').getInstance(); +const secret = configuration.get('authentication', 'secret'); +const userSecurity = new UserSecurity(); + +/** + * Controller: Log in a user provided correct credentials. + * @param {Request} req http request variable + * @param {Response} res + * @returns {Callback} + */ +function loginController(req, res) { + const user = new User(req.body.username); + const password = req.body.password; + + userSecurity.login(user, password) + .then(() => { + const token = new Token(user).toString(secret); + res.send({ success: true, token }); + }) + .catch((error) => { + res.status(401).send({ success: false, error: error.message }); + }); +} + +module.exports = loginController; diff --git a/seasoned_api/src/webserver/controllers/user/register.js b/seasoned_api/src/webserver/controllers/user/register.js new file mode 100644 index 0000000..b7e081a --- /dev/null +++ b/seasoned_api/src/webserver/controllers/user/register.js @@ -0,0 +1,24 @@ +const User = require('src/user/user'); +const UserSecurity = require('src/user/userSecurity'); +const userSecurity = new UserSecurity(); + +/** + * Controller: Register a new user + * @param {Request} req http request variable + * @param {Response} res + * @returns {Callback} + */ +function registerController(req, res) { + const user = new User(req.body.username, req.body.email); + const password = req.body.password; + + userSecurity.createNewUser(user, password) + .then(() => { + res.send({ success: true, message: 'Welcome to Seasoned!' }); + }) + .catch((error) => { + res.status(401).send({ success: false, error: error.message }); + }); +} + +module.exports = registerController;