Completed GetUser and GetOrg

This commit is contained in:
Ceferino Patino 2022-03-05 22:16:01 -06:00
commit 7666a40e21
4 changed files with 83 additions and 27 deletions

View file

@ -1,7 +1,61 @@
async function GetUserDetails(req, res, next) {
const { userID, password, updatedAt, ...user } = req.user.dataValues;
const { User, Organization } = require('../../models/index');
return res.send(user);
async function GetUserDetails(req, res, next) {
const user = req.user;
const userID = req.params.userID;
if (user.userID == userID) {
return res.send(user);
}
const result = await User.findOne({
where: { userID: userID },
include: [
{
model: Organization,
as: 'memberOrgs',
include: [
{
model: User,
as: 'orgMembers',
where: { userID: user.userID },
required: false,
},
{
model: User,
as: 'orgOwner',
where: { userID: user.userID },
required: false,
},
],
},
{
model: Organization,
as: 'ownedOrg',
include: {
model: User,
as: 'orgMembers',
where: { userID: user.userID },
required: false,
},
},
],
});
if (!result) {
return res.status(500).send('No user with that ID exists.');
}
const filteredResult = result.memberOrgs.filter(
(org) => org.orgMembers.length != 0 || org_owner
);
if (filteredResult.length == 0 && result.ownedOrg.orgMembers.length == 0) {
return res.status(403).send('You do not have contact with this user.');
}
const { memberOrgs, ownedOrg, ...newResult } = result;
return res.send(newResult.dataValues);
}
module.exports = GetUserDetails;

View file

@ -15,7 +15,7 @@ const ResetPassword = require('./auth/ResetPassword');
router.post('/register', CreateUser);
router.post('/login', basicAuth, Login);
router.post('/logout', tokenAuth, Logout);
router.get('/', tokenAuth, GetUserDetails);
router.get('/:userID', tokenAuth, GetUserDetails);
router.patch('/update', tokenAuth, UpdateUserDetails);
router.get('/reset-password', RequestReset);
router.patch('/reset-password/:id', ResetPassword);

View file

@ -7,7 +7,7 @@ async function CreateOrg(req, res, next) {
}
const existing = user.getOwnedOrg();
if (existing == {}) {
if (existing) {
return res
.status(500)
.send(

View file

@ -1,39 +1,41 @@
const { Op } = require('sequelize');
const { Organization } = require('../../models/index');
const { Organization, User } = require('../../models/index');
async function GetOrgDetails(req, res, next) {
const user = req.user;
const orgID = req.params.orgID;
const result = await Organization.findOne({
where: {
orgID: orgID,
},
}).then(async (result) => {
if (!result) {
return;
}
const owner = result.ownerID == user.userID;
const member = await result.countUsers({
where: { userID: user.userID },
});
if (owner || member) {
return result;
}
where: { orgID: orgID },
include: [
{
model: User,
as: 'orgOwner',
where: { userID: user.userID },
required: false,
},
{
model: User,
as: 'orgMembers',
where: { userID: user.userID },
required: false,
},
],
});
console.log(result);
if (!result) {
return res
.status(500)
.send('You do not know any organizations with this id.');
return res.status(500).send('There is no organization with this id.');
}
return res.send(result);
// if (!result.orgOwner && result.orgMembers.length == 0) {
// return res
// .status(500)
// .send('You do not know any organizations with this id.');
// }
const { orgOwner, orgMembers, ...newResult } = result;
return res.send(newResult.dataValues);
}
module.exports = GetOrgDetails;