adonis-ally-battlenet

    0.1.1 • Public • Published

    adonis-ally-battlenet

    Provides a Driver for Adonis Ally for supporting OAuth logins via Blizzard/Battle.net.

    Setup

    Installation

    npm install adonis-ally-battlenet
    

    Register Service Provider

    Add the adonis-ally-battlenet servicer provider to your providers array in start/app.js.

    const providers = [
      ...
      'adonis-ally-battlenet/ServiceProvider'
    ]
    

    Update configuration

    Update the services configuration file in config/services.js with a battlenet property.

    /*
    |--------------------------------------------------------------------------
    | Services Configuration
    |--------------------------------------------------------------------------
    |
    | This is general purpose file to define configuration for multiple services.
    | The below config is for the ally provider. Make sure to save it inside
    | config/services.js file.
    |
    | Happy Coding :)
    |
    */
    
    const Env = use('Env')
    
    module.exports = {
      ally: {
        /*
        |--------------------------------------------------------------------------
        | Battlenet Configuration
        |--------------------------------------------------------------------------
        |
        | You can access your application credentials from the Blizzard developers
        | portal. https://develop.battle.net/access/
        |
        */
        battlenet: {
          // client_id  obtained from https://develop.battle.net/access/
          clientId: Env.get('BATTLENET_CLIENT_ID'),
    
          // client_secret obtained from https://develop.battle.net/access/
          clientSecret: Env.get('BATTLENET_CLIENT_SECRET'),
    
          // app URL must be the same as configured on the developer portal
          redirectUri: `${Env.get('APP_URL')}/authenticated/battlenet`,
    
          // additional scopes you wish to always request on login
          scope: ['wow.profile']
        },
    
        ...
      }
    };
    

    Don't forget to add the BATTLENET_CLIENT_ID and BATTLENET_CLIENT_SECRET to your .env file.

    Usage

    start/routes.js

    const Route = use('Route')
    
    Route.get('login', 'LoginController.redirect');
    Route.get('authenticated/battlenet', 'LoginController.callback');
    

    app/Controllers/Http/LoginController.js

    class LoginController {
    
      async redirect({ ally }) {
        const driver = ally.driver('battlenet')
        await driver
          .scope(['sc2.profile']) // additionally request permission to access the users SC2 profile
          .redirect();
      }
    
      async callback({ ally, auth, response }) {
        const battlenerUser = await ally.driver('battlenet').getUser();
    
        // user details to be saved
        const userDetails = {
          id: battlenerUser.getId(),
          nickname: battlenerUser.getNickname(),
          token: battlenerUser.getAccessToken(),
          login_source: 'battlenet'
        };
    
        // Battle.net does not provide the email during OAuth login,
        // so you may need to add additional logic to ask the user for their
        // email or other information if you want to save that in your database as well.
    
        return response.json(userDetails);
      }
    }
    
    module.exports = LoginController;
    
    

    Install

    npm i adonis-ally-battlenet

    DownloadsWeekly Downloads

    2

    Version

    0.1.1

    License

    MIT

    Unpacked Size

    12.2 kB

    Total Files

    6

    Last publish

    Collaborators

    • viglucci