| import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common'; |
| import { GetOrgFromRequest } from '@gitroom/nestjs-libraries/user/org.from.request'; |
| import { Organization } from '@prisma/client'; |
| import { CheckPolicies } from '@gitroom/backend/services/auth/permissions/permissions.ability'; |
| import { OrganizationService } from '@gitroom/nestjs-libraries/database/prisma/organizations/organization.service'; |
| import { AddTeamMemberDto } from '@gitroom/nestjs-libraries/dtos/settings/add.team.member.dto'; |
| import { ShortlinkPreferenceDto } from '@gitroom/nestjs-libraries/dtos/settings/shortlink-preference.dto'; |
| import { ApiTags } from '@nestjs/swagger'; |
| import { AuthorizationActions, Sections } from '@gitroom/backend/services/auth/permissions/permission.exception.class'; |
|
|
| @ApiTags('Settings') |
| @Controller('/settings') |
| export class SettingsController { |
| constructor( |
| private _organizationService: OrganizationService |
| ) {} |
|
|
| @Get('/team') |
| @CheckPolicies( |
| [AuthorizationActions.Create, Sections.TEAM_MEMBERS], |
| [AuthorizationActions.Create, Sections.ADMIN] |
| ) |
| async getTeam(@GetOrgFromRequest() org: Organization) { |
| return this._organizationService.getTeam(org.id); |
| } |
|
|
| @Post('/team') |
| @CheckPolicies( |
| [AuthorizationActions.Create, Sections.TEAM_MEMBERS], |
| [AuthorizationActions.Create, Sections.ADMIN] |
| ) |
| async inviteTeamMember( |
| @GetOrgFromRequest() org: Organization, |
| @Body() body: AddTeamMemberDto |
| ) { |
| return this._organizationService.inviteTeamMember(org.id, body); |
| } |
|
|
| @Delete('/team/:id') |
| @CheckPolicies( |
| [AuthorizationActions.Create, Sections.TEAM_MEMBERS], |
| [AuthorizationActions.Create, Sections.ADMIN] |
| ) |
| deleteTeamMember( |
| @GetOrgFromRequest() org: Organization, |
| @Param('id') id: string |
| ) { |
| return this._organizationService.deleteTeamMember(org, id); |
| } |
|
|
| @Get('/shortlink') |
| async getShortlinkPreference(@GetOrgFromRequest() org: Organization) { |
| return this._organizationService.getShortlinkPreference(org.id); |
| } |
|
|
| @Post('/shortlink') |
| @CheckPolicies([AuthorizationActions.Create, Sections.ADMIN]) |
| async updateShortlinkPreference( |
| @GetOrgFromRequest() org: Organization, |
| @Body() body: ShortlinkPreferenceDto |
| ) { |
| return this._organizationService.updateShortlinkPreference( |
| org.id, |
| body.shortlink |
| ); |
| } |
| } |
|
|