hipsterjazzbo / LaraParse

LaraParse provides a nice integration for using Parse (parse.com) with Laravel 5+
MIT License
27 stars 19 forks source link

LaraParse Authentication not working #49

Open francescodoffizi opened 8 years ago

francescodoffizi commented 8 years ago

I set up LaraParse ("hipsterjazzbo/laraparse": "^0.1.6") in a jadjoubran/laravel5-angular-material-starter project but it seems not working as expected during Authentication.

  1. I added "LaraParse\ParseServiceProvider" to config/app.php
  2. I extended AuthController using LaraParse user model

But when I try login I get error 500 with:

"message": "Authentication user provider [parse] is not defined.",

As if provider is not loaded / defined.

francescodoffizi commented 8 years ago

Maybe it's cause authentication is wrapped by JWT...

This is the config file

`<?php

/*

return [

/*
|--------------------------------------------------------------------------
| JWT Authentication Secret
|--------------------------------------------------------------------------
|
| Don't forget to set this, as it will be used to sign your tokens.
| A helper command is provided for this: `php artisan jwt:generate`
|
*/

'secret' => env('JWT_SECRET', '5wbVOVtKDZ2mNPaiEgvqCByKeu3xIEPf'),

/*
|--------------------------------------------------------------------------
| JWT time to live
|--------------------------------------------------------------------------
|
| Specify the length of time (in minutes) that the token will be valid for.
| Defaults to 1 hour
|
*/

'ttl' => 60,

/*
|--------------------------------------------------------------------------
| Refresh time to live
|--------------------------------------------------------------------------
|
| Specify the length of time (in minutes) that the token can be refreshed
| within. I.E. The user can refresh their token within a 2 week window of
| the original token being created until they must re-authenticate.
| Defaults to 2 weeks
|
*/

'refresh_ttl' => 20160,

/*
|--------------------------------------------------------------------------
| JWT hashing algorithm
|--------------------------------------------------------------------------
|
| Specify the hashing algorithm that will be used to sign the token.
|
| See here: https://github.com/namshi/jose/tree/2.2.0/src/Namshi/JOSE/Signer
| for possible values
|
*/

'algo' => 'HS256',

/*
|--------------------------------------------------------------------------
| User Model namespace
|--------------------------------------------------------------------------
|
| Specify the full namespace to your User model.
| e.g. 'Acme\Entities\User'
|
*/

'user' => 'App\User',

/*
|--------------------------------------------------------------------------
| User identifier
|--------------------------------------------------------------------------
|
| Specify a unique property of the user that will be added as the 'sub'
| claim of the token payload.
|
*/

'identifier' => 'id',

/*
|--------------------------------------------------------------------------
| Required Claims
|--------------------------------------------------------------------------
|
| Specify the required claims that must exist in any token.
| A TokenInvalidException will be thrown if any of these claims are not
| present in the payload.
|
*/

'required_claims' => ['iss', 'iat', 'exp', 'nbf', 'sub', 'jti'],

/*
|--------------------------------------------------------------------------
| Blacklist Enabled
|--------------------------------------------------------------------------
|
| In order to invalidate tokens, you must have the the blacklist enabled.
| If you do not want or need this functionality, then set this to false.
|
*/

'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true),

/*
|--------------------------------------------------------------------------
| Providers
|--------------------------------------------------------------------------
|
| Specify the various providers used throughout the package.
|
*/

'providers' => [

    /*
    |--------------------------------------------------------------------------
    | User Provider
    |--------------------------------------------------------------------------
    |
    | Specify the provider that is used to find the user based
    | on the subject claim
    |
    */

    'user' => 'Tymon\JWTAuth\Providers\User\EloquentUserAdapter',

    /*
    |--------------------------------------------------------------------------
    | JWT Provider
    |--------------------------------------------------------------------------
    |
    | Specify the provider that is used to create and decode the tokens.
    |
    */

    'jwt' => 'Tymon\JWTAuth\Providers\JWT\NamshiAdapter',

    /*
    |--------------------------------------------------------------------------
    | Authentication Provider
    |--------------------------------------------------------------------------
    |
    | Specify the provider that is used to authenticate users.
    |
    */

    'auth' => 'Tymon\JWTAuth\Providers\Auth\IlluminateAuthAdapter',

    /*
    |--------------------------------------------------------------------------
    | Storage Provider
    |--------------------------------------------------------------------------
    |
    | Specify the provider that is used to store tokens in the blacklist
    |
    */

    'storage' => 'Tymon\JWTAuth\Providers\Storage\IlluminateCacheAdapter',

],

]; `

ghost commented 8 years ago

did you set the auth driver to parse?

jeremyvilleneuve commented 8 years ago

I ran into the same error by installing this adapter on top of a fresh Laravel 5.2.39 project. I created a new Laravel 5.1.40 project and used this adapter (after following the Authentication Quickstart guide from the Laravel docs https://laravel.com/docs/5.1/authentication#authentication-quickstart to build some basic auth views) and it worked great! It appears the auth.php format has changed between Laravel 5.1 and 5.2. Perhaps the install docs just need to be updated for Laravel 5.2, or I'm not sure if other coding changes are needed?

See the install docs on this other auth project to see the config/auth.php differences between 5.1 and 5.2: https://github.com/Adldap2/Adldap2-Laravel#auth-driver

Big thanks to the maintainers, this is a great plugin!

AlexCatch commented 8 years ago

The way you register a new authentication provider has changed, I'll make a pull request when I've got the chance.

nicklee1990 commented 8 years ago

I've merged that pull request however I've realised now that it may break backwards compatibility @AlexCatch? therefore I think a major release is required to drop support for old Laravel versions? Or a new branch could be created I suppose?