Tezos plugin for CakePHP
This plugin provides:
- Authenticator and Identifier for the Authentication plugin.
- Wallet connection via SIWT.
Install with :
composer require ziwot/cake-tezosLoad the plugin :
bin/cake plugin load CakeTezosLink assets :
cake plugin assets symlinkYou should also add it to your .gitignore :
# Plugins
/webroot/cake_tezos
Of course, when you deploy to prod, then, copy the assets :
cake plugin assets copyThe plugin is configurable via Configure::write('CakeTezos', [...]) in your app's config/app.php:
<?php
return [
// ...
'CakeTezos' => [
'defaultNetwork' => 'mainnet',
'networks' => [
'mainnet' => [
'rpcUrl' => 'https://rpc.tzbeta.net',
'tzktUrl' => 'https://api.tzkt.io',
'networkId' => 'NetXdQprcVkpaWU',
'label' => 'Mainnet',
],
'shadownet' => [
'rpcUrl' => 'https://rpc.shadownet.teztnets.com',
'tzktUrl' => 'https://api.shadownet.tzkt.io',
'networkId' => 'NetXsqzbfFenSTS',
'label' => 'Shadownet',
],
'local' => [
'rpcUrl' => 'http://localhost:8732',
'tzktUrl' => 'http://localhost:5000',
'networkId' => 'NetXtJqPyJGB6Pc',
'label' => 'Local',
],
],
'redirect' => [
'afterLogin' => '/',
'afterLogout' => ['_name' => 'homepage'],
],
'siwt' => [
'statement' => 'I accept the Terms of Service',
],
'cache' => [
'balance' => [
'enabled' => true,
'config' => 'default',
],
],
],
];You only need to specify the keys you want to override; the rest use the defaults above.
The connect element accepts statement and redirectUrl overrides:
<?= $this->element('CakeTezos.connect', [
'statement' => 'I accept the conditions',
'redirectUrl' => '/dashboard',
]) ?>Load Authenticator and Identifier :
// Load Authenticator & Identifier
$service->loadAuthenticator('CakeTezos.SignedMessage', [
'identifier' => 'CakeTezos.TezosBase',
]);Load Component in (src/Controller/AppController) :
$this->loadComponent('CakeTezos.Network', [
'network' => Network::Mainnet->value,
]);Load Helper in (src/View/AppView) :
$this->addHelper('CakeTezos.Tz');$this->append('script', $this->Html->importmap([
'CakeTezos' => '/cake_tezos/dist/cake-tezos.js'
]));In a view, load the element to allow connect :
<?= $this->element('CakeTezos.connect') ?>The statement is configurable :
<?= $this->element('CakeTezos.connect', ['statement' => 'I accept the conditions']) ?><?= $this->element('CakeTezos.get_metadata', [
'address' => $airdrop->address,
'callBackUrl' => $this->Url->build([
'_name' => 'admin:airdrops:edit',
$airdrop->id
]),
'csrfToken' => $this->request->getAttribute('csrfToken'),
// js functions for UI
'successHandler' => 'handleSuccess',
'errorHandler' => 'handleError',
]) ?>- Install dependencies :
composer install && npm install - Build assets :
npm run build