1.0.95 • Published 7 months ago

@magnetmlm/common-backend v1.0.95

Weekly downloads
-
License
ISC
Repository
-
Last release
7 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.66

1 year ago

1.0.69

1 year ago

1.0.68

1 year ago

1.0.67

1 year ago

1.0.73

1 year ago

1.0.72

1 year ago

1.0.71

1 year ago

1.0.70

1 year ago

1.0.77

1 year ago

1.0.76

1 year ago

1.0.75

1 year ago

1.0.74

1 year ago

1.0.79

1 year ago

1.0.78

1 year ago

1.0.80

1 year ago

1.0.84

12 months ago

1.0.83

12 months ago

1.0.82

1 year ago

1.0.81

1 year ago

1.0.88

12 months ago

1.0.87

12 months ago

1.0.86

12 months ago

1.0.85

12 months ago

1.0.89

11 months ago

1.0.91

8 months ago

1.0.90

10 months ago

1.0.95

7 months ago

1.0.94

7 months ago

1.0.93

7 months ago

1.0.92

8 months ago

1.0.65

1 year ago

1.0.64

1 year ago

1.0.63

1 year ago

1.0.62

1 year ago

1.0.61

1 year ago

1.0.60

1 year ago

1.0.51

2 years ago

1.0.55

2 years ago

1.0.54

2 years ago

1.0.53

2 years ago

1.0.52

2 years ago

1.0.59

1 year ago

1.0.58

1 year ago

1.0.57

2 years ago

1.0.56

2 years ago

1.0.50

2 years ago

1.0.49

2 years ago

1.0.48

2 years ago

1.0.47

2 years ago

1.0.46

2 years ago

1.0.45

2 years ago

1.0.44

2 years ago

1.0.43

2 years ago

1.0.42

2 years ago

1.0.41

2 years ago

1.0.40

2 years ago

1.0.39

2 years ago

1.0.38

2 years ago

1.0.37

2 years ago

1.0.36

2 years ago

1.0.35

2 years ago

1.0.34

2 years ago

1.0.33

2 years ago

1.0.32

2 years ago

1.0.31

2 years ago

1.0.30

2 years ago

1.0.26

2 years ago

1.0.25

2 years ago

1.0.24

2 years ago

1.0.29

2 years ago

1.0.28

2 years ago

1.0.27

2 years ago

1.0.23

2 years ago

1.0.22

2 years ago

1.0.21

2 years ago

1.0.20

2 years ago

1.0.19

2 years ago

1.0.18

2 years ago

1.0.17

2 years ago

1.0.16

2 years ago

1.0.15

2 years ago

1.0.14

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago