add info endpoint
This commit is contained in:
parent
903b20b32f
commit
0ad444f43b
|
@ -7,10 +7,7 @@ import { TypeOrmConfigService } from './config/typeorm.config.service';
|
||||||
import { PicsurLoggerModule } from './logger/logger.module';
|
import { PicsurLoggerModule } from './logger/logger.module';
|
||||||
import { AuthManagerModule } from './managers/auth/auth.module';
|
import { AuthManagerModule } from './managers/auth/auth.module';
|
||||||
import { DemoManagerModule } from './managers/demo/demomanager.module';
|
import { DemoManagerModule } from './managers/demo/demomanager.module';
|
||||||
import { AuthModule } from './routes/api/auth/auth.module';
|
import { PicsurRoutesModule } from './routes/routes.module';
|
||||||
import { ExperimentModule } from './routes/api/experiment/experiment.module';
|
|
||||||
import { PrefModule } from './routes/api/pref/pref.module';
|
|
||||||
import { ImageModule } from './routes/image/imageroute.module';
|
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -22,14 +19,10 @@ import { ImageModule } from './routes/image/imageroute.module';
|
||||||
useExisting: ServeStaticConfigService,
|
useExisting: ServeStaticConfigService,
|
||||||
imports: [PicsurConfigModule],
|
imports: [PicsurConfigModule],
|
||||||
}),
|
}),
|
||||||
|
|
||||||
AuthManagerModule,
|
|
||||||
AuthModule,
|
|
||||||
ImageModule,
|
|
||||||
DemoManagerModule,
|
|
||||||
PrefModule,
|
|
||||||
PicsurLoggerModule,
|
PicsurLoggerModule,
|
||||||
ExperimentModule,
|
AuthManagerModule,
|
||||||
|
DemoManagerModule,
|
||||||
|
PicsurRoutesModule,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class AppModule {}
|
export class AppModule {}
|
||||||
|
|
15
backend/src/routes/api/api.module.ts
Normal file
15
backend/src/routes/api/api.module.ts
Normal 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 {}
|
19
backend/src/routes/api/info/info.controller.ts
Normal file
19
backend/src/routes/api/info/info.controller.ts
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
9
backend/src/routes/api/info/info.module.ts
Normal file
9
backend/src/routes/api/info/info.module.ts
Normal 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 {}
|
8
backend/src/routes/routes.module.ts
Normal file
8
backend/src/routes/routes.module.ts
Normal 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 {}
|
|
@ -1,12 +1,15 @@
|
||||||
import { Type } from 'class-transformer';
|
import { Type } from 'class-transformer';
|
||||||
import {
|
import {
|
||||||
IsArray, IsBoolean,
|
IsArray,
|
||||||
IsDefined, IsEnum, IsInt, IsNotEmpty,
|
IsBoolean,
|
||||||
|
IsDefined,
|
||||||
|
IsEnum, IsNotEmpty,
|
||||||
IsOptional,
|
IsOptional,
|
||||||
IsString, ValidateNested
|
IsString,
|
||||||
|
ValidateNested
|
||||||
} from 'class-validator';
|
} from 'class-validator';
|
||||||
import { EUser } from '../entities/user.entity';
|
import { EUser } from '../../entities/user.entity';
|
||||||
import { Permissions, PermissionsList } from './permissions';
|
import { Permissions, PermissionsList } from '../permissions';
|
||||||
|
|
||||||
// Api
|
// Api
|
||||||
|
|
||||||
|
@ -63,20 +66,3 @@ export class AuthMeResponse {
|
||||||
@IsDefined()
|
@IsDefined()
|
||||||
newJwtToken: string;
|
newJwtToken: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extra
|
|
||||||
|
|
||||||
export class JwtDataDto {
|
|
||||||
@IsDefined()
|
|
||||||
@ValidateNested()
|
|
||||||
@Type(() => EUser)
|
|
||||||
user: EUser;
|
|
||||||
|
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
|
||||||
iat?: number;
|
|
||||||
|
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
|
||||||
exp?: number;
|
|
||||||
}
|
|
1
shared/src/dto/api/index.ts
Normal file
1
shared/src/dto/api/index.ts
Normal file
|
@ -0,0 +1 @@
|
||||||
|
export * from './api.dto';
|
9
shared/src/dto/api/info.dto.ts
Normal file
9
shared/src/dto/api/info.dto.ts
Normal 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
18
shared/src/dto/jwt.dto.ts
Normal 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;
|
||||||
|
}
|
Loading…
Reference in a new issue