| | import { Get, Post, Put, RestController, GlobalScope } from '@n8n/decorators'; |
| | import pick from 'lodash/pick'; |
| |
|
| | import { BadRequestError } from '@/errors/response-errors/bad-request.error'; |
| | import { EventService } from '@/events/event.service'; |
| |
|
| | import { NON_SENSIBLE_LDAP_CONFIG_PROPERTIES } from './constants'; |
| | import { getLdapSynchronizations } from './helpers.ee'; |
| | import { LdapService } from './ldap.service.ee'; |
| | import { LdapConfiguration } from './types'; |
| |
|
| | @RestController('/ldap') |
| | export class LdapController { |
| | constructor( |
| | private readonly ldapService: LdapService, |
| | private readonly eventService: EventService, |
| | ) {} |
| |
|
| | @Get('/config') |
| | @GlobalScope('ldap:manage') |
| | async getConfig() { |
| | return await this.ldapService.loadConfig(); |
| | } |
| |
|
| | @Post('/test-connection') |
| | @GlobalScope('ldap:manage') |
| | async testConnection() { |
| | try { |
| | await this.ldapService.testConnection(); |
| | } catch (error) { |
| | throw new BadRequestError((error as { message: string }).message); |
| | } |
| | } |
| |
|
| | @Put('/config') |
| | @GlobalScope('ldap:manage') |
| | async updateConfig(req: LdapConfiguration.Update) { |
| | try { |
| | await this.ldapService.updateConfig(req.body); |
| | } catch (error) { |
| | throw new BadRequestError((error as { message: string }).message); |
| | } |
| |
|
| | const data = await this.ldapService.loadConfig(); |
| |
|
| | this.eventService.emit('ldap-settings-updated', { |
| | userId: req.user.id, |
| | ...pick(data, NON_SENSIBLE_LDAP_CONFIG_PROPERTIES), |
| | }); |
| |
|
| | return data; |
| | } |
| |
|
| | @Get('/sync') |
| | @GlobalScope('ldap:sync') |
| | async getLdapSync(req: LdapConfiguration.GetSync) { |
| | const { page = '0', perPage = '20' } = req.query; |
| | return await getLdapSynchronizations(parseInt(page, 10), parseInt(perPage, 10)); |
| | } |
| |
|
| | @Post('/sync') |
| | @GlobalScope('ldap:sync') |
| | async syncLdap(req: LdapConfiguration.Sync) { |
| | try { |
| | await this.ldapService.runSync(req.body.type); |
| | } catch (error) { |
| | throw new BadRequestError((error as { message: string }).message); |
| | } |
| | } |
| | } |
| |
|