npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

passport-magalu

v0.1.2

Published

Magalu OAuth2 strategy for Passport.

Downloads

7

Readme

Passport-Magalu

Passport strategy for authenticating with magalu using the OAuth 2.0 API.

Learn more about magalu OAuth schema here.

Installation

$ npm install passport-magalu

Configuration

The Magalu authentication strategy authenticates users using a Magalu account and OAuth 2.0 tokens. The strategy requires a verify callback, which accepts these credentials and calls done providing a user, as well as options specifying a client ID, client secret, and callback URL.

You can obtain the client ID and secret by creating a magalu app here.

Note

This Strategy is already using the NEW API and this new API is still getting implemented Check here. The User endpoit wan't implemented yet by the Magalu developers. When done, I'll be updating this package to support it (or feel free to add a PR updating the file src/magalu.strategy.ts line 60+)

import { MagaluStrategy, type MagaluVerifyFunction } from 'passport-magalu'

passport.use(
  new magaluStrategy(
    {
      clientID: "YOUR_CLIENT_ID",
      clientSecret: "YOUR_CLIENT_SECRET",
      callbackURL: "http://www.example.com/auth/magalu/callback",
      scope: 'open:portfolio:read',
    },
    (accessToken, refreshToken, profile, done) => {
      // + store/retrieve user from database, together with access token and refresh token

      // the callback function (done) will inject the profile in req.user
      return done(null, profile)

      // TIP: If you need the accessToken, you can use like this:
      // return done(null, { profile, accessToken })
      // In this case, the accessToken will be in req.user.accessToken and the data in req.user.profile
    }
  )
)

// The value passed to `done` here is stored on the session.
// We save the full user object in the session.
passport.serializeUser((user, done) => {
  done(null, JSON.stringify(user))
})

// The value returned from `serializeUser` is passed in from the session here,
// to get the user. We save the full user object in the session.
passport.deserializeUser((user: string, done) => {
  done(null, JSON.parse(user))
})

Usage

Use passport.authorize(), specifying the 'magalu' strategy, to authenticate requests.

For example, as route middleware in an Express application:

// Use passport.authorize auth method
app.get("/auth/magalu", passport.authorize("magalu"))

// Use passport.authenticate on Callback
app.get(
  "/auth/magalu/callback",
  passport.authenticate('magalu', { session: true }),
  (req, res) => {
    // Successful authentication, redirect home or do what do you need
    res.redirect("/")
  }
)

// req.isAuthenticated() returns true if the request is authenticated
const ensureAuthenticated = (req, res, next) => {
  if (req.isAuthenticated()) {
    return next()
  }
  res.redirect("/auth/magalu")
}

// User data is available at req.user object
app.get("/", ensureAuthenticated, (req, res) => {
  res.send("Logged in user: " + req.user.nickname)
})

License

The MIT License