mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-10 07:48:37 +01:00
fix members
This commit is contained in:
@@ -23,7 +23,7 @@ export default defineEventHandler(async event => {
|
||||
...result
|
||||
]
|
||||
|
||||
const member = await TeamMemberModel.findOne({ project_id, user_id: data.user.id, pending: false });
|
||||
const member = await TeamMemberModel.findOne({ project_id, $or: [{ user_id: user.id }, { email: user.user.email }], pending: false });
|
||||
if (!member) return setResponseStatus(event, 400, 'Not a member');
|
||||
if (!member.permission) return setResponseStatus(event, 400, 'No permission');
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ export default defineEventHandler(async event => {
|
||||
const project = await ProjectModel.findOne({ _id: project_id });
|
||||
if (!project) return;
|
||||
|
||||
const [hasAccess] = await hasAccessToProject(user.id, project_id, project)
|
||||
const [hasAccess] = await hasAccessToProject(user.id, project_id, user.user.email, project)
|
||||
if (!hasAccess) return;
|
||||
|
||||
const query = getQuery(event);
|
||||
|
||||
@@ -7,7 +7,13 @@ export default defineEventHandler(async event => {
|
||||
if (!userData?.logged) return [];
|
||||
|
||||
|
||||
const members = await TeamMemberModel.find({ user_id: userData.id, pending: false });
|
||||
const members = await TeamMemberModel.find({
|
||||
$or: [
|
||||
{ user_id: userData.id },
|
||||
{ email: userData.user.email }
|
||||
],
|
||||
pending: false
|
||||
});
|
||||
|
||||
const projects: TProject[] = [];
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ export default defineEventHandler(async event => {
|
||||
if (!user) return setResponseStatus(event, 400, 'Email not found');
|
||||
|
||||
await TeamMemberModel.deleteOne({ project_id, user_id: user.id });
|
||||
await TeamMemberModel.deleteOne({ project_id, email: email });
|
||||
|
||||
return { ok: true }
|
||||
|
||||
|
||||
@@ -42,8 +42,15 @@ export default defineEventHandler(async event => {
|
||||
})
|
||||
|
||||
for (const member of members) {
|
||||
const userMember = member.user_id ? await UserModel.findById(member.user_id) : await UserModel.findOne({ email: member.email });
|
||||
if (!userMember) continue;
|
||||
|
||||
let userMember;
|
||||
|
||||
if (member.user_id) {
|
||||
userMember = await UserModel.findById(member.user_id);
|
||||
} else {
|
||||
userMember = await UserModel.findOne({ email: member.email });
|
||||
}
|
||||
|
||||
|
||||
const permission: TPermission = {
|
||||
webAnalytics: member.permission?.webAnalytics || false,
|
||||
@@ -54,11 +61,11 @@ export default defineEventHandler(async event => {
|
||||
|
||||
result.push({
|
||||
id: member.id,
|
||||
email: userMember.email,
|
||||
name: userMember.name,
|
||||
email: userMember?.email || member.email || 'NO_EMAIL',
|
||||
name: userMember?.name || 'NO_NAME',
|
||||
role: member.role,
|
||||
pending: member.pending,
|
||||
me: user.id === userMember.id,
|
||||
me: user.id === (userMember?.id || member.user_id || 'NO_ID'),
|
||||
permission
|
||||
})
|
||||
}
|
||||
|
||||
@@ -19,13 +19,18 @@ export default defineEventHandler(async event => {
|
||||
webAnalytics: true
|
||||
}
|
||||
|
||||
const member = await TeamMemberModel.findOne({ project_id, user_id: user.id });
|
||||
const member = await TeamMemberModel.findOne({
|
||||
project_id,
|
||||
$or: [
|
||||
{ user_id: user.id }, { email: user.user.email }
|
||||
]
|
||||
});
|
||||
|
||||
if (!member) return {
|
||||
ai: true,
|
||||
domains: ['All domains'],
|
||||
events: true,
|
||||
webAnalytics: true
|
||||
ai: false,
|
||||
domains: [],
|
||||
events: false,
|
||||
webAnalytics: false
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -8,6 +8,12 @@ import { LimitNotifyModel } from "@schema/broker/LimitNotifySchema";
|
||||
import { SessionModel } from "@schema/metrics/SessionSchema";
|
||||
import StripeService from "~/server/services/StripeService";
|
||||
import { UserModel } from "@schema/UserSchema";
|
||||
import { AddressBlacklistModel } from "~/shared/schema/shields/AddressBlacklistSchema";
|
||||
import { DomainWhitelistModel } from "~/shared/schema/shields/DomainWhitelistSchema";
|
||||
import { CountryBlacklistModel } from "~/shared/schema/shields/CountryBlacklistSchema";
|
||||
import { BotTrafficOptionModel } from "~/shared/schema/shields/BotTrafficOptionSchema";
|
||||
import { TeamMemberModel } from "~/shared/schema/TeamMemberSchema";
|
||||
import { PasswordModel } from "~/shared/schema/PasswordSchema";
|
||||
|
||||
export default defineEventHandler(async event => {
|
||||
|
||||
@@ -19,6 +25,11 @@ export default defineEventHandler(async event => {
|
||||
const premiumProjects = projects.filter(e => { return e.premium && e.premium_type != 0 }).length;
|
||||
if (premiumProjects > 0) return setResponseStatus(event, 400, 'Cannot delete an account with a premium project');
|
||||
|
||||
const membersDeletation = await TeamMemberModel.deleteMany({ user_id: userData.id });
|
||||
const membersEmailDeletation = await TeamMemberModel.deleteMany({ email: userData.user.email });
|
||||
|
||||
const passwordDeletation = await PasswordModel.deleteMany({ user_id: userData.id });
|
||||
|
||||
for (const project of projects) {
|
||||
const project_id = project._id;
|
||||
await StripeService.deleteCustomer(project.customer_id);
|
||||
@@ -28,9 +39,16 @@ export default defineEventHandler(async event => {
|
||||
const limitdeletation = await ProjectLimitModel.deleteMany({ project_id });
|
||||
const sessionsDeletation = await SessionModel.deleteMany({ project_id });
|
||||
const notifiesDeletation = await LimitNotifyModel.deleteMany({ project_id });
|
||||
const aiChatsDeletation = await AiChatModel.deleteMany({ project_id });
|
||||
|
||||
const userDeletation = await UserModel.deleteOne({ _id: userData.id });
|
||||
const aiChatsDeletation = await AiChatModel.deleteMany({ project_id });
|
||||
|
||||
//Shields
|
||||
const addressBlacklistDeletation = await AddressBlacklistModel.deleteMany({ project_id });
|
||||
const botTrafficOptionsDeletation = await BotTrafficOptionModel.deleteMany({ project_id });
|
||||
const countryBlacklistDeletation = await CountryBlacklistModel.deleteMany({ project_id });
|
||||
const domainWhitelistDeletation = await DomainWhitelistModel.deleteMany({ project_id });
|
||||
|
||||
|
||||
const userDeletation = await UserModel.deleteOne({ _id: userData.id });
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user