mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-13 06:34:39 -04:00
182 lines
3.5 KiB
TypeScript
182 lines
3.5 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
import {
|
|
IsArray,
|
|
IsBoolean,
|
|
IsNumber,
|
|
IsOptional,
|
|
IsString,
|
|
IsUrl,
|
|
ValidateNested,
|
|
} from 'class-validator';
|
|
import { URL } from 'url';
|
|
|
|
import { GuestAccess } from '../config/guest_access.enum';
|
|
import { ServerVersion } from '../monitoring/server-status.dto';
|
|
import { BaseDto } from '../utils/base.dto.';
|
|
|
|
export enum AuthProviderType {
|
|
LOCAL = 'local',
|
|
LDAP = 'ldap',
|
|
SAML = 'saml',
|
|
OAUTH2 = 'oauth2',
|
|
GITLAB = 'gitlab',
|
|
FACEBOOK = 'facebook',
|
|
GITHUB = 'github',
|
|
TWITTER = 'twitter',
|
|
DROPBOX = 'dropbox',
|
|
GOOGLE = 'google',
|
|
}
|
|
|
|
export type AuthProviderTypeWithCustomName =
|
|
| AuthProviderType.LDAP
|
|
| AuthProviderType.OAUTH2
|
|
| AuthProviderType.SAML
|
|
| AuthProviderType.GITLAB;
|
|
|
|
export type AuthProviderTypeWithoutCustomName =
|
|
| AuthProviderType.LOCAL
|
|
| AuthProviderType.FACEBOOK
|
|
| AuthProviderType.GITHUB
|
|
| AuthProviderType.TWITTER
|
|
| AuthProviderType.DROPBOX
|
|
| AuthProviderType.GOOGLE;
|
|
|
|
export class AuthProviderWithoutCustomNameDto extends BaseDto {
|
|
/**
|
|
* The type of the auth provider.
|
|
*/
|
|
@IsString()
|
|
type: AuthProviderTypeWithoutCustomName;
|
|
}
|
|
|
|
export class AuthProviderWithCustomNameDto extends BaseDto {
|
|
/**
|
|
* The type of the auth provider.
|
|
*/
|
|
@IsString()
|
|
type: AuthProviderTypeWithCustomName;
|
|
|
|
/**
|
|
* The identifier with which the auth provider can be called
|
|
* @example gitlab-fsorg
|
|
*/
|
|
@IsString()
|
|
identifier: string;
|
|
|
|
/**
|
|
* The name given to the auth provider
|
|
* @example GitLab fachschaften.org
|
|
*/
|
|
@IsString()
|
|
providerName: string;
|
|
}
|
|
|
|
export type AuthProviderDto =
|
|
| AuthProviderWithCustomNameDto
|
|
| AuthProviderWithoutCustomNameDto;
|
|
|
|
export class BrandingDto extends BaseDto {
|
|
/**
|
|
* The name to be displayed next to the HedgeDoc logo
|
|
* @example ACME Corp
|
|
*/
|
|
@IsString()
|
|
@IsOptional()
|
|
name?: string;
|
|
|
|
/**
|
|
* The logo to be displayed next to the HedgeDoc logo
|
|
* @example https://md.example.com/logo.png
|
|
*/
|
|
@IsUrl()
|
|
@IsOptional()
|
|
logo?: URL;
|
|
}
|
|
|
|
export class SpecialUrlsDto extends BaseDto {
|
|
/**
|
|
* A link to the privacy notice
|
|
* @example https://md.example.com/n/privacy
|
|
*/
|
|
@IsUrl()
|
|
@IsOptional()
|
|
privacy?: URL;
|
|
|
|
/**
|
|
* A link to the terms of use
|
|
* @example https://md.example.com/n/termsOfUse
|
|
*/
|
|
@IsUrl()
|
|
@IsOptional()
|
|
termsOfUse?: URL;
|
|
|
|
/**
|
|
* A link to the imprint
|
|
* @example https://md.example.com/n/imprint
|
|
*/
|
|
@IsUrl()
|
|
@IsOptional()
|
|
imprint?: URL;
|
|
}
|
|
|
|
export class FrontendConfigDto extends BaseDto {
|
|
/**
|
|
* Maximum access level for guest users
|
|
*/
|
|
@IsString()
|
|
guestAccess: GuestAccess;
|
|
|
|
/**
|
|
* Are users allowed to register on this instance?
|
|
*/
|
|
@IsBoolean()
|
|
allowRegister: boolean;
|
|
|
|
/**
|
|
* Which auth providers are enabled and how are they configured?
|
|
*/
|
|
@IsArray()
|
|
@ValidateNested({ each: true })
|
|
authProviders: AuthProviderDto[];
|
|
|
|
/**
|
|
* Individual branding information
|
|
*/
|
|
@ValidateNested()
|
|
branding: BrandingDto;
|
|
|
|
/**
|
|
* Is an image proxy enabled?
|
|
*/
|
|
@IsBoolean()
|
|
useImageProxy: boolean;
|
|
|
|
/**
|
|
* Links to some special pages
|
|
*/
|
|
@ValidateNested()
|
|
specialUrls: SpecialUrlsDto;
|
|
|
|
/**
|
|
* The version of HedgeDoc
|
|
*/
|
|
@ValidateNested()
|
|
version: ServerVersion;
|
|
|
|
/**
|
|
* The plantUML server that should be used to render.
|
|
*/
|
|
@IsUrl()
|
|
@IsOptional()
|
|
plantUmlServer?: URL;
|
|
|
|
/**
|
|
* The maximal length of each document
|
|
*/
|
|
@IsNumber()
|
|
maxDocumentLength: number;
|
|
}
|