master
expressgy 1 year ago
parent 14f5711e87
commit cc81b40b58
  1. 2
      config/development.ts
  2. 30
      src/Gdecorator/userinfoDecorator/userinfoDecorator.decorator.ts
  3. 32
      src/starlight/dto/position.dto.ts
  4. 29
      src/starlight/starlight.controller.ts
  5. 28
      src/starlight/starlight.service.ts
  6. 6
      src/starlight/verify.guard.ts

@ -20,7 +20,7 @@ export default {
host: 'localhost', host: 'localhost',
port: 3306, port: 3306,
username: 'root', username: 'root',
password: 'root', password: 'Hxl1314521',
database: 'Starlight', database: 'Starlight',
}, },
}, },

@ -0,0 +1,30 @@
import {
createParamDecorator,
ExecutionContext,
SetMetadata,
} from '@nestjs/common';
export const UserInfoDecorator = (...args: string[]) =>
SetMetadata('userinfoDecorator', args);
// nest g d [name]
// 自定义装饰器
// ? ?
// ? 函数名称: userinfoDto
// ? 函数描述: 限制userinfo数据格式
// ? ?
export class userinfoDto {
uuid: string;
}
// ? ?
// ? 函数名称: getUserinfo
// ? 函数描述: 获取token用户信息
// ? ?
export const getUserinfo = createParamDecorator(
(data: string, ctx: ExecutionContext) => {
const req = ctx.switchToHttp().getRequest();
return req.userinfo as userinfoDto;
},
);

@ -0,0 +1,32 @@
import { IsNumber, IsString, Length } from 'class-validator';
export class PositionCreateDTO {
// @ 父id
@IsNumber({}, { message: '父id必须为数字!' })
fatherid: number;
// @ 定位类型
@Length(1, 128, { message: '请将角色定位类型长度控制在8到128位之间!' })
@IsString({ message: '角色定位类型应为字符串格式!' })
type: string;
// @ 角色名称
@Length(1, 128, { message: '请将角色定位名称长度控制在8到128位之间!' })
@IsString({ message: '角色定位名称应为字符串格式!' })
name: string;
// @ 角色标识
@Length(1, 128, { message: '请将角色定位标识长度控制在8到128位之间!' })
@IsString({ message: '角色定位标识应为字符串格式!' })
index: string;
// @ 描述
@Length(1, 128, { message: '请将角色定位描述长度控制在8到128位之间!' })
@IsString({ message: '角色定位描述应为字符串格式!' })
describe: string;
// @ 图标
@Length(8, 255, { message: '请将角色定位图标地址长度控制在8到128位之间!' })
@IsString({ message: '角色定位图标地址应为字符串格式!' })
ico: string;
}

@ -34,18 +34,13 @@ import {
RegisterEmailCheckoutUsernameDto, RegisterEmailCheckoutUsernameDto,
RegisterEmailSignUpDto, RegisterEmailSignUpDto,
} from '@/starlight/dto/register.dto'; } from '@/starlight/dto/register.dto';
import { getUserinfo } from '@/Gdecorator/userinfoDecorator/userinfoDecorator.decorator';
import { import {
SignInEmailEntryDto, SignInEmailEntryDto,
SignInPasswdEntryDto, SignInPasswdEntryDto,
} from '@/starlight/dto/signIn.dto'; } from '@/starlight/dto/signIn.dto';
import { VerifyGuard } from '@/starlight/verify.guard'; import { VerifyGuard } from '@/starlight/verify.guard';
import { PositionCreateDTO } from '@/starlight/dto/position.dto';
// nest g d [name]
// 自定义装饰器
const getUser = createParamDecorator((data: string, ctx: ExecutionContext) => {
const req = ctx.switchToHttp().getRequest();
return req.user;
});
// C C // C C
// C 类名称: StarlightController // C 类名称: StarlightController
@ -148,12 +143,28 @@ export class StarlightController {
// ? ? // ? ?
@UseGuards(VerifyGuard) @UseGuards(VerifyGuard)
@Get('/signIn/testToken') @Get('/signIn/testToken')
testToken(@getUser() user) { testToken(@getUserinfo() user) {
this.logger.info(user); this.logger.info(user);
return {}; return {};
} }
//#endredion //#endregion
//#region
// ? ?
// ? 函数名称: positionCreate
// ? 函数描述: 创建角色
// ? ?
@UseGuards(VerifyGuard)
@Post('position/create')
positionCreate(
@Body() body: PositionCreateDTO,
@getUserinfo() userInfo,
): Promise<object> {
return this.starlightService.positionCreate(body, userInfo);
}
//#endregion
//#region 测试 //#region 测试
@Post() @Post()

@ -13,6 +13,7 @@ import {
RegisterEmailSignUpDto, RegisterEmailSignUpDto,
sex, sex,
} from './dto/register.dto'; } from './dto/register.dto';
import { PositionCreateDTO } from './dto/position.dto';
import { ConfigService } from '@nestjs/config'; import { ConfigService } from '@nestjs/config';
import { GloggerService } from '@/Gservice/GLOGGER/glogger.service'; import { GloggerService } from '@/Gservice/GLOGGER/glogger.service';
import { GdatabaseService } from '@/Gservice/GDATABASE/gdatabase.service'; import { GdatabaseService } from '@/Gservice/GDATABASE/gdatabase.service';
@ -23,6 +24,7 @@ import {
SignInEmailEntryDto, SignInEmailEntryDto,
SignInPasswdEntryDto, SignInPasswdEntryDto,
} from '@/starlight/dto/signIn.dto'; } from '@/starlight/dto/signIn.dto';
import { userinfoDto } from '@/Gdecorator/userinfoDecorator/userinfoDecorator.decorator';
// C C // C C
// C 类名称: StarlightService // C 类名称: StarlightService
@ -44,6 +46,7 @@ export class StarlightService {
// @ 工具服务 // @ 工具服务
private readonly tools: GtoolsService, private readonly tools: GtoolsService,
) {} ) {}
//#region 邮箱注册 //#region 邮箱注册
// ? ? // ? ?
// ? 函数名称: registerEmailCheckoutEmail // ? 函数名称: registerEmailCheckoutEmail
@ -592,6 +595,31 @@ export class StarlightService {
} }
//#endregion //#endregion
//#region 角色定位
// ? ?
// ? 函数名称: positionCreate
// ? 函数描述: 创建角色
// ? ?
public async positionCreate(
body: PositionCreateDTO,
userinfo: userinfoDto,
): Promise<object> {
// 去除空格,小写标识位
const fatherid = body.fatherid,
type = body.type.trim(),
name = body.name.trim(),
index = body.index.trim().toLowerCase(),
describe = body.describe.trim(),
ico = body.ico.trim();
this.logger.info(userinfo);
this.logger.info(fatherid, type, name, index, describe, ico);
// 查重标识位
// 写入标识位
return {};
}
//#endregion
//#region 测试啊 //#region 测试啊
create(createStarlightDto: CreateStarlightDto) { create(createStarlightDto: CreateStarlightDto) {

@ -7,6 +7,7 @@ import {
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { GloggerService } from '@/Gservice/GLOGGER/glogger.service'; import { GloggerService } from '@/Gservice/GLOGGER/glogger.service';
import { GtoolsService } from '@/Gservice/GTOOLS/gtools.service'; import { GtoolsService } from '@/Gservice/GTOOLS/gtools.service';
import { userinfoDto } from '@/Gdecorator/userinfoDecorator/userinfoDecorator.decorator';
// 此文件为守卫 // 此文件为守卫
@Injectable() @Injectable()
export class VerifyGuard implements CanActivate { export class VerifyGuard implements CanActivate {
@ -25,7 +26,10 @@ export class VerifyGuard implements CanActivate {
const data = this.tools.resolveToken(token); const data = this.tools.resolveToken(token);
// this.logger.info(data); // this.logger.info(data);
if (data.token) { if (data.token) {
context.switchToHttp().getRequest().user = '32'; const userinfo: userinfoDto = {
uuid: 'xx',
};
context.switchToHttp().getRequest().userinfo = userinfo;
// this.logger.info(request.user); // this.logger.info(request.user);
} }
// console.log(request); // console.log(request);

Loading…
Cancel
Save