Completed CreateOrg and CreateGroup routes
This commit is contained in:
parent
4e35dc2822
commit
88d7fa7fdd
14 changed files with 104 additions and 40 deletions
24
TODO
Normal file
24
TODO
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
|
||||
User:
|
||||
✔ Create group @started(22-03-05 16:09) @done(22-03-05 16:24) @lasted(15m4s)
|
||||
✔ Create organization @started(22-03-05 16:24) @done(22-03-05 16:51) @lasted(27m13s)
|
||||
|
||||
Organization:
|
||||
|
||||
☐ Get organization members
|
||||
☐ Edit organization members
|
||||
☐ Get organization details
|
||||
☐ Add people to organization
|
||||
☐ Remove people from organization
|
||||
|
||||
Groups:
|
||||
|
||||
☐ Get group details
|
||||
☐ Edit group details
|
||||
☐ Get group members
|
||||
☐ Add people to group
|
||||
☐ Remove people from group
|
||||
☐ Delete group
|
||||
|
||||
|
||||
|
|
@ -4,8 +4,9 @@ var path = require('path');
|
|||
var cookieParser = require('cookie-parser');
|
||||
var logger = require('morgan');
|
||||
|
||||
var orgRouter = require('./routes/orgRouter');
|
||||
var authRouter = require('./routes/authRouter');
|
||||
var userRouter = require('./routes/userRouter');
|
||||
var orgRouter = require('./routes/orgRouter');
|
||||
|
||||
var app = express();
|
||||
|
||||
|
|
@ -19,8 +20,9 @@ app.use(express.urlencoded({ extended: false }));
|
|||
app.use(cookieParser());
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
app.use('/api/org', orgRouter);
|
||||
app.use('/api/auth', authRouter);
|
||||
app.use('/api/user', userRouter);
|
||||
app.use('/api/org', orgRouter);
|
||||
|
||||
// catch 404 and forward to error handler
|
||||
app.use(function (req, res, next) {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ async function initModels(sequelize) {
|
|||
User.hasOne(Token, { foreignKey: 'userID', onDelete: 'CASCADE' });
|
||||
User.hasOne(ResetRequest, { foreignKey: 'userID', onDelete: 'CASCADE' });
|
||||
User.hasMany(Group, {
|
||||
as: 'groupOwner',
|
||||
as: 'ownedGroup',
|
||||
foreignKey: 'ownerID',
|
||||
onDelete: 'CASCADE',
|
||||
});
|
||||
|
|
@ -24,7 +24,7 @@ async function initModels(sequelize) {
|
|||
foreignKey: 'userID',
|
||||
});
|
||||
User.hasOne(Organization, {
|
||||
as: 'orgOwner',
|
||||
as: 'ownedOrg',
|
||||
foreignKey: 'ownerID',
|
||||
onDelete: 'CASCADE',
|
||||
});
|
||||
|
|
@ -61,7 +61,10 @@ async function initModels(sequelize) {
|
|||
ResetRequest.belongsTo(User, { foreignKey: 'userID' });
|
||||
|
||||
if (process.env.NODE_ENV == 'development') {
|
||||
await sequelize.sync({ logging: false, force: true });
|
||||
await Organization.drop({ logging: false });
|
||||
await Group.drop({ logging: false });
|
||||
await ResetRequest.drop({ logging: false });
|
||||
await sequelize.sync({ logging: false, alter: true });
|
||||
} else {
|
||||
await sequelize.sync({ logging: false, alter: true });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,11 +36,9 @@ async function RequestReset(req, res, next) {
|
|||
|
||||
console.log(`${resetRequest.reqID}`);
|
||||
|
||||
return res
|
||||
.status(200)
|
||||
.send(
|
||||
'Password reset request sent. If a user exists with this email, an email will be sent with the required information.'
|
||||
);
|
||||
return res.send(
|
||||
'Password reset request sent. If a user exists with this email, an email will be sent with the required information.'
|
||||
);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
return res.status(500).send('Whoops, something went wrong.');
|
||||
|
|
@ -25,7 +25,7 @@ async function ResetPassword(req, res, next) {
|
|||
|
||||
const user = await result.getUser();
|
||||
await user.update({ password: hashedPassword });
|
||||
res.status(200).send('Your password has been changed');
|
||||
return res.send('Your password has been changed');
|
||||
}
|
||||
|
||||
module.exports = ResetPassword;
|
||||
16
server/routes/authRouter.js
Normal file
16
server/routes/authRouter.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
const basicAuth = require('../middleware/basicAuth');
|
||||
|
||||
const CreateUser = require('./auth/CreateUser');
|
||||
const Login = require('./auth/Login');
|
||||
const RequestReset = require('./auth/RequestReset');
|
||||
const ResetPassword = require('./auth/ResetPassword');
|
||||
|
||||
router.post('/register', CreateUser);
|
||||
router.post('/login', basicAuth, Login);
|
||||
router.get('/reset-password', RequestReset);
|
||||
router.patch('/reset-password/:id', ResetPassword);
|
||||
|
||||
module.exports = router;
|
||||
|
|
@ -3,21 +3,6 @@ var router = express.Router();
|
|||
|
||||
const tokenAuth = require('../middleware/tokenAuth');
|
||||
|
||||
router.get();
|
||||
|
||||
/*
|
||||
Organization
|
||||
- Create organization
|
||||
- Create organization account
|
||||
- Add people to organization
|
||||
- Remove people from organization
|
||||
- Get organization members
|
||||
|
||||
Groups
|
||||
- Create group
|
||||
- Add people to group
|
||||
- Remove people from group
|
||||
- Delete group
|
||||
*/
|
||||
router.get('/', tokenAuth);
|
||||
|
||||
module.exports = router;
|
||||
|
|
|
|||
16
server/routes/user/CreateGroup.js
Normal file
16
server/routes/user/CreateGroup.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
async function CreateGroup(req, res, next) {
|
||||
const user = req.user;
|
||||
const groupName = req.body.groupName;
|
||||
|
||||
if (!groupName) {
|
||||
return res.status(400).send('Request missing required form fields.');
|
||||
}
|
||||
|
||||
const group = await user.createOwnedGroup({
|
||||
groupName: groupName,
|
||||
});
|
||||
|
||||
return res.send(group);
|
||||
}
|
||||
|
||||
module.exports = CreateGroup;
|
||||
25
server/routes/user/CreateOrg.js
Normal file
25
server/routes/user/CreateOrg.js
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
async function CreateOrg(req, res, next) {
|
||||
const user = req.user;
|
||||
const orgName = req.body.orgName;
|
||||
|
||||
if (!orgName) {
|
||||
return res.status(400).send('Form missing necessary fields');
|
||||
}
|
||||
|
||||
const existing = user.getOwnedOrg();
|
||||
if (existing == {}) {
|
||||
return res
|
||||
.status(500)
|
||||
.send(
|
||||
'This user already owns an organization, delete it to create another.'
|
||||
);
|
||||
}
|
||||
|
||||
const org = await user.createOwnedOrg({
|
||||
orgName: orgName,
|
||||
});
|
||||
|
||||
return res.status(200).send(org);
|
||||
}
|
||||
|
||||
module.exports = CreateOrg;
|
||||
|
|
@ -2,7 +2,7 @@ async function GetUserDetails(req, res, next) {
|
|||
const { userID, password, createdAt, updatedAt, ...user } =
|
||||
req.user.dataValues;
|
||||
|
||||
res.status(200).send(user);
|
||||
return res.send(user);
|
||||
}
|
||||
|
||||
module.exports = GetUserDetails;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ async function UpdateUser(req, res, next) {
|
|||
}
|
||||
|
||||
req.user.update({ ...body });
|
||||
return res.status(200).send('Account details changed.');
|
||||
return res.send('Account details changed.');
|
||||
}
|
||||
|
||||
module.exports = UpdateUser;
|
||||
|
|
|
|||
|
|
@ -1,21 +1,16 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
const basicAuth = require('../middleware/basicAuth');
|
||||
const tokenAuth = require('../middleware/tokenAuth');
|
||||
|
||||
const GetUserDetails = require('./auth/GetUserDetails');
|
||||
const CreateUser = require('./auth/CreateUser');
|
||||
const Login = require('./auth/Login');
|
||||
const RequestReset = require('./auth/RequestReset');
|
||||
const ResetPassword = require('./auth/ResetPassword');
|
||||
const UpdateUser = require('./auth/UpdateUser');
|
||||
const GetUserDetails = require('./user/GetUserDetails');
|
||||
const UpdateUser = require('./user/UpdateUser');
|
||||
const CreateGroup = require('./user/CreateGroup');
|
||||
const CreateOrg = require('./user/CreateOrg');
|
||||
|
||||
router.get('/', tokenAuth, GetUserDetails);
|
||||
router.post('/register', CreateUser);
|
||||
router.post('/login', basicAuth, Login);
|
||||
router.get('/reset-password', RequestReset);
|
||||
router.patch('/reset-password/:id', ResetPassword);
|
||||
router.patch('/update', tokenAuth, UpdateUser);
|
||||
router.post('/group/create', tokenAuth, CreateGroup);
|
||||
router.post('/org/create', tokenAuth, CreateOrg);
|
||||
|
||||
module.exports = router;
|
||||
|
|
|
|||
Reference in a new issue