68 lines
2.3 KiB
TypeScript
68 lines
2.3 KiB
TypeScript
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
|
|
);
|
|
}
|
|
}
|