Nestjs でNest-keycloak-connectを使用しており、いくつかのカスタム機能のために AuthGuard クラスから拡張された独自のクラスを作成したい
私は試してみましたが、うまくいきます
@Injectable()
export class KeycloakAuthGuard extends AuthGuard implements CanActivate {
canActivate(context: ExecutionContext) {
const value = super.canActivate(context);
const [request] = extractRequest(context);
console.log(' ++++++++++++++++++ ++++++++++++++ ', request.user); //getting user here
// Some Custom functionality here..... like call any external request
return value;
}
}
しかし、ここで HttpService のようないくつかのサービスを使用できるように、コンストラクターを追加する必要があります。
constructor(private http: HttpService) { super() //contructor requires 4 arguments }
コンストラクターに次のようなパラメーターを指定すると
constructor(
private http: HttpService,
@Inject(KEYCLOAK_INSTANCE)
private keycloak: any,
@Inject(KEYCLOAK_CONNECT_OPTIONS)
private keycloakOpts: any,
@Inject(KEYCLOAK_LOGGER)
private logger: Logger,
private readonly reflector: Reflector,
) {
super(
keycloak,
keycloakOpts,
logger,
reflector
);
}
このエラーが発生しました
クラス「KeycloakAuthGuard」は、基本クラス「AuthGuard」を誤って拡張します。型には、プライベート プロパティ「keycloak」の別個の宣言があります。
class AuthGaurdコードはこちらにあります: https://github.com/ferrerojosh/nest-keycloak-connect/blob/master/src/guards/auth.guard.ts
Nest-keycloak-connect パッケージ https://www.npmjs.com/package/nest-keycloak-connect