<?php
namespace App\Controller;
use Alancting\Microsoft\JWT\AzureAd\AzureAdConfiguration;
use Alancting\Microsoft\JWT\AzureAd\AzureAdIdTokenJWT;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
use Google\Service\CloudIot\X509CertificateDetails;
use PhpOffice\PhpSpreadsheet\Reader\Xls\MD5;
use Pimcore\Controller\FrontendController;
use Pimcore\Db;
use Pimcore\Log\ApplicationLogger;
use Pimcore\Mail;
use Pimcore\Model\Asset;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\Account;
use Pimcore\Model\Document;
use Pimcore\Model\Document\Email;
use Pimcore\Model\Element\Tag;
use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\X509Factory;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpKernel\EventListener\ValidateRequestListener;
use Symfony\Component\Mime\Address;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authenticator\X509Authenticator;
class DefaultController extends FrontendController
{
/**
* @Template
* @param Request $request
* @return array
*/
public function defaultAction(Request $request)
{
/*
// 生成封面
$config = Asset\Video\Thumbnail\Config::getPreviewConfig();
$asset = Asset::getById(3);
$thumbnail = $asset->getThumbnail($config, ['mp4']);
*/
$template = $request->get('template');
if(empty($template)) $template = 'default/default.html.twig';
$path = $request->getPathInfo();
$dom = Document::getByPath($path);
$params['version'] = 2022021701;
if($dom) {
$params['cssfile'] = $dom->getProperty('cssfile');
$params['jsfile'] = $dom->getProperty('jsfile');
$params['title'] = $dom->getObjectVar('title');
$params['description'] = $dom->getObjectVar('description');
$params['metaData'] = $dom->getObjectVar('metaData');
}
return $this->render($template, $params);
}
/**
* @Route("/gctest")
* @return
*/
public function testAction() {
$email = 'joel.t.anderson@medtronic.com';
echo substr($email, 0, stripos($email, '@'));
return $this->json('');
$access_token = 'eyJ0eXAiOiJKV1QiLCJub25jZSI6ImJ5ZG81TmtXV3YxTzlKVXZiRGZyb056OW5ONGlqSVdTZ3FscENWXzJtQkUiLCJhbGciOiJSUzI1NiIsIng1dCI6ImpTMVhvMU9XRGpfNTJ2YndHTmd2UU8yVnpNYyIsImtpZCI6ImpTMVhvMU9XRGpfNTJ2YndHTmd2UU8yVnpNYyJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC8wYTI5ZDI3NC0xMzY3LTRhOGYtOTljNS05MGMzZGM3ZDQwNDMvIiwiaWF0IjoxNjUyNzcxODUzLCJuYmYiOjE2NTI3NzE4NTMsImV4cCI6MTY1Mjc3NzA2MCwiYWNjdCI6MCwiYWNyIjoiMSIsImFjcnMiOlsidXJuOnVzZXI6cmVnaXN0ZXJzZWN1cml0eWluZm8iXSwiYWlvIjoiQVZRQXEvOFRBQUFBOVh6cCtBY0hPdkpWajZtcDVEWkJhbGkya2ZjcVh5TEVoYjhTU211ZlJuMC9UM3VCRURPeTE4QmtoL0pveWcxOWxzdHZEcFUvVjZ4SGR0VWNoQTY1Ympjdm8rM0NlWlFWWmxTTDlnQ3VYQ1k9IiwiYW1yIjpbInB3ZCIsIm1mYSJdLCJhcHBfZGlzcGxheW5hbWUiOiJNRFRfIEdDQVJQbGF0Zm9ybVN0b3JhZ2VFbmhhbmNlbWVudCIsImFwcGlkIjoiNWZmOTUzY2EtM2U0ZC00MTkyLWFkMGYtMzY3NTVmMTY3YjBkIiwiYXBwaWRhY3IiOiIxIiwiZmFtaWx5X25hbWUiOiJMdSIsImdpdmVuX25hbWUiOiJZYWp1biIsImlkdHlwIjoidXNlciIsImlwYWRkciI6IjEwMS4yMjQuMTE2LjEzNSIsIm5hbWUiOiJMdSwgUGh5bG9ueSIsIm9pZCI6IjExYjA3NTkzLTBkM2QtNDBlNC1iODRmLTE1ZWRiZjFlZWFmOSIsIm9ucHJlbV9zaWQiOiJTLTEtNS0yMS0xMDg5NDkxOTM1LTEwMzU5MDUxMzEtMzQ2NDgxMjgzNC01MDA2MzgiLCJwbGF0ZiI6IjMiLCJwdWlkIjoiMTAwMzIwMDBCODc0RUM5RCIsInJoIjoiMC5BWFVBZE5JcENtY1RqMHFaeFpERDNIMUFRd01BQUFBQUFBQUF3QUFBQUFBQUFBQjFBQmMuIiwic2NwIjoiVXNlci5SZWFkLkFsbCBwcm9maWxlIG9wZW5pZCBlbWFpbCIsInN1YiI6ImpTWFd5ZnN6U2ZRcExoaG9PYS1Mc1c1YS1ORzZxdkJnTmd5Q2M5RkNQQmMiLCJ0ZW5hbnRfcmVnaW9uX3Njb3BlIjoiTkEiLCJ0aWQiOiIwYTI5ZDI3NC0xMzY3LTRhOGYtOTljNS05MGMzZGM3ZDQwNDMiLCJ1bmlxdWVfbmFtZSI6Imx1eTU2QHN0Z21lZHRyb25pYy5jb20iLCJ1cG4iOiJsdXk1NkBzdGdtZWR0cm9uaWMuY29tIiwidXRpIjoibE1qazVnOW54ay1JMFU4X0NxVWhBQSIsInZlciI6IjEuMCIsIndpZHMiOlsiYjc5ZmJmNGQtM2VmOS00Njg5LTgxNDMtNzZiMTk0ZTg1NTA5Il0sInhtc19zdCI6eyJzdWIiOiJPR0dURlZMYmp5eG5sRWktcDl5WkFPWnBKdzhKQV85RnNKTjRzVzF5eGk4In0sInhtc190Y2R0IjoxNDY3ODI1MjA4fQ.GXiYg4ZCxtcWl15SkmYqX0riag-cIcAFFTM03MSsAW0lMO2KHBW-omiK2UZLuhduPcoiZbIs4FVLb6kfQGVGVdno9NDfP_QP_UBaAj18NX3rKM9zxaNdShV6_dXgo0RiEcZUvYaf-NXUt0R_dUxHgmelqcaxT8T7xAcSmeZmpzvMoGZSGD23qmpLZ0KB9wpJkrTSN6iofkG5ZVXcd0vbbftpbNZCYA1QWJ-KhGwMvUqCPjqza6jM_7eKnVkpj6ll5yjeG3zkhFjETvwHbNNrcfDh9X6fpQGT-PAt5Wtw9bxVbxxSXlJWsJCwH-9FUhAGwbeMbX7S_IhpopuCaDNeyw';
//echo JWT::urlsafeB64Decode($str);
$arr = explode('.', $str);
$jsonKey = JWT::urlsafeB64Decode($arr[0]);
$jsonData = JWT::urlsafeB64Decode($arr[1]);
$userInfo = json_decode($jsonData, true);
//print_r($jsonKey);
//print_r($userInfo);
$config_options = [
'tenant' => '0a29d274-1367-4a8f-99c5-90c3dc7d4043',
'tenant_id' => '0a29d274-1367-4a8f-99c5-90c3dc7d4043', // 租户id
'client_id' => '5ff953ca-3e4d-4192-ad0f-36755f167b0d', // appid
'idTokenCheck' => true
];
$config = new AzureAdConfiguration($config_options);
$id_token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Inlscnl6YjJ1V3hoZ2NzcEJLSE1teTd6QS0wdyJ9.eyJhdWQiOiI1ZmY5NTNjYS0zZTRkLTQxOTItYWQwZi0zNjc1NWYxNjdiMGQiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vMGEyOWQyNzQtMTM2Ny00YThmLTk5YzUtOTBjM2RjN2Q0MDQzL3YyLjAiLCJpYXQiOjE2NTI4NzU1NjgsIm5iZiI6MTY1Mjg3NTU2OCwiZXhwIjoxNjUyODc5NDY4LCJhaW8iOiJBVlFBcS84VEFBQUFVcjRLTDRzTU5ycnBYbU5SOTBFLzhYd3FQbDBDT29CQ3NjbUtxdTVEb1RSREZ1M1JSbnVaVWFUYjVvSnZrVlRrWnhuUFBlSGRqKzFjZ1RNZzUvNnYyLzluYndIQnA3L2FrMXVjbmdIMzBLcz0iLCJlbWFpbCI6Imx1eTU2QHN0Z2V4Y25nLm1lZHRyb25pYy5jb20iLCJyaCI6IjAuQVhVQWROSXBDbWNUajBxWnhaREQzSDFBUThwVC1WOU5QcEpCclE4MmRWOFdldzExQUJjLiIsInN1YiI6Ik9HR1RGVkxianl4bmxFaS1wOXlaQU9acEp3OEpBXzlGc0pONHNXMXl4aTgiLCJ0aWQiOiIwYTI5ZDI3NC0xMzY3LTRhOGYtOTljNS05MGMzZGM3ZDQwNDMiLCJ1dGkiOiJNRmNIejhReGhFLWk4TV8zY0sxN0FBIiwidmVyIjoiMi4wIn0.Zq_KDnFg-hl6e_Zaews9SR8hSuyD40fX5jGKk47s74W8hp0m4W8YburOrkmb2Sajmc-lBGzEm3FAYjni8URWBcMX4geRi1k-N2W8_9OUgqmBTC1sqWJeQBfM-vfp6beUcd7pa23UN93xzLizWckILpqlEjC1TZoLaQe4MmbJLO32so_fqje9N-NfWQevXdRW2GOZKSgmEsvP4tC8JYWzjohNjaHEYSmWsZSQQAEkLwqgKRmb_2Ce7NMLMwgGUW7DxEOza3pBU7KDU8WfDsvzBQROtqdWBfh7lXqnrmDxLdAl8SI281l03PNRnGcXAuiIzsWgKl1kGRkHHlfgfx7gkw';
$access_token = 'eyJ0eXAiOiJKV1QiLCJub25jZSI6IjNRMUQ0cTU5NFRxSm5McWhqZHZ5SjJycUwyUWpZM2h0SWZMdXpKRDdTWUUiLCJhbGciOiJSUzI1NiIsIng1dCI6ImpTMVhvMU9XRGpfNTJ2YndHTmd2UU8yVnpNYyIsImtpZCI6ImpTMVhvMU9XRGpfNTJ2YndHTmd2UU8yVnpNYyJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC8wYTI5ZDI3NC0xMzY3LTRhOGYtOTljNS05MGMzZGM3ZDQwNDMvIiwiaWF0IjoxNjUyODc1Nzg1LCJuYmYiOjE2NTI4NzU3ODUsImV4cCI6MTY1Mjg4MDAzNywiYWNjdCI6MCwiYWNyIjoiMSIsImFjcnMiOlsidXJuOnVzZXI6cmVnaXN0ZXJzZWN1cml0eWluZm8iXSwiYWlvIjoiQVZRQXEvOFRBQUFBZlZLUDJPQk9YUVBZQkZiNWIvbnZiVzN3eUJoeW5GYjdwUldoNm0yRUFFdmV1MlMzVzFBQk5vbm9INGkwb2hnL25VRFp1Z25MT0lwNzhSWjI5SUtuZm9XQTJlTGJpckJtQjEwQkxucmt3cWc9IiwiYW1yIjpbInB3ZCIsIm1mYSJdLCJhcHBfZGlzcGxheW5hbWUiOiJNRFRfIEdDQVJQbGF0Zm9ybVN0b3JhZ2VFbmhhbmNlbWVudCIsImFwcGlkIjoiNWZmOTUzY2EtM2U0ZC00MTkyLWFkMGYtMzY3NTVmMTY3YjBkIiwiYXBwaWRhY3IiOiIxIiwiZmFtaWx5X25hbWUiOiJMdSIsImdpdmVuX25hbWUiOiJZYWp1biIsImlkdHlwIjoidXNlciIsImlwYWRkciI6IjExNi4yMzAuMTc4LjI1MCIsIm5hbWUiOiJMdSwgUGh5bG9ueSIsIm9pZCI6IjExYjA3NTkzLTBkM2QtNDBlNC1iODRmLTE1ZWRiZjFlZWFmOSIsIm9ucHJlbV9zaWQiOiJTLTEtNS0yMS0xMDg5NDkxOTM1LTEwMzU5MDUxMzEtMzQ2NDgxMjgzNC01MDA2MzgiLCJwbGF0ZiI6IjMiLCJwdWlkIjoiMTAwMzIwMDBCODc0RUM5RCIsInJoIjoiMC5BWFVBZE5JcENtY1RqMHFaeFpERDNIMUFRd01BQUFBQUFBQUF3QUFBQUFBQUFBQjFBQmMuIiwic2NwIjoiVXNlci5SZWFkLkFsbCBwcm9maWxlIG9wZW5pZCBlbWFpbCIsInN1YiI6ImpTWFd5ZnN6U2ZRcExoaG9PYS1Mc1c1YS1ORzZxdkJnTmd5Q2M5RkNQQmMiLCJ0ZW5hbnRfcmVnaW9uX3Njb3BlIjoiTkEiLCJ0aWQiOiIwYTI5ZDI3NC0xMzY3LTRhOGYtOTljNS05MGMzZGM3ZDQwNDMiLCJ1bmlxdWVfbmFtZSI6Imx1eTU2QHN0Z21lZHRyb25pYy5jb20iLCJ1cG4iOiJsdXk1NkBzdGdtZWR0cm9uaWMuY29tIiwidXRpIjoicXMwcTRvRWh1RWEwTHF4Y19CdDlBQSIsInZlciI6IjEuMCIsIndpZHMiOlsiYjc5ZmJmNGQtM2VmOS00Njg5LTgxNDMtNzZiMTk0ZTg1NTA5Il0sInhtc19zdCI6eyJzdWIiOiJPR0dURlZMYmp5eG5sRWktcDl5WkFPWnBKdzhKQV85RnNKTjRzVzF5eGk4In0sInhtc190Y2R0IjoxNDY3ODI1MjA4fQ.otVtV9wvgp03wEz0_tEtznbh29cGab2w-0x92CsgunLR1ZbYtSEqmZMxpL3rRncgwkc2OXMklbVpTw0LElK0CVyk8BojgmR0okzUZGF9x3453h-OfITy8kmK2lvkPawWz06b-rWuEyxrEd59R2rQovlNt14afmKhqkMySKl43kdRFmBLEzPFC7b0dMkB4F3DIvtDDqdtdki-AIEh43mmn5TRLVQDelfdbWRo4hRq9LdWNW0xGr9844Q0NM5YRtfZHRChDpBswobs64OZX10VibZckWcEw7iAn_571kANNnTLQmEvYQyFaDDNNJxPSlPSQbOn5XvVMSbXYXrk-aGxXA';
$id_token_jwt = new AzureAdIdTokenJWT($config, $id_token);
// Getting payload from id token
print_r($id_token_jwt->getPayload());
// echo "\n";
// Getting value from payload by attribute of id token
print_r($id_token_jwt->get('email'));
echo "\n";
echo ($id_token_jwt->isExpired()) ? 'Id token is expired' : 'Id token is valid';
echo ($id_token->isExpired()) ? 'Access token is expired' : 'Access token is valid';
return $this->json('');
}
}