Google login – po ověření se nic sestane

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
JanBE
Člen | 62
+
0
-

Ahoj,

řeším přihlašování přes google od Michala – https://github.com/…nette-opauth

zřejmě bude problém s routama, protože fake přihlášení funguje, a gooogle nechá vyplnit údaje, potvrdit soukromí ale pak mi to hodí zpátky na login page bez identity. Při tom v session údaje z gmailu jsou. Nastíním to tady všechno, aby to bylo když tak jasné i někomu později. Aplikaci potřebuji provozovat na doméně v podadresáři /www. Mám ji rozdělenou na front a admin. Bouhužel na hostingu nemůžu použít composer, takže tam mám routy ručněa tím pádem je nepotřebuji definovat v bootsrapu, jako je to u Michala.

config:

extensions:
	dibi: Dibi\Bridges\Nette\DibiExtension22
	opauth: NetteOpauth\DI\Extension

opauth:
	path: '/www/admin/auth/'
	debug: true
	callback_url: '{path}callback'
	security_salt: 'xxxxxxxxxxxxxxxxxxxxx'
	callback_transport: 'session'
	Strategy:
		Facebook:
			app_id: ''
			app_secret: ''
		Google:
			client_id: 'xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com'
			client_secret: 'xxxxxxxxxx'
		Twitter:
			key: ''
			secret: ''
		LinkedIn:
			api_key: ''
			secret_key: ''

session:
	expiration: 14 days
	autoStart: yes
	savePath: "%tempDir%/sessions"

...

bootstrap:

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Configurator;

$configurator->setDebugMode(true); // enable for your remote IP
$configurator->enableDebugger(__DIR__ . '/../log');

$configurator->setTempDirectory(__DIR__ . '/../temp');

$configurator->createRobotLoader()
	->addDirectory(__DIR__)
        ->addDirectory(__DIR__. '/../vendor/michalsvec')
        ->addDirectory(__DIR__. '/../vendor/opauth')
	->register();

$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');

$container = $configurator->createContainer();
class RouterFactory
{

	/**
	 * @return \Nette\Application\IRouter
	 */
	public static function createRouter()
	{
		$router = new RouteList();
		//$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

		$router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
                $router[] = new Route('admin/auth/logout', 'Admin:Auth:logout');
		$router[] = new Route('admin/auth/callback', 'Admin:Auth:callback');
		$router[] = new Route('admin/auth/<strategy>', 'Admin:Auth:auth');
		$router[] = new Route('admin/auth/<strategy>/oauth2callback', 'Admin:Auth:auth');
		$router[] = new Route('admin/auth/<strategy>/oauth_callback', 'Admin:Auth:auth');
		$router[] = new Route('admin/auth/<strategy>/int_callback', 'Admin:Auth:auth');
		$router[] = $adminRouter = new RouteList('Admin');
		$adminRouter[] = new Route('admin/<presenter>/<action>[/<id>]', 'Default:default');

		$router[] = $frontRouter = new RouteList('Front');

		$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Default:default');


		return $router;
	}

}

Sing:in template:

<a href="{plink Auth:google}">přes google</a>

AuthPresenter:

namespace App\AdminModule\Presenters;

use Nette,
  Nette\Application\UI\Form,
	App\Model, NetteOpauth ;


/**
 * Sign in/out presenters.
 */

class AuthPresenter extends \App\Presenters\BasePresenter
{
	/** @var NetteOpauth\NetteOpauth */
	protected $opauth;
	/**
	 * @param NetteOpauth\NetteOpauth
	 */
	public function injectOpauth(NetteOpauth\NetteOpauth $opauth)
	{
		$this->opauth = $opauth;
	}
	/**
	 * Redirection method to oauth provider
	 *
	 * @param string|NULL $strategy strategy used depends on selected provider - 'fake' for localhost testing
	 */
	public function actionAuth($strategy = NULL)
	{


		$this->opauth->auth($strategy);
	}
	/**
	 * @param string
	 */
	public function actionCallback($strategy)
	{
		if ($strategy === NULL) {
			$this->flashMessage("Authentication failed.", "danger");
			$this->redirect('Default:default');
		}
		$identity = $this->opauth->callback($strategy);
		// Here is a good place for transformation of 3rd part identities to your app identity.
		// Like pairing with your app accounts.
		$this->user->login($identity);
		$this->redirect("Default:default");
	}
	/**
	 * Basic logout action - feel free to use your own in different presenter
	 */
	public function actionLogout()
	{
		$this->getUser()->logout(TRUE);
		$this->redirect("Default:default");
	}
}

NetteOpauth.php: (celé převzato)

Opauth.php: (celé převzato)

Vídíte tam někdo něco špatně?

Google Authorized redirect URIs mám nastaveno na http://www.domena.cz/…uth2callback