GithubHelp home page GithubHelp logo

Comments (11)

jmcdo29 avatar jmcdo29 commented on April 28, 2024 2

You can specify a custom env file path. Just keep in mind that nest build does not move the .env files by default.

I figured you knew how to make a repo, but honestly, a repo is usually the quickest and easiest way to share a reproduction as it also means immediate access to modify and tinker with as necessary in a familiar environment. Otherwise, Stackblitz and codesandbox do both work.

from nest.

micalevisk avatar micalevisk commented on April 28, 2024 1

@thedarkknight197 you can use https://codesandbox.io or any other tool. Just share some full code ;)

from nest.

jmcdo29 avatar jmcdo29 commented on April 28, 2024 1
nest new jwt-reproduction
cd jwt-reproduction
# make code changes
git add .
git commit -m "feat: changes necessary for reproduction"
# make GitHub/GitLab repo
git remote add origin <origin>
git push

from nest.

jmcdo29 avatar jmcdo29 commented on April 28, 2024 1

@thedarkknight197 we have documentation on this

from nest.

thedarkknight197 avatar thedarkknight197 commented on April 28, 2024

Any help here?

from nest.

micalevisk avatar micalevisk commented on April 28, 2024

Please provide a minimum reproduction repository. You can start one by running npm init nest in your terminal

why reproductions are required

from nest.

thedarkknight197 avatar thedarkknight197 commented on April 28, 2024

Please provide a minimum reproduction repository. You can start one by running npm init nest in your terminal

why reproductions are required

it's dine, but how can i do? Any online tools to build nestjs application and share here?

from nest.

thedarkknight197 avatar thedarkknight197 commented on April 28, 2024

I know how create a repo @jmcdo29 my question was about online tools, i have created a new repo for it! :D

@micalevisk, @jmcdo29 i finded the problem: .env file is not readed by config module when use multi app structure if is placed inside apps/name-app/src folder.

How is possible configure it?

You can see the repo here: https://github.com/DigitalNextBusiness/working-jwt/tree/multi-app

from nest.

thedarkknight197 avatar thedarkknight197 commented on April 28, 2024

Thank you for your support @jmcdo29 and your helpfullexplaination very apreciated!

from nest.

thedarkknight197 avatar thedarkknight197 commented on April 28, 2024

@jmcdo29 Is possible use a Passport Strategy with Scoped Request?

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {
  constructor(
    private usersService: UsersService, // "Error: Unknown authentication strategy "jwt" if i remove this line error gone
    private readonly configService: ConfigService,
  ) {
    super({
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      secretOrKey: configService.get<string>('ACCESS_TOKEN_SECRET'),
    });
  }

  async validate(payload: { sub: number }) {
    const user = await this.usersService.findOne(payload.sub);

    if (!user) {
      throw new UnauthorizedException();
    }

    return user;
  }
}

My backend is a multitenancy prisma connection with db.

this is my user service code:

@Injectable({ scope: Scope.REQUEST })
export class UsersService {
  @Inject(PrismaService) private readonly service: PrismaService;

  async create(createUserDto: CreateUserDto) {
    const hashedPassword = await bcrypt.hash(
      createUserDto.password,
      roundsOfHashing,
    );

    createUserDto.password = hashedPassword;

    return this.service.user.create({
      data: createUserDto,
    });
  }
}

Same request here: #1870

from nest.

thedarkknight197 avatar thedarkknight197 commented on April 28, 2024

@jmcdo29 i have updated the code in this way as menthioned in the doc you posted, could you control it?
It's working now:

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {
  constructor(
    private moduleRef: ModuleRef,
    private readonly configService: ConfigService,
  ) {
    super({
      passReqToCallback: true,
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      secretOrKey: configService.get<string>('ACCESS_TOKEN_SECRET'),
    });
  }

  async validate(request: Request, payload: { sub: number }) {
    const contextId = ContextIdFactory.getByRequest(request);
    // "UsersService" is a request-scoped provider
    const usersService = await this.moduleRef.resolve(UsersService, contextId);
    const user = await usersService.findOne(payload.sub);

    if (!user) {
      throw new UnauthorizedException();
    }

    return user;
  }
}

from nest.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.