Completed CreateOrg and CreateGroup routes

This commit is contained in:
Ceferino Patino 2022-03-05 16:55:30 -06:00
commit 88d7fa7fdd
14 changed files with 104 additions and 40 deletions

24
TODO Normal file
View 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

View file

@ -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) {

View file

@ -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 });
}

View file

@ -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.');

View file

@ -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;

View 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;

View file

@ -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;

View 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;

View 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;

View file

@ -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;

View file

@ -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;

View file

@ -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;