streamby-core 0.10.9 → 0.10.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -135,9 +135,16 @@ function createStreamByRouter(config) {
135
135
  }
136
136
  const projectId = req.params.id;
137
137
  const updates = req.body;
138
+ const project = await config.projectProvider.getById(projectId);
139
+ if (!project) {
140
+ return res.status(404).json({ error: 'Project not found' });
141
+ }
138
142
  if (!updates || typeof updates !== 'object') {
139
143
  return res.status(400).json({ error: 'Missing updates payload' });
140
144
  }
145
+ if (!isProjectMember(project, auth.userId)) {
146
+ return res.status(403).json({ error: 'Unauthorized project access' });
147
+ }
141
148
  const updated = await config.projectProvider.update(projectId, updates);
142
149
  res.status(200).json({ success: true, project: updated });
143
150
  }
@@ -147,7 +154,16 @@ function createStreamByRouter(config) {
147
154
  });
148
155
  router.delete('/projects/:id', async (req, res) => {
149
156
  try {
150
- await (0, project_1.deleteProjectService)(req, config.authProvider, config.projectProvider);
157
+ const auth = await config.authProvider(req);
158
+ const projectId = req.params.id;
159
+ const project = await config.projectProvider.getById(projectId);
160
+ if (!project) {
161
+ return res.status(404).json({ error: 'Project not found' });
162
+ }
163
+ if (!isProjectMember(project, auth.userId)) {
164
+ return res.status(403).json({ error: 'Unauthorized project access' });
165
+ }
166
+ await (0, project_1.deleteProjectService)(projectId, config.projectProvider);
151
167
  res.status(200).json({ success: true });
152
168
  }
153
169
  catch (err) {
@@ -13,8 +13,8 @@ function createMongoProjectProvider(ProjectModel, adapter) {
13
13
  const newProject = await ProjectModel.create({
14
14
  members: [
15
15
  {
16
- userId: data.userId,
17
- role: 'admin',
16
+ userId: data.members[0].userId,
17
+ role: data.members[0].role,
18
18
  }
19
19
  ],
20
20
  name: data.name,
@@ -8,7 +8,7 @@ export declare function updateProjectService(req: Request, authProvider: AuthPro
8
8
  success: boolean;
9
9
  project: import("../types").ProjectInfo;
10
10
  }>;
11
- export declare function deleteProjectService(req: Request, authProvider: AuthProvider, projectProvider: ProjectProvider): Promise<{
11
+ export declare function deleteProjectService(projectId: string, projectProvider: ProjectProvider): Promise<{
12
12
  success: boolean;
13
13
  }>;
14
14
  export declare function deleteProjectImageService(req: Request, authProvider: AuthProvider, projectProvider: ProjectProvider): Promise<{
@@ -12,8 +12,8 @@ async function createProjectService(req, authProvider, projectProvider) {
12
12
  }
13
13
  const newProject = await projectProvider.create({
14
14
  name,
15
- userId: auth.userId,
16
15
  description: description || '',
16
+ members: [{ userId: auth.userId, role: "admin" }]
17
17
  });
18
18
  return {
19
19
  success: true,
@@ -37,16 +37,7 @@ async function updateProjectService(req, authProvider, projectProvider) {
37
37
  project: updatedProject,
38
38
  };
39
39
  }
40
- async function deleteProjectService(req, authProvider, projectProvider) {
41
- const projectId = req.params.id;
42
- const auth = await authProvider(req);
43
- const project = await projectProvider.getById(projectId);
44
- if (!project) {
45
- throw new Error('Project not found');
46
- }
47
- if (auth.role !== "admin") {
48
- throw new Error('Unauthorized');
49
- }
40
+ async function deleteProjectService(projectId, projectProvider) {
50
41
  await projectProvider.delete(projectId);
51
42
  return {
52
43
  success: true,
@@ -60,7 +60,10 @@ export interface ProjectProvider {
60
60
  create(data: {
61
61
  name: string;
62
62
  image?: string;
63
- userId: string;
63
+ members: [{
64
+ userId: string;
65
+ role: string;
66
+ }];
64
67
  description?: string;
65
68
  allowUpload?: boolean;
66
69
  allowSharing?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "streamby-core",
3
- "version": "0.10.9",
3
+ "version": "0.10.11",
4
4
  "description": "StreamBy middleware framework for media storage management",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",