Merge pull request #10 from ohtuprojekti-ilmo/add-user

Add user
This commit is contained in:
vasdf
2018-10-07 19:13:04 +03:00
committed by GitHub
4 changed files with 54 additions and 10 deletions
+44 -4
View File
@@ -2,6 +2,7 @@ const loginRouter = require('express').Router()
const jwt = require('jsonwebtoken')
const config = require('../utils/config')
const axios = require('axios')
const db = require('../models/index')
const getTokenFrom = (request) => {
const authorization = request.headers.authorization
@@ -27,20 +28,59 @@ async function authenticate(username, password) {
loginRouter.post('/', async (req, res) => {
if (!req.body.username || !req.body.password) {
//username or password field undefined
return res.status(400).json({ error: 'missing username or password' })
}
try {
const response = await authenticate(req.body.username, req.body.password)
if (response.data.error) {
//incorrect credentials response from auth server
return res.status(401).json({ error: 'incorrect credentials' })
}
const user = response.data
const token = jwt.sign({ id: user.student_number }, config.secret)
res.status(200).json({ token, username: user.username, student_number: user.student_number, first_names: user.first_names, last_name: user.last_name })
console.log(response.data)
db.User.findOne({ where: { student_number: response.data.student_number } }).then(foundUser => {
if (foundUser) {
//user already in database, no need to add
const token = jwt.sign({ id: response.data.student_number }, config.secret)
return res.status(200).json({
token,
user: foundUser
})
}
//user not in database, add user
const newUser = {
username: response.data.username,
student_number: response.data.student_number,
first_names: response.data.first_names,
last_name: response.data.last_name,
email: null,
admin: false
}
db.User.create({
username: newUser.username,
student_number: newUser.student_number,
first_names: newUser.first_names,
last_name: newUser.last_name,
email: newUser.email,
admin: newUser.admin
}).then(() => {
const token = jwt.sign({ id: response.data.student_number }, config.secret)
res.status(200).json({
token,
user: newUser
})
}).error((error) => {
//error saving to database
console.log(error)
res.status(500).json({ error: 'database error' })
})
})
} catch (error) {
//error from auth server
console.log(error)
res.status(500).json({ error: 'something went wrong' })
res.status(500).json({ error: 'authentication error' })
}
})
+1 -1
View File
@@ -17,7 +17,7 @@ module.exports = (sequelize, Sequelize) => {
Membership.associate = (models) => {
Membership.hasOne(models.User, {
foreignKey: 'student_id',
foreignKey: 'student_number',
})
}
+7 -4
View File
@@ -1,13 +1,16 @@
module.exports = (sequelize, Sequelize) => {
const User = sequelize.define('user', {
student_id: {
student_number: {
type: Sequelize.INTEGER,
primaryKey: true
},
firstNames: {
username: {
type: Sequelize.STRING
},
lastName: {
first_names: {
type: Sequelize.STRING
},
last_name: {
type: Sequelize.STRING
},
email: {
@@ -21,7 +24,7 @@ module.exports = (sequelize, Sequelize) => {
User.associate = (models) => {
User.hasMany(models.Membership, {
foreignKey: 'student_id',
foreignKey: 'student_number',
as: 'memberships',
})
}
+2 -1
View File
@@ -33,7 +33,8 @@
"jsonwebtoken": "^8.3.0",
"passport": "^0.4.0",
"passport-local": "^1.0.0",
"pg": "^7.4.3",
"pg": "^7.5.0",
"pg-hstore": "^2.3.2",
"sequelize": "^4.38.1"
},
"devDependencies": {