mirror of
https://github.com/gnmyt/LicenseAPI.git
synced 2026-01-12 03:01:47 +00:00
Add invitation methods to projects.ts controller
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
import { IProject, Project } from "@models/Project";
|
import {IMemberProject, IProject, Project} from "@models/Project";
|
||||||
import { Types } from "mongoose";
|
import { Types } from "mongoose";
|
||||||
import crypto from "crypto";
|
import crypto from "crypto";
|
||||||
import { AccessKey, IKeyRole } from "@models/AccessKey";
|
import { AccessKey, IKeyRole } from "@models/AccessKey";
|
||||||
@ -28,18 +28,23 @@ export const checkProjectAccess = (requiredPermission: IKeyRole) => async (userI
|
|||||||
return { code: 5009, message: "The provided project id does not exist" };
|
return { code: 5009, message: "The provided project id does not exist" };
|
||||||
};
|
};
|
||||||
|
|
||||||
const projectMapper = (project: IProject) => ({
|
const projectMapper = (project: IProject | IMemberProject) => {
|
||||||
id: project._id, name: project.name, validationKey: project.validationKey,
|
const baseProject = {id: project._id, name: project.name, validationKey: project.validationKey,
|
||||||
defaults: project.defaults,
|
defaults: project.defaults,};
|
||||||
});
|
if ('role' in project) return { ...baseProject, role: project.role };
|
||||||
|
|
||||||
|
return baseProject;
|
||||||
|
};
|
||||||
|
|
||||||
export const listProjects = async (userId?: string) => {
|
export const listProjects = async (userId?: string) => {
|
||||||
const projects = await Project.find({ creatorId: userId || "" });
|
const projects: Array<IProject | IMemberProject> = await Project.find({ creatorId: userId || "" });
|
||||||
|
|
||||||
const memberProjects = await Member.find({ memberId: userId || "", accepted: true });
|
const memberProjects = await Member.find({ memberId: userId || "", accepted: true });
|
||||||
for (const project of memberProjects) {
|
for (const memberProject of memberProjects) {
|
||||||
const foundProject = await Project.findById(project.projectId);
|
const foundProject = await Project.findById(memberProject.projectId);
|
||||||
if (foundProject !== null) projects.push(foundProject);
|
if (foundProject !== null) {
|
||||||
|
projects.push({ ...foundProject.toObject(), role: memberProject.role });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return projects.map(project => projectMapper(project));
|
return projects.map(project => projectMapper(project));
|
||||||
@ -52,6 +57,13 @@ export const getProject = async (projectId: string, userId: string) => {
|
|||||||
return projectMapper(project);
|
return projectMapper(project);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getProjectUnsafe = async (projectId: string): Promise<IProject | null> => {
|
||||||
|
const project = await Project.findById(projectId);
|
||||||
|
if (project === null) return null;
|
||||||
|
|
||||||
|
return project;
|
||||||
|
}
|
||||||
|
|
||||||
export const createProject = async (name: string, userId: string) => {
|
export const createProject = async (name: string, userId: string) => {
|
||||||
await Project.create({ name, creatorId: userId });
|
await Project.create({ name, creatorId: userId });
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user