feat: 添加鉴权相关功能。

This commit is contained in:
Ivan Li
2021-07-17 17:32:42 +08:00
parent 51d5ac6ee6
commit d0f6b8f9a6
6 changed files with 230 additions and 1 deletions

View File

@ -11,6 +11,8 @@ import { ParseBodyMiddleware } from './commons/middleware/parse-body.middleware'
import { BullModule } from '@nestjs/bull';
import { PubSubModule } from './commons/pub-sub/pub-sub.module';
import { ArticlesModule } from './articles/articles.module';
import { EtcdModule } from 'nestjs-etcd';
import { CommonsModule } from './commons/commons.module';
@Module({
imports: [
@ -73,6 +75,14 @@ import { ArticlesModule } from './articles/articles.module';
}),
inject: [ConfigService],
}),
EtcdModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
hosts: configService.get<string>('db.etcd.hosts', 'localhost:2379'),
}),
inject: [ConfigService],
}),
CommonsModule,
ArticlesModule,
],
controllers: [AppController],

View File

@ -13,11 +13,13 @@ import { CreateArticleInput } from './dto/create-article.input';
import { UpdateArticleInput } from './dto/update-article.input';
import * as marked from 'marked';
import { getLanguage, highlight } from 'highlight.js';
import { AccountRole, Roles } from '@nestjs-lib/auth';
@Resolver(() => Article)
export class ArticlesResolver {
constructor(private readonly articlesService: ArticlesService) {}
@Roles(AccountRole.admin, AccountRole.super)
@Mutation(() => Article)
createArticle(
@Args('createArticleInput') createArticleInput: CreateArticleInput,
@ -35,6 +37,7 @@ export class ArticlesResolver {
return this.articlesService.findOne(id);
}
@Roles(AccountRole.admin, AccountRole.super)
@Mutation(() => Article)
async updateArticle(
@Args('updateArticleInput') updateArticleInput: UpdateArticleInput,
@ -43,6 +46,7 @@ export class ArticlesResolver {
return this.articlesService.update(article, updateArticleInput);
}
@Roles(AccountRole.admin, AccountRole.super)
@Mutation(() => Int)
removeArticle(@Args('id', { type: () => String }) id: string) {
return this.articlesService.remove(id);

View File

@ -1,10 +1,11 @@
import { Module } from '@nestjs/common';
import { PasswordConverter } from './services/password-converter';
import { PubSubModule } from './pub-sub/pub-sub.module';
import { AuthModule } from '@nestjs-lib/auth';
@Module({
imports: [PubSubModule, AuthModule],
providers: [PasswordConverter],
exports: [PasswordConverter],
imports: [PubSubModule],
})
export class CommonsModule {}