feat: Added team leave
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
export default defineEventHandler((event) => {
|
||||
const userId: string = event.context.params ? event.context.params.id : '@me'
|
||||
export default defineEventHandler(async (event) => {
|
||||
let teamId: string = event.context.params ? event.context.params.id : '@current'
|
||||
|
||||
if (teamId === '@current') {
|
||||
const user = await getUser('@me', event)
|
||||
teamId = user.team._id.toString()
|
||||
}
|
||||
|
||||
return await TeamModel.findById(teamId).populate('members')
|
||||
})
|
||||
|
30
webv2/server/api/teams/[id]/members/[userId].delete.ts
Normal file
30
webv2/server/api/teams/[id]/members/[userId].delete.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
let teamId: string = event.context.params ? event.context.params.id : '@current'
|
||||
const userId: string = event.context.params ? event.context.params.userId : '@me'
|
||||
|
||||
const user = await getUser(userId, event)
|
||||
|
||||
if (!user.team) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'User must be in a team' })
|
||||
}
|
||||
|
||||
if (teamId === '@current') {
|
||||
teamId = user.team._id.toString()
|
||||
}
|
||||
|
||||
const team = await TeamModel.findOneAndUpdate({ _id: user.team._id }, {
|
||||
$pull: {
|
||||
members: user._id
|
||||
}
|
||||
}, { returnDocument: 'after' })
|
||||
|
||||
if (team && team.members.length < 1) {
|
||||
team.deleteOne()
|
||||
}
|
||||
|
||||
user.team = undefined
|
||||
|
||||
await user.save()
|
||||
|
||||
return ''
|
||||
})
|
@@ -1,16 +1,23 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { name, color } = await readBody(event)
|
||||
const { name, color, userId } = await readBody(event)
|
||||
|
||||
const user = await getUser('@me', event)
|
||||
const user = await getUser(userId ?? '@me', event)
|
||||
|
||||
if (user.team) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'User already in a team' })
|
||||
}
|
||||
|
||||
const team = new TeamModel({
|
||||
name,
|
||||
color
|
||||
color,
|
||||
members: [
|
||||
user._id
|
||||
]
|
||||
})
|
||||
|
||||
await team.save()
|
||||
|
||||
user.teamId = team._id
|
||||
user.team = team._id
|
||||
|
||||
await user.save()
|
||||
|
||||
|
Reference in New Issue
Block a user