add user module and jwt
This commit is contained in:
parent
5c9ecec8fc
commit
d7d9777d1a
@ -13,7 +13,7 @@ import {
|
||||
} from 'typeorm';
|
||||
|
||||
import { PostEntity } from '@/modules/content/entities/post.entity';
|
||||
import { UserEntity } from '@/modules/user/entities/UserEntity';
|
||||
import { UserEntity } from '@/modules/user/entities/user.entity';
|
||||
|
||||
@Exclude()
|
||||
@Entity('content_comment')
|
||||
|
@ -18,7 +18,7 @@ import { PostBodyType } from '@/modules/content/constants';
|
||||
import { CategoryEntity } from '@/modules/content/entities/category.entity';
|
||||
import { CommentEntity } from '@/modules/content/entities/comment.entity';
|
||||
import { TagEntity } from '@/modules/content/entities/tag.entity';
|
||||
import { UserEntity } from '@/modules/user/entities/UserEntity';
|
||||
import { UserEntity } from '@/modules/user/entities/user.entity';
|
||||
|
||||
@Exclude()
|
||||
@Entity('content_posts')
|
||||
|
@ -18,7 +18,7 @@ import { Guest } from '../decorators/guest.decorator';
|
||||
import { RequestUser } from '../decorators/user.request.decorator';
|
||||
import { UpdateAccountDto, UpdatePasswordDto } from '../dtos/account.dto';
|
||||
import { CredentialDto, RegisterDto } from '../dtos/auth.dto';
|
||||
import { UserEntity } from '../entities/UserEntity';
|
||||
import { UserEntity } from '../entities/user.entity';
|
||||
import { LocalAuthGuard } from '../guards/local.auth.guard';
|
||||
import { AuthService } from '../services/auth.service';
|
||||
import { UserService } from '../services/user.service';
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
|
||||
|
||||
import { UserEntity } from '../entities/UserEntity';
|
||||
import { UserEntity } from '../entities/user.entity';
|
||||
|
||||
export const RequestUser = createParamDecorator(async (_data: unknown, ctx: ExecutionContext) => {
|
||||
const request = ctx.switchToHttp().getRequest();
|
||||
|
@ -6,7 +6,7 @@ import { IsPassword } from '@/modules/core/constraints/password.constraint';
|
||||
import { IsMatchPhone } from '@/modules/core/constraints/phone.number.constraint';
|
||||
import { IsUnique, IsUniqueExist } from '@/modules/database/constraints';
|
||||
import { UserValidateGroup } from '@/modules/user/constants';
|
||||
import { UserEntity } from '@/modules/user/entities/UserEntity';
|
||||
import { UserEntity } from '@/modules/user/entities/user.entity';
|
||||
|
||||
/**
|
||||
* 用户模块DTO的通用基础字段
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { Entity, ManyToOne, OneToOne, Relation } from 'typeorm';
|
||||
|
||||
import { UserEntity } from '@/modules/user/entities/UserEntity';
|
||||
import { BaseToken } from '@/modules/user/entities/base.token';
|
||||
import { RefreshTokenEntity } from '@/modules/user/entities/refresh.token.entity';
|
||||
import { UserEntity } from '@/modules/user/entities/user.entity';
|
||||
|
||||
/**
|
||||
* 用户认证token模型
|
||||
|
3
src/modules/user/entities/index.ts
Normal file
3
src/modules/user/entities/index.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export * from './user.entity';
|
||||
export * from './access.token.entity';
|
||||
export * from './refresh.token.entity';
|
2
src/modules/user/guards/index.ts
Normal file
2
src/modules/user/guards/index.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from './local.auth.guard';
|
||||
export * from './jwt.auth.guard';
|
1
src/modules/user/interceptors/index.ts
Normal file
1
src/modules/user/interceptors/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * from './userId.interceptor';
|
@ -1,8 +1,9 @@
|
||||
import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
|
||||
import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common';
|
||||
import { isNil } from 'lodash';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
export class UserInterceptor implements NestInterceptor {
|
||||
@Injectable()
|
||||
export class UserIdInterceptor implements NestInterceptor {
|
||||
intercept(context: ExecutionContext, next: CallHandler<any>): Observable<any> {
|
||||
const request: any = context.switchToHttp().getRequest();
|
||||
if (!isNil(request.user?.id)) {
|
1
src/modules/user/repositories/index.ts
Normal file
1
src/modules/user/repositories/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * from './user.repository';
|
@ -1,6 +1,6 @@
|
||||
import { BaseRepository } from '@/modules/database/base/repository';
|
||||
import { CustomRepository } from '@/modules/database/decorators/repository.decorator';
|
||||
import { UserEntity } from '@/modules/user/entities/UserEntity';
|
||||
import { UserEntity } from '@/modules/user/entities/user.entity';
|
||||
|
||||
@CustomRepository(UserEntity)
|
||||
export class UserRepository extends BaseRepository<UserEntity> {
|
@ -9,12 +9,12 @@ import { Configure } from '@/modules/config/configure';
|
||||
|
||||
import { getTime } from '@/modules/core/helpers/time';
|
||||
import { RegisterDto } from '@/modules/user/dtos/auth.dto';
|
||||
import { UserEntity } from '@/modules/user/entities/UserEntity';
|
||||
import { UserEntity } from '@/modules/user/entities/user.entity';
|
||||
import { UserRepository } from '@/modules/user/repositories';
|
||||
import { TokenService } from '@/modules/user/services/token.service';
|
||||
import { decrypt } from '@/modules/user/utils';
|
||||
|
||||
import { UpdatePasswordDto } from '../dtos/account.dto';
|
||||
import { UserRepository } from '../repositories/UserRepository';
|
||||
|
||||
import { UserService } from './user.service';
|
||||
|
||||
|
3
src/modules/user/services/index.ts
Normal file
3
src/modules/user/services/index.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export * from './user.service';
|
||||
export * from './token.service';
|
||||
export * from './auth.service';
|
@ -11,9 +11,9 @@ import { v4 as uuid } from 'uuid';
|
||||
import { Configure } from '@/modules/config/configure';
|
||||
import { getTime } from '@/modules/core/helpers/time';
|
||||
import { defaultUserConfig, getUserConfig } from '@/modules/user/config';
|
||||
import { UserEntity } from '@/modules/user/entities/UserEntity';
|
||||
import { AccessTokenEntity } from '@/modules/user/entities/access.token.entity';
|
||||
import { RefreshTokenEntity } from '@/modules/user/entities/refresh.token.entity';
|
||||
import { UserEntity } from '@/modules/user/entities/user.entity';
|
||||
import { JwtConfig, JwtPayload, UserConfig } from '@/modules/user/types';
|
||||
|
||||
import { TokenConst } from '../constants';
|
||||
|
@ -8,9 +8,10 @@ import { BaseService } from '@/modules/database/base/service';
|
||||
|
||||
import { QueryHook } from '@/modules/database/types';
|
||||
|
||||
import { UserRepository } from '@/modules/user/repositories';
|
||||
|
||||
import { CreateUserDto, QueryUserDto, UpdateUserDto } from '../dtos/user.dto';
|
||||
import { UserEntity } from '../entities/UserEntity';
|
||||
import { UserRepository } from '../repositories/UserRepository';
|
||||
import { UserEntity } from '../entities/user.entity';
|
||||
|
||||
@Injectable()
|
||||
export class UserService extends BaseService<UserEntity, UserRepository> {
|
||||
|
2
src/modules/user/strategies/index.ts
Normal file
2
src/modules/user/strategies/index.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from './jwt.strategy';
|
||||
export * from './local.strategy';
|
@ -1,3 +1,4 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { PassportStrategy } from '@nestjs/passport';
|
||||
|
||||
import { instanceToPlain } from 'class-transformer';
|
||||
@ -5,10 +6,12 @@ import { ExtractJwt, Strategy } from 'passport-jwt';
|
||||
|
||||
import { Configure } from '@/modules/config/configure';
|
||||
|
||||
import { UserRepository } from '@/modules/user/repositories';
|
||||
|
||||
import { TokenConst } from '../constants';
|
||||
import { UserRepository } from '../repositories/UserRepository';
|
||||
import { JwtPayload } from '../types';
|
||||
|
||||
@Injectable()
|
||||
export class JwtStrategy extends PassportStrategy(Strategy) {
|
||||
constructor(
|
||||
protected configure: Configure,
|
||||
|
@ -2,7 +2,7 @@ import { Injectable, UnauthorizedException } from '@nestjs/common';
|
||||
import { PassportStrategy } from '@nestjs/passport';
|
||||
import { Strategy } from 'passport-local';
|
||||
|
||||
import { AuthService } from '../services/auth.service';
|
||||
import { AuthService } from '@/modules/user/services';
|
||||
|
||||
/**
|
||||
* 用户认证本地策略
|
||||
|
1
src/modules/user/subscribers/index.ts
Normal file
1
src/modules/user/subscribers/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * from './UserSubscriber';
|
@ -3,7 +3,7 @@ import { randomBytes } from 'node:crypto';
|
||||
import { EventSubscriber, InsertEvent, UpdateEvent } from 'typeorm';
|
||||
|
||||
import { BaseSubscriber } from '@/modules/database/base/subscriber';
|
||||
import { UserEntity } from '@/modules/user/entities/UserEntity';
|
||||
import { UserEntity } from '@/modules/user/entities/user.entity';
|
||||
import { encrypt } from '@/modules/user/utils';
|
||||
|
||||
@EventSubscriber()
|
Loading…
Reference in New Issue
Block a user