Compare commits
4 Commits
f9c13e5ada
...
fabc504e06
Author | SHA1 | Date | |
---|---|---|---|
fabc504e06 | |||
ea405ba6d5 | |||
d1f08e3dfa | |||
70b0b86a23 |
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="min-h-screen w-full overflow-y-auto bg-gray-100 dark:bg-gray-900">
|
<div class="min-h-screen w-full overflow-y-auto bg-gray-900">
|
||||||
<NuxtLayout />
|
<NuxtLayout />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@@ -3,6 +3,11 @@ export default defineEventHandler(async (event) => {
|
|||||||
|
|
||||||
if (teamId === '@current') {
|
if (teamId === '@current') {
|
||||||
const user = await getUser('@me', event)
|
const user = await getUser('@me', event)
|
||||||
|
|
||||||
|
if (!user.team) {
|
||||||
|
throw createError({ statusCode: 400, statusMessage: 'User must be in a team' })
|
||||||
|
}
|
||||||
|
|
||||||
teamId = user.team._id.toString()
|
teamId = user.team._id.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
27
webv2/server/api/teams/[id]/members/index.post.ts
Normal file
27
webv2/server/api/teams/[id]/members/index.post.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
export default defineEventHandler(async (event) => {
|
||||||
|
const { userId } = await readBody(event)
|
||||||
|
const teamId: string = event.context.params ? event.context.params.id : '@current'
|
||||||
|
|
||||||
|
if (teamId === '@current') {
|
||||||
|
throw createError({ statusCode: 400, statusMessage: 'Cannot join your own team' })
|
||||||
|
}
|
||||||
|
|
||||||
|
const user = await getUser(userId, event)
|
||||||
|
|
||||||
|
if (user.team) {
|
||||||
|
throw createError({ statusCode: 400, statusMessage: 'User already is in a team' })
|
||||||
|
}
|
||||||
|
|
||||||
|
const team = await TeamModel.findById(teamId).populate('members')
|
||||||
|
|
||||||
|
if (!team) {
|
||||||
|
throw createError({ statusCode: 500, statusMessage: 'Team does not exist' })
|
||||||
|
}
|
||||||
|
|
||||||
|
team.members.push(userId)
|
||||||
|
user.team = team._id
|
||||||
|
|
||||||
|
team.save()
|
||||||
|
|
||||||
|
return team
|
||||||
|
})
|
3
webv2/server/api/teams/index.get.ts
Normal file
3
webv2/server/api/teams/index.get.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export default defineEventHandler(async () => {
|
||||||
|
return await TeamModel.find()
|
||||||
|
})
|
19
webv2/server/api/users/[id]/teamInvites.post.ts
Normal file
19
webv2/server/api/users/[id]/teamInvites.post.ts
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
export default defineEventHandler(async (event) => {
|
||||||
|
const { teamId } = await readBody(event)
|
||||||
|
|
||||||
|
const userId: string = event.context.params ? event.context.params.id : '@me'
|
||||||
|
|
||||||
|
if (userId === '@me') {
|
||||||
|
throw createError({ statusCode: 400, statusMessage: 'Cannot invite current user to a team' })
|
||||||
|
}
|
||||||
|
|
||||||
|
const user = await getUser(userId, event)
|
||||||
|
|
||||||
|
const { teamInvites } = await UserModel.findByIdAndUpdate(user._id, {
|
||||||
|
$addToSet: {
|
||||||
|
teamInvites: teamId
|
||||||
|
}
|
||||||
|
}) ?? { teamInvites: [] }
|
||||||
|
|
||||||
|
return teamInvites
|
||||||
|
})
|
@@ -18,7 +18,7 @@ const userSchema = new Schema({
|
|||||||
teamAdmin: Boolean
|
teamAdmin: Boolean
|
||||||
},
|
},
|
||||||
teamInvites: [
|
teamInvites: [
|
||||||
Types.ObjectId
|
{ type: Types.ObjectId, ref: 'Team' }
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
2
webv2/types/global.d.ts
vendored
2
webv2/types/global.d.ts
vendored
@@ -16,7 +16,7 @@ declare global {
|
|||||||
uuid: string,
|
uuid: string,
|
||||||
username: string
|
username: string
|
||||||
},
|
},
|
||||||
teamInvites: string[],
|
teamInvites: Types.ObjectId[],
|
||||||
role: {
|
role: {
|
||||||
admin: boolean,
|
admin: boolean,
|
||||||
moderator: boolean,
|
moderator: boolean,
|
||||||
|
Reference in New Issue
Block a user