1.0.65 • Published 2 months ago

@magnetmlm/common-backend v1.0.65

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

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

Установить в основном проекте passport

Если сделать установку тут, то стратегии не будут видны в основном модуле

Файл app.module.ts

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

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

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

user.module.ts

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

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

2. Роли

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

user.controller.ts

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

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

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

import { SetRoles } from '@magnetmlm/common-backend';
import { 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-backend';

@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

4. Запрос с одного сервиса на другой

Для того чтобы можно было делать такие запросы необходимо чтобы в configService были такие переменные serviceId и jwtSercet

1.0.65

2 months ago

1.0.64

2 months ago

1.0.63

2 months ago

1.0.62

2 months ago

1.0.61

2 months ago

1.0.60

2 months ago

1.0.51

7 months ago

1.0.55

6 months ago

1.0.54

7 months ago

1.0.53

7 months ago

1.0.52

7 months ago

1.0.59

4 months ago

1.0.58

5 months ago

1.0.57

6 months ago

1.0.56

6 months ago

1.0.50

7 months ago

1.0.49

7 months ago

1.0.48

8 months ago

1.0.47

8 months ago

1.0.46

9 months ago

1.0.45

9 months ago

1.0.44

9 months ago

1.0.43

9 months ago

1.0.42

9 months ago

1.0.41

9 months ago

1.0.40

9 months ago

1.0.39

9 months ago

1.0.38

9 months ago

1.0.37

9 months ago

1.0.36

9 months ago

1.0.35

9 months ago

1.0.34

9 months ago

1.0.33

9 months ago

1.0.32

9 months ago

1.0.31

9 months ago

1.0.30

9 months ago

1.0.26

9 months ago

1.0.25

10 months ago

1.0.24

10 months ago

1.0.29

9 months ago

1.0.28

9 months ago

1.0.27

9 months ago

1.0.23

10 months ago

1.0.22

10 months ago

1.0.21

10 months ago

1.0.20

10 months ago

1.0.19

10 months ago

1.0.18

10 months ago

1.0.17

10 months ago

1.0.16

10 months ago

1.0.15

10 months ago

1.0.14

10 months ago

1.0.13

10 months ago

1.0.12

11 months ago

1.0.11

11 months ago

1.0.10

11 months ago

1.0.9

11 months ago

1.0.8

11 months ago

1.0.7

11 months ago

1.0.6

11 months ago

1.0.5

11 months ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago