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
Pushing to dev/main triggers build-and-distribute, which compiles assets and
pushes them to the main branch. Releases are created from tags on that build
branch, so the released source always contains the compiled assets.
git checkout dev/main && git pull
git checkout main && git pull
git tag v0.0.11
git push origin v0.0.11The v* tag push triggers the Release workflow, which creates the GitHub
release with auto-generated notes.