fix private groups visibility on feed and profiles

This commit is contained in:
Adolfo Reyna
2021-10-10 10:31:39 -07:00
parent d495cfa057
commit c64e2361fc
2 changed files with 12 additions and 14 deletions

View File

@@ -100,8 +100,8 @@ postDB = (DB)=>{
});
}
DB.getPosts = async (profileId) => {
const profile = await DB.getProfile(profileId);
DB.getPosts = async (profileId, viewerProfileId) => {
const profile = await DB.getProfile(viewerProfileId);
let query = {};
if(profileId) {
const id = DB.ObjectID(profileId);
@@ -122,18 +122,24 @@ postDB = (DB)=>{
filterPrivateGroups = async (posts, profile) =>{
let filteredPosts = [];
let following = {};
profile.following.forEach(element => {
following[element] = 1;
});
console.log(following)
for(i in posts){
let p = posts[i];
let isPostingAPrivateGroup = await DB.isGroupPrivate(p.profileid);
let isPostingToAPrivateGroup = p.toProfile ? await DB.isGroupPrivate(p.toProfile) : false;
console.log(following[p.profileid], following[p.toProfile + ""], p.toProfile)
if(!isPostingAPrivateGroup && !isPostingToAPrivateGroup){
filteredPosts.push(p);
continue;
}
if(isPostingAPrivateGroup && !profile[p.profileid]){
if(isPostingAPrivateGroup && !following[p.profileid + ""]){
continue;
}
if(isPostingToAPrivateGroup && !profile[p.toProfile]){
if(isPostingToAPrivateGroup && !following[p.toProfile + ""]){
continue;
}
filteredPosts.push(p);
@@ -144,8 +150,7 @@ postDB = (DB)=>{
DB.getFeed = async (profileId) => {
const profile = await DB.getProfile(profileId);
let ids = profile.following.map((id)=>DB.ObjectID(id));
ids.push(profileId)
const _id = DB.ObjectID(profileId);
ids.push(DB.ObjectID(profileId))
query = {
$or: [
{profileid: {

View File

@@ -21,14 +21,7 @@ DB.getDB.then((DB)=>{
router.get("/usr/:id", async (req, res) => {
const profileId = req.params.id;
if(await DB.isGroupPrivate(profileId)){
let requestProfile = getProfileId(req) + "";
let group = await DB.getProfileCache(profileId);
if(!group.subscribed[requestProfile] && profileId != requestProfile){
return res.json([]);
}
}
const posts = await DB.getPosts(profileId);
const posts = await DB.getPosts(profileId, getProfileId(req));
return res.json(posts);
});