add info endpoint

This commit is contained in:
rubikscraft 2022-03-12 15:36:01 +01:00
parent 903b20b32f
commit 0ad444f43b
No known key found for this signature in database
GPG key ID: 1463EBE9200A5CD4
10 changed files with 91 additions and 33 deletions

View file

@ -7,10 +7,7 @@ import { TypeOrmConfigService } from './config/typeorm.config.service';
import { PicsurLoggerModule } from './logger/logger.module';
import { AuthManagerModule } from './managers/auth/auth.module';
import { DemoManagerModule } from './managers/demo/demomanager.module';
import { AuthModule } from './routes/api/auth/auth.module';
import { ExperimentModule } from './routes/api/experiment/experiment.module';
import { PrefModule } from './routes/api/pref/pref.module';
import { ImageModule } from './routes/image/imageroute.module';
import { PicsurRoutesModule } from './routes/routes.module';
@Module({
imports: [
@ -22,14 +19,10 @@ import { ImageModule } from './routes/image/imageroute.module';
useExisting: ServeStaticConfigService,
imports: [PicsurConfigModule],
}),
AuthManagerModule,
AuthModule,
ImageModule,
DemoManagerModule,
PrefModule,
PicsurLoggerModule,
ExperimentModule,
AuthManagerModule,
DemoManagerModule,
PicsurRoutesModule,
],
})
export class AppModule {}

View file

@ -0,0 +1,15 @@
import { Module } from '@nestjs/common';
import { AuthModule } from './auth/auth.module';
import { ExperimentModule } from './experiment/experiment.module';
import { PrefModule } from './pref/pref.module';
import { InfoModule } from './info/info.module';
@Module({
imports: [
AuthModule,
PrefModule,
ExperimentModule,
InfoModule,
]
})
export class PicsurApiModule {}

View file

@ -0,0 +1,19 @@
import { Controller, Get } from '@nestjs/common';
import { InfoResponse } from 'picsur-shared/dist/dto/api/info.dto';
import { HostConfigService } from '../../../config/host.config.service';
import { NoAuth } from '../../../decorators/permissions.decorator';
@Controller('api/info')
export class InfoController {
constructor(private hostConfig: HostConfigService) {}
@Get()
@NoAuth()
getInfo() {
const response: InfoResponse = {
demo: this.hostConfig.isDemo(),
production: this.hostConfig.isProduction(),
};
return response;
}
}

View file

@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { PicsurConfigModule } from '../../../config/config.module';
import { InfoController } from './info.controller';
@Module({
imports: [PicsurConfigModule],
controllers: [InfoController],
})
export class InfoModule {}

View file

@ -0,0 +1,8 @@
import { Module } from '@nestjs/common';
import { PicsurApiModule } from './api/api.module';
import { ImageModule } from './image/imageroute.module';
@Module({
imports: [PicsurApiModule, ImageModule],
})
export class PicsurRoutesModule {}

View file

@ -1,12 +1,15 @@
import { Type } from 'class-transformer';
import {
IsArray, IsBoolean,
IsDefined, IsEnum, IsInt, IsNotEmpty,
IsArray,
IsBoolean,
IsDefined,
IsEnum, IsNotEmpty,
IsOptional,
IsString, ValidateNested
IsString,
ValidateNested
} from 'class-validator';
import { EUser } from '../entities/user.entity';
import { Permissions, PermissionsList } from './permissions';
import { EUser } from '../../entities/user.entity';
import { Permissions, PermissionsList } from '../permissions';
// Api
@ -63,20 +66,3 @@ export class AuthMeResponse {
@IsDefined()
newJwtToken: string;
}
// Extra
export class JwtDataDto {
@IsDefined()
@ValidateNested()
@Type(() => EUser)
user: EUser;
@IsOptional()
@IsInt()
iat?: number;
@IsOptional()
@IsInt()
exp?: number;
}

View file

@ -0,0 +1 @@
export * from './api.dto';

View file

@ -0,0 +1,9 @@
import { IsDefined } from 'class-validator';
export class InfoResponse {
@IsDefined()
production: boolean;
@IsDefined()
demo: boolean;
}

18
shared/src/dto/jwt.dto.ts Normal file
View file

@ -0,0 +1,18 @@
import { Type } from 'class-transformer';
import { IsDefined, IsInt, IsOptional, ValidateNested } from 'class-validator';
import { EUser } from '../entities/user.entity';
export class JwtDataDto {
@IsDefined()
@ValidateNested()
@Type(() => EUser)
user: EUser;
@IsOptional()
@IsInt()
iat?: number;
@IsOptional()
@IsInt()
exp?: number;
}