3.2.53 • Published 9 months ago

@magnetmlm/common v3.2.53

Weekly downloads
-
License
ISC
Repository
-
Last release
9 months ago

1. Подключение

Файл app.module.ts

import { AuthModule as MainAuthModule } from '@magnetmlm/common';

@Global()
@Module({
  imports: [
    CacheModule.register(),
    MainAuthModule,
    ...
    ],
  providers: [
    ...
    LoggerService,
    { useExisting: ConfigService, provide: 'ConfigService' },
  ],
  exports: [..., 'ConfigService', CacheModule],
})
export class AppModule {}

Только в основном проекте (указаны только нужные для этой библиотеки зависимости)

user.module.ts

import { UserService } from './user.service';
import { EndpointSigStrategy } from '@magnetmlm/common';

@Global()
@Module({
  providers: [
   ...
    { provide: 'UserService', useExisting: UserService },
    EndpointSigStrategy,
  ],
  exports: [..., 'UserService'],
})
export class UserModule {}

2. Роли

Наличие роли проверяется в RolesGuard из roles.guard.ts Чтобы в проекте использовать роли нужно повесить UseGuards декоратор на контроллер, только после этого в ендпоинтах можно будет проверять роль:

user.controller.ts

import {
  JwtAuthGuard, RolesGuard
} from '@magnetmlm/common';

@UseGuards(JwtAuthGuard, new RolesGuard(new Reflector()))
export class UserController {...}

Чтобы для определенного ендпоинта проверялась роль, надо на него повесить декоратор с нужной ролью:

import {
  SetRoles,
  UserRole,
} from '@magnetmlm/common';

  @Post('/grant-role')
  @SetRoles(UserRole.Admin)
  [...other decorators]
  async grantRoles(@Body() body: GrantRoleDto): Promise<void> {
    return this.userService.grantRoles(body);
  }

3. Обязательная подпись для любого ендпоинта

Чтобы повесить обязательную подпись на ендпоинт, нужно повесить на ендпоинт стратегию endpointSignature (чтобы можно было добавлять подпись в свагере - @ApiHeader({ name: 'signature' }))

import {
  CommonAuthStrategies,
} from '@magnetmlm/common';

@Controller('user')
@ApiTags('User')
@UseGuards(JwtAuthGuard, new RolesGuard(new Reflector()))
@ApiBearerAuth()
export class UserController {

  @Post('/grant-role')
  @UseGuards(AuthGuard(CommonAuthStrategies.endpointSignature))
  @ApiHeader({ name: 'signature' })
  async grantRoles(@Body() body: GrantRoleDto): Promise<void> {
    return this.userService.grantRoles(body);
  }
}

По дефолту при подключении библиотеки уже есть ендпоинт /sign/endpoint-message (реализация в auth.service.ts) который отправляет сообщение для подписи для конкретного ендпоинта. В данном случае передаваемые параметры будут такими: method: MethodType.POST path: 'user/grant-role' Сообщение нужно подписать через метамаск и результат передать в хедер signature

3.2.53

9 months ago

3.2.46

1 year ago

3.2.45

1 year ago

3.2.48

1 year ago

3.2.47

1 year ago

3.2.49

12 months ago

3.2.44

1 year ago

3.2.43

1 year ago

3.2.51

11 months ago

3.2.50

12 months ago

3.2.52

11 months ago

3.2.42

1 year ago

3.2.41

1 year ago

3.2.40

1 year ago

3.2.39

1 year ago

3.2.38

1 year ago

3.2.37

1 year ago

3.2.36

1 year ago

3.2.35

1 year ago

3.2.34

1 year ago

3.2.33

1 year ago

3.2.32

1 year ago

3.2.31

1 year ago

3.2.30

1 year ago

3.2.28

1 year ago

3.2.27

1 year ago

3.2.29

1 year ago

3.2.26

1 year ago

3.2.24

1 year ago

3.2.23

1 year ago

3.2.25

1 year ago

3.2.20

1 year ago

3.2.22

1 year ago

3.2.21

1 year ago

3.2.19

1 year ago

3.2.18

1 year ago

3.2.17

1 year ago

3.2.15

1 year ago

3.2.16

1 year ago

3.2.14

1 year ago

3.2.13

1 year ago

3.2.12

1 year ago

3.2.11

1 year ago

3.2.10

1 year ago

3.2.9

1 year ago

3.2.8

1 year ago

3.2.7

1 year ago

3.2.6

1 year ago

3.2.5

1 year ago

3.2.2

2 years ago

3.2.4

2 years ago

3.2.3

2 years ago

3.2.1

2 years ago

3.2.0

2 years ago

3.1.9

2 years ago

3.1.8

2 years ago

3.1.7

2 years ago

3.1.6

2 years ago

3.1.5

2 years ago

3.1.4

2 years ago

3.1.3

2 years ago

3.1.2

2 years ago

3.1.1

2 years ago

3.1.0

2 years ago

3.0.9

2 years ago

3.0.8

2 years ago

3.0.7

2 years ago

3.0.6

2 years ago

3.0.5

2 years ago

3.0.4

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

2.0.3

2 years ago

2.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.0

2 years ago