Size: a a a

NestJS — русскоязычное сообщество

2020 April 03

7

7384114837 in NestJS — русскоязычное сообщество
Ребят, сталкивался кто с такой ошибкой при импорте сервиса, принадлежащему другому модулю?
источник

IK

ILshat Khamitov in NestJS — русскоязычное сообщество
да
источник

EL

Eldari L in NestJS — русскоязычное сообщество
Сервис injectable?
источник

AK

Alexander Kazantsev in NestJS — русскоязычное сообщество
Bugs Bunny
подскажите наиболее адекватный способ воткнуть seedы в typeorm
Я делаю отдельные миграции для этого
источник

IK

ILshat Khamitov in NestJS — русскоязычное сообщество
7384114837
Ребят, сталкивался кто с такой ошибкой при импорте сервиса, принадлежащему другому модулю?
вот так добрасываю не тока сервис и модули
источник

BB

Bugs Bunny in NestJS — русскоязычное сообщество
Alexander Kazantsev
Я делаю отдельные миграции для этого
да я тоже хотел, но потом подумал, что миграцию будет тяжело найти и она будет среди других миграций, которые типы данных меняют. пытаюсь настроить typeorm-seeding
источник

IK

ILshat Khamitov in NestJS — русскоязычное сообщество
Bugs Bunny
да я тоже хотел, но потом подумал, что миграцию будет тяжело найти и она будет среди других миграций, которые типы данных меняют. пытаюсь настроить typeorm-seeding
можешь папку для сеед миграций сделать, там же по всем папкам поиск идет в пути который указал
источник

IK

ILshat Khamitov in NestJS — русскоязычное сообщество
главно сиды сырым скл делай
источник

IK

ILshat Khamitov in NestJS — русскоязычное сообщество
sql
источник

AK

Alexander Kazantsev in NestJS — русскоязычное сообщество
Bugs Bunny
да я тоже хотел, но потом подумал, что миграцию будет тяжело найти и она будет среди других миграций, которые типы данных меняют. пытаюсь настроить typeorm-seeding
В отдельную папку
источник

7

7384114837 in NestJS — русскоязычное сообщество
ILshat Khamitov
вот так добрасываю не тока сервис и модули
спс
источник
2020 April 04

ВС

Валера Солдатов in NestJS — русскоязычное сообщество
Bugs Bunny
подскажите наиболее адекватный способ воткнуть seedы в typeorm
источник

ВС

Валера Солдатов in NestJS — русскоязычное сообщество
я делал таким способом
источник

BB

Bugs Bunny in NestJS — русскоязычное сообщество
я уже прихерачил typeorm-seeding и оно даже живое о_О
источник

ИР

Илья Романов in NestJS — русскоязычное сообщество
Подскажите пожалуйста, почему req.isAuthenticated() возвращает false

Реализую авторизацию через openid-client  с сессиями. Аутентификация проходит нормально, а с авторизацией проблемы. При аутентификации user добавляется в request, А при авторизации его нет и соответственно isAuthenticated возвращает false.

Все по идее есть:
main.ts
async function bootstrap() {
 const app = await NestFactory.create(AppModule);
 const MongoStore = connectMongo(session);

 app.use(helmet());
 app.enableCors();
 app.use(cookieParser('secret'));

 app.use(
   session({
     store: new MongoStore({
       url: 'mongodb://localhost:27017/test-mongo'
     }),
     secret: 'secret',
     resave: false,
     saveUninitialized: false,
     rolling: true,
     cookie: {
       maxAge: 30 * 60 * 1000, // 30 минуты
       httpOnly: true,
     },
   }),
 );

 app.use(passport.initialize());
 app.use(passport.session());


auth.module.ts
@Module({
 imports: [
   UserModule,
   TokenModule,
   HttpModule,
   PassportModule.register({ session: true }),
 ],
 providers: [OpenIdConnectStrategyFactory, SessionSerializer, AuthService],
 controllers: [AuthController],
 exports: [AuthService],
})
export class AuthModule {}


Стратегия
@Injectable()
export class OpenIdConnectStrategy extends PassportStrategy(Strategy, 'oidc') {
 client: Client;

 constructor(private readonly configService: ConfigService, client: Client) {
   super({
     client: client,
     params: {
       redirect_uri: configService.get<string>('KEYCLOAK_REDIRECT_URI'),
       scope: configService.get<string>('KEYCLOAK_SCOPE'),
     },
     passReqToCallback: false,
     usePKCE: false,
   });

   this.client = client;
 }

 async validate(tokenset: TokenSet): Promise<any> {
   const userinfo: UserinfoResponse = await this.client.userinfo(tokenset);

   try {
     const id_token = tokenset.id_token;
     const access_token = tokenset.access_token;
     const refresh_token = tokenset.refresh_token;
     const user = {
       id_token,
       access_token,
       refresh_token,
       userinfo,
     };
     return user;
   } catch (err) {
     throw new UnauthorizedException();
   }
 }
}


Гварда
@Injectable()
export class AuthenticatedGuard implements CanActivate {
 async canActivate(context: ExecutionContext) {
   const request = context.switchToHttp().getRequest();
   if (request.isAuthenticated()) {
     return true;
   }
   throw new UnauthorizedException();
 }
}


Фабрика
const buildOpenIdClient = async (configService: ConfigService) => {
 const TrustIssuer = await Issuer.discover(
   configService.get<string>('KEYCLOAK_ISSUER') +
     'auth/realms/' +
     configService.get<string>('KEYCLOAK_REALM') +
     '/.well-known/openid-configuration',
 );
 const client = new TrustIssuer.Client({
   client_id: configService.get<string>('KEYCLOAK_CLIENT_ID'),
   client_secret: configService.get<string>('KEYCLOAK_CLIENT_SECRET'),
 });
 return client;
};

export const OpenIdConnectStrategyFactory = {
 provide: 'OpenIdConnectStrategy',
 useFactory: async (configService: ConfigService) => {
   const client = await buildOpenIdClient(configService);
   return new OpenIdConnectStrategy(configService, client);
 },
 inject: [ConfigService],
};


Сори за лонгрид

Подробнее можно в репо посмотреть https://github.com/ieromanov/crm-back/tree/feature/auth
источник

IK

ILshat Khamitov in NestJS — русскоязычное сообщество
На гитхаб не вижу как ты решаешь гарды
источник

IK

ILshat Khamitov in NestJS — русскоязычное сообщество
Глобально
источник

ИР

Илья Романов in NestJS — русскоязычное сообщество
Я контроллер просто не коммитил нужный
источник

ИР

Илья Романов in NestJS — русскоязычное сообщество
Просто через @UseGuard(Authentication Guard)
источник

ИР

Илья Романов in NestJS — русскоязычное сообщество
Проблема в том, что инфа о юзере в реквесте не появляется
источник