Compare commits
4 Commits
f9c13e5ada
...
fabc504e06
Author | SHA1 | Date | |
---|---|---|---|
fabc504e06 | |||
ea405ba6d5 | |||
d1f08e3dfa | |||
70b0b86a23 |
@@ -1,5 +1,5 @@
|
||||
<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 />
|
||||
</div>
|
||||
</template>
|
||||
|
@@ -3,6 +3,11 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
if (teamId === '@current') {
|
||||
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()
|
||||
}
|
||||
|
||||
|
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
|
||||
},
|
||||
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,
|
||||
username: string
|
||||
},
|
||||
teamInvites: string[],
|
||||
teamInvites: Types.ObjectId[],
|
||||
role: {
|
||||
admin: boolean,
|
||||
moderator: boolean,
|
||||
|
Reference in New Issue
Block a user