Added authentication handler
|
@ -11,9 +11,9 @@
|
|||
"auto_detect_preference": true,
|
||||
"localizations": {}
|
||||
},
|
||||
"favicon": null,
|
||||
"favicon": "favicon/favicon.ico",
|
||||
"localization_enabled": true,
|
||||
"debugging_mode": false,
|
||||
"debugging_mode": true,
|
||||
"framework_signature": true,
|
||||
"application_signature": true,
|
||||
"security_headers": false,
|
||||
|
@ -21,11 +21,17 @@
|
|||
"firewall_deny": [],
|
||||
"headers": {}
|
||||
},
|
||||
"runtime_scripts": [],
|
||||
"runtime_scripts": [
|
||||
{"event": "pre_page_load", "script": "runtime_scripts/coa_sniffles.dyn"},
|
||||
{"event": "pre_page_load", "script": "runtime_scripts/check_auth.dyn"}
|
||||
],
|
||||
"web_assets": [
|
||||
{"type": "ppm", "name": "primary_assets", "source": "net.intellivoid.dore_template==latest", "path": "assets"}
|
||||
{"type": "ppm", "name": "primary_assets", "source": "net.intellivoid.dore_template==latest", "path": "assets"},
|
||||
{"type": "local", "name": "logos", "source": "logos", "path": "logos"}
|
||||
],
|
||||
"router": [
|
||||
{"method": ["GET"], "path": "", "page": "index", "params": []}
|
||||
{"method": ["GET"], "path": "", "page": "index", "params": []},
|
||||
{"method": ["GET"], "path": "logout", "page": "logout", "params": []},
|
||||
{"method": ["GET"], "path": "dashboard", "page": "dashboard", "params": []}
|
||||
]
|
||||
}
|
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 7.4 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 4.5 KiB |
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="/mstile-70x70.png?v=12j91ed2j91"/>
|
||||
<square150x150logo src="/mstile-150x150.png?v=12j91ed2j91"/>
|
||||
<square310x310logo src="/mstile-310x310.png?v=12j91ed2j91"/>
|
||||
<wide310x150logo src="/mstile-310x150.png?v=12j91ed2j91"/>
|
||||
<TileColor>#465a65</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
After Width: | Height: | Size: 793 B |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 1.6 KiB |
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="840.000000pt" height="840.000000pt" viewBox="0 0 840.000000 840.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.14, written by Peter Selinger 2001-2017
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,840.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M1469 7436 c-2 -2 -22 -6 -44 -9 -45 -6 -68 -14 -140 -48 -54 -25
|
||||
-52 -24 -109 -71 -112 -94 -174 -197 -204 -343 -8 -41 -9 -5513 0 -5550 12
|
||||
-54 41 -129 59 -157 11 -14 19 -29 19 -32 0 -10 34 -50 94 -109 83 -81 223
|
||||
-147 321 -149 6 0 18 -4 27 -9 10 -5 18 -6 18 -2 0 5 26 8 58 9 31 0 75 4 97
|
||||
8 48 9 190 75 225 105 65 55 2784 2759 2811 2796 23 32 66 126 80 175 42 155
|
||||
20 308 -63 448 -33 56 -264 289 -1581 1595 -282 279 -672 667 -867 861 -195
|
||||
194 -380 369 -411 390 -84 55 -185 87 -294 92 -50 2 -94 2 -96 0z"/>
|
||||
<path d="M4865 6693 c-114 -19 -195 -57 -269 -127 -31 -29 -56 -56 -56 -60 0
|
||||
-4 -9 -21 -21 -37 -11 -16 -17 -29 -13 -29 4 0 0 -8 -8 -17 -8 -10 -16 -25
|
||||
-16 -33 0 -8 -5 -31 -10 -52 -8 -30 -13 -111 -13 -208 0 -8 0 -114 0 -235 l1
|
||||
-220 44 -45 c24 -25 220 -218 436 -430 746 -733 750 -737 778 -799 39 -82 50
|
||||
-134 46 -214 -4 -88 -2 -80 -45 -189 -7 -16 -15 -28 -19 -28 -4 0 -11 -9 -16
|
||||
-20 -12 -25 -86 -100 -504 -510 -664 -653 -720 -709 -721 -733 -4 -154 0 -604
|
||||
6 -638 14 -80 86 -213 132 -242 6 -4 18 -13 25 -20 25 -25 106 -67 159 -84 53
|
||||
-16 197 -21 219 -8 6 3 23 9 37 11 40 7 122 54 167 94 21 19 147 142 280 273
|
||||
772 760 985 969 1239 1220 155 153 352 347 437 431 189 186 205 204 243 286
|
||||
27 58 30 75 31 160 0 112 -5 132 -46 214 -33 66 -17 50 -892 911 -235 231
|
||||
-550 541 -699 688 -150 147 -347 341 -438 431 -162 160 -212 201 -274 223 -16
|
||||
6 -39 14 -50 19 -38 14 -132 23 -170 17z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
"name": "Services",
|
||||
"short_name": "Services",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-36x36.png?v=12j91ed2j91",
|
||||
"sizes": "36x36",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-48x48.png?v=12j91ed2j91",
|
||||
"sizes": "48x48",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-72x72.png?v=12j91ed2j91",
|
||||
"sizes": "72x72",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-96x96.png?v=12j91ed2j91",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-144x144.png?v=12j91ed2j91",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-192x192.png?v=12j91ed2j91",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-256x256.png?v=12j91ed2j91",
|
||||
"sizes": "256x256",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-384x384.png?v=12j91ed2j91",
|
||||
"sizes": "384x384",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-512x512.png?v=12j91ed2j91",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone"
|
||||
}
|
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 8.5 KiB |
|
@ -0,0 +1,4 @@
|
|||
<svg width="81" height="105" viewBox="0 0 81 105" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M45.9179 47.4111C48.7322 50.2052 48.729 54.7385 45.9109 57.5364L12.3068 90.8995C10.243 92.9485 7.14064 93.5629 4.44704 92.4568C1.75301 91.3503 -0.00217449 88.7409 2.02191e-06 85.8453C0.00747763 75.1187 0.0173155 60.7958 0.026777 47.021L0.0459536 19.1646C0.0483879 16.2688 1.80676 13.6574 4.50228 12.5472C7.1978 11.437 10.2987 12.0475 12.36 14.094L45.9179 47.4111Z" fill="#465A65"/>
|
||||
<path d="M79.358 56.3776C81.5453 54.2234 81.5477 50.7333 79.3634 48.582L53.3186 22.9308C51.7188 21.3551 49.3121 20.8851 47.22 21.7399C45.128 22.5947 43.7633 24.6052 43.7614 26.8347L43.7563 34.0946L58.4661 48.582C60.6503 50.7333 60.6479 54.2234 58.4606 56.3776L43.7308 70.8849L43.7257 78.173C43.724 80.4023 45.0863 82.4113 47.1771 83.2632C49.2677 84.1148 51.6755 83.6417 53.2772 82.0642L79.358 56.3776Z" fill="#607D8B"/>
|
||||
</svg>
|
After Width: | Height: | Size: 916 B |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 8.5 KiB |
|
@ -19,6 +19,12 @@
|
|||
"version": "latest",
|
||||
"source": "default@github/intellivoid/Dore-Template",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"package": "net.intellivoid.coa_sniffle",
|
||||
"version": "latest",
|
||||
"source": "default@github/intellivoid/COASniffle",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"configuration": {
|
||||
|
@ -30,6 +36,28 @@
|
|||
},
|
||||
"components": [],
|
||||
"files": [
|
||||
"favicon/favicon-16x16.png",
|
||||
"favicon/apple-touch-icon.png",
|
||||
"favicon/android-chrome-192x192.png",
|
||||
"favicon/mstile-310x310.png",
|
||||
"favicon/favicon-194x194.png",
|
||||
"favicon/mstile-70x70.png",
|
||||
"favicon/android-chrome-96x96.png",
|
||||
"favicon/mstile-150x150.png",
|
||||
"favicon/mstile-144x144.png",
|
||||
"favicon/android-chrome-384x384.png",
|
||||
"favicon/android-chrome-48x48.png",
|
||||
"favicon/site.webmanifest",
|
||||
"favicon/safari-pinned-tab.svg",
|
||||
"favicon/android-chrome-36x36.png",
|
||||
"favicon/android-chrome-72x72.png",
|
||||
"favicon/browserconfig.xml",
|
||||
"favicon/android-chrome-512x512.png",
|
||||
"favicon/android-chrome-256x256.png",
|
||||
"favicon/favicon.ico",
|
||||
"favicon/android-chrome-144x144.png",
|
||||
"favicon/mstile-310x150.png",
|
||||
"favicon/favicon-32x32.png",
|
||||
"sections/menu.dyn",
|
||||
"sections/frontend_navbar.dyn",
|
||||
"sections/footer.dyn",
|
||||
|
@ -38,15 +66,30 @@
|
|||
"sections/header.dyn",
|
||||
"sections/frontend_header.dyn",
|
||||
"sections/javascript.dyn",
|
||||
"sections/favicon.dyn",
|
||||
"sections/navbar.dyn",
|
||||
"sections/frontend_footer.dyn",
|
||||
"sections/frontend_mobile_menu.dyn",
|
||||
"sections/frontend_javascript.dyn",
|
||||
"package.json",
|
||||
"languages/en.json",
|
||||
"pages/logout/contents.dyn",
|
||||
"pages/index/contents.dyn",
|
||||
"pages/index/scripts/callbacks.dyn",
|
||||
"pages/vcaptcha/main/contents.dyn",
|
||||
"pages/dashboard/contents.dyn",
|
||||
"logos/white-full.svg",
|
||||
"logos/black-full.svg",
|
||||
"logos/white.svg",
|
||||
"logos/black.svg",
|
||||
"logos/mobile.svg",
|
||||
"scripts/authenticate_coa.dyn",
|
||||
"scripts/require_auth.dyn",
|
||||
"scripts/alert.dyn",
|
||||
"runtime_scripts/coasniffle.json",
|
||||
"runtime_scripts/coa_sniffles.dyn",
|
||||
"runtime_scripts/template_settings.dyn",
|
||||
"runtime_scripts/check_auth.dyn",
|
||||
"configuration.json"
|
||||
]
|
||||
}
|
|
@ -1,8 +1,13 @@
|
|||
<?php
|
||||
\DynamicalWeb\Html::importScript('require_auth');
|
||||
|
||||
require_authentication('index');
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>Intellivoid Service Dashboard</title>
|
||||
<title>Intellivoid Services - Dashboard</title>
|
||||
<?PHP \DynamicalWeb\Html::importSection('header'); ?>
|
||||
</head>
|
||||
|
||||
|
@ -13,19 +18,8 @@
|
|||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h1>Blank Page</h1>
|
||||
<nav class="breadcrumb-container d-none d-sm-block d-lg-inline-block" aria-label="breadcrumb">
|
||||
<ol class="breadcrumb pt-0">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="#">Home</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="#">Library</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Data</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="separator mb-5"></div>
|
||||
<h1>Intellivoid Services</h1>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,3 +1,20 @@
|
|||
<?php
|
||||
|
||||
use DynamicalWeb\DynamicalWeb;
|
||||
use DynamicalWeb\Html;
|
||||
|
||||
if(WEB_ACCOUNT_AUTHENTICATED)
|
||||
{
|
||||
$RequestHandler = DynamicalWeb::activeRequestHandler();
|
||||
$RequestHandler->Redirect = true;
|
||||
$RequestHandler->RedirectLocation = DynamicalWeb::getRoute('dashboard');
|
||||
$RequestHandler->execute();
|
||||
}
|
||||
|
||||
Html::importScript('authenticate_coa');
|
||||
Html::importScript('alert');
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
|
@ -9,19 +26,30 @@
|
|||
<body class="show-spinner no-footer">
|
||||
<div class="landing-page">
|
||||
<?PHP \DynamicalWeb\Html::importSection('frontend_mobile_menu'); ?>
|
||||
|
||||
<div class="main-container">
|
||||
<?PHP \DynamicalWeb\Html::importSection('frontend_main_menu'); ?>
|
||||
|
||||
<div class="content-container" id="home">
|
||||
<div class="section home">
|
||||
<div class="container">
|
||||
<?PHP
|
||||
if(isset($_GET['callback']))
|
||||
{
|
||||
?>
|
||||
<div class="row home-row mb-0 d-block">
|
||||
<?PHP HTML::importScript('callbacks'); ?>
|
||||
</div>
|
||||
<?PHP
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="row home-row">
|
||||
<div class="col-12 d-block d-md-none">
|
||||
<a target="_blank" href="#">
|
||||
<img alt="mobile hero" class="mobile-hero" src="/assets/img/landing-page/home-hero-mobile.png" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-xl-4 col-lg-5 col-md-6">
|
||||
<div class="home-text">
|
||||
<div class="display-1">INTERNET OF THINGS</div>
|
||||
|
@ -33,7 +61,7 @@
|
|||
strive to provide fully functional services to help protect webmasters from
|
||||
bad actors and make the development progress a little easier.
|
||||
</p>
|
||||
<a class="btn btn-secondary btn-xl mr-2 mb-2" target="_blank" href="#">
|
||||
<a class="btn btn-secondary btn-xl mr-2 mb-2" target="_blank" href="<?PHP \DynamicalWeb\DynamicalWeb::printRoute('dashboard'); ?>">
|
||||
Dashboard
|
||||
<i class="simple-icon-arrow-right"></i>
|
||||
</a>
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
use COASniffle\Utilities\ErrorResolver;
|
||||
|
||||
if(isset($_GET['callback']))
|
||||
{
|
||||
switch((int)$_GET['callback'])
|
||||
{
|
||||
case 100:
|
||||
render_alert('There was an unexpected error while trying to process your request', 'danger', 'alert-circle');
|
||||
break;
|
||||
|
||||
case 101:
|
||||
render_alert('Intellivoid Accounts returned a response that was not understood by the server', 'warning', 'alert-circle');
|
||||
break;
|
||||
|
||||
case 102:
|
||||
$ErrorCode = 0;
|
||||
|
||||
if(isset($_GET['coa_error']))
|
||||
{
|
||||
$ErrorCode = (int)$_GET['coa_error'];
|
||||
}
|
||||
|
||||
$ErrorMessage = ErrorResolver::resolve_error_code($ErrorCode);
|
||||
|
||||
render_alert(str_ireplace('%s', $ErrorMessage, 'There was an error while trying to process your authentication: %s'), 'warning', 'alert-circle');
|
||||
break;
|
||||
|
||||
case 103:
|
||||
render_alert('Intellivoid Accounts cannot be reached at this time', 'warning', 'alert-circle');
|
||||
break;
|
||||
|
||||
case 104:
|
||||
render_alert('The authentication method that was used isn\'t supported by this server', 'danger', 'alert-circle');
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
use DynamicalWeb\Cookies;
|
||||
use DynamicalWeb\DynamicalWeb;
|
||||
|
||||
if(WEB_ACCOUNT_AUTHENTICATED == false)
|
||||
{
|
||||
$RequestHandler = DynamicalWeb::activeRequestHandler();
|
||||
$RequestHandler->Redirect = true;
|
||||
$RequestHandler->RedirectLocation = DynamicalWeb::getRoute('index');
|
||||
$RequestHandler->execute();
|
||||
}
|
||||
|
||||
$Cookie = Cookies::getCookieStorage('services_session');
|
||||
|
||||
$Cookie->Data['cache_refresh'] = 0;
|
||||
$Cookie->Data['authenticated'] = false;
|
||||
$Cookie->Data['account_pubid'] = null;
|
||||
$Cookie->Data['account_id'] = null;
|
||||
$Cookie->Data['account_email'] = null;
|
||||
$Cookie->Data['account_username'] = null;
|
||||
|
||||
Cookies::updateCookieStorage($Cookie);
|
||||
|
||||
$RequestHandler = DynamicalWeb::activeRequestHandler();
|
||||
$RequestHandler->Redirect = true;
|
||||
$RequestHandler->RedirectLocation = DynamicalWeb::getRoute('index');
|
||||
$RequestHandler->execute();
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>Intellivoid Services - vCaptcha</title>
|
||||
<?PHP \DynamicalWeb\Html::importSection('header'); ?>
|
||||
</head>
|
||||
|
||||
<body id="app-container" class="menu-default show-spinner">
|
||||
<?PHP \DynamicalWeb\Html::importSection('navbar'); ?>
|
||||
<?PHP \DynamicalWeb\Html::importSection('menu'); ?>
|
||||
<main>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h1>Intellivoid Services</h1>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?PHP \DynamicalWeb\Html::importSection('footer'); ?>
|
||||
<?PHP \DynamicalWeb\Html::importSection('javascript'); ?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
use DynamicalWeb\Cookies;
|
||||
use DynamicalWeb\Exceptions\CookieStorageNotFoundException;
|
||||
use DynamicalWeb\Objects\Cookie;
|
||||
|
||||
try
|
||||
{
|
||||
// Get the cookie storage
|
||||
$CookieStorage = Cookies::getCookieStorage('services_session');
|
||||
}
|
||||
catch(CookieStorageNotFoundException $e)
|
||||
{
|
||||
// If not found, create it.
|
||||
$Cookie = new Cookie('services_session');
|
||||
$Cookie->ExpiryTime = time() + 86400;
|
||||
$CookieStorage = Cookies::createCookieStorage($Cookie, false);
|
||||
$CookieStorage->Data = array(
|
||||
'authenticated' => false,
|
||||
'account_pubid' => null,
|
||||
'account_id' => null,
|
||||
'account_username' => null,
|
||||
'access_token' => null,
|
||||
'cache' => array(),
|
||||
'cache_refresh' => 0
|
||||
);
|
||||
Cookies::updateCookieStorage($CookieStorage);
|
||||
}
|
||||
|
||||
Cookies::updateCookieStorage($CookieStorage);
|
||||
|
||||
define('WEB_ACCOUNT_AUTHENTICATED', $CookieStorage->Data['authenticated']);
|
||||
define('WEB_ACCOUNT_PUBID', $CookieStorage->Data['account_pubid']);
|
||||
define('WEB_ACCOUNT_ID', $CookieStorage->Data['account_id']);
|
||||
define('WEB_ACCOUNT_USERNAME', $CookieStorage->Data['account_username']);
|
||||
define('WEB_ACCESS_TOKEN', $CookieStorage->Data['access_token']);
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
use COASniffle\Abstracts\ApplicationType;
|
||||
use COASniffle\COASniffle;
|
||||
use DynamicalWeb\DynamicalWeb;
|
||||
|
||||
/**
|
||||
* This script defines the COA Application and registers the constructed objects into
|
||||
* DynamicalWeb Memory Objects, this is a runtime script that is executed before anything
|
||||
*/
|
||||
$COASniffle = new COASniffle();
|
||||
$ApplicationConfiguration = json_decode(file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'coasniffle.json'), true);
|
||||
|
||||
$COASniffle->defineApplication(
|
||||
$ApplicationConfiguration['PUBLIC_APPLICATION_ID'],
|
||||
$ApplicationConfiguration['SECRET_KEY'],
|
||||
ApplicationType::Redirect
|
||||
);
|
||||
|
||||
DynamicalWeb::setMemoryObject('coasniffle', $COASniffle);
|
||||
DynamicalWeb::setMemoryObject('application_configuration', $ApplicationConfiguration);
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"PUBLIC_APPLICATION_ID": "APP7d8c9c0de83197d9a0be5026770f6dd6e585b78664f9d5d70e476b6fe41aeb8c19071ba3",
|
||||
"SECRET_KEY": "4f7ffe81537bf7877d586eb99887c3578ee87eebac6bd696b0b19b83b06fa44553f71de1",
|
||||
"APPLICATION_INTERNAL_ID": 892
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
if(function_exists('render_alert') == false)
|
||||
{
|
||||
/**
|
||||
* Renders an alert
|
||||
*
|
||||
* @param string $text
|
||||
* @param string $type
|
||||
* @return void
|
||||
*/
|
||||
function render_alert(string $text, string $type)
|
||||
{
|
||||
print("<div class=\"alert alert-$type\" role=\"alert\">");
|
||||
\DynamicalWeb\Html::print($text);
|
||||
print("</div>");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
<?php
|
||||
|
||||
use COASniffle\COASniffle;
|
||||
use COASniffle\Exceptions\BadResponseException;
|
||||
use COASniffle\Exceptions\CoaAuthenticationException;
|
||||
use COASniffle\Exceptions\RequestFailedException;
|
||||
use COASniffle\Exceptions\UnsupportedAuthMethodException;
|
||||
use DynamicalWeb\Cookies;
|
||||
use DynamicalWeb\DynamicalWeb;
|
||||
|
||||
if(WEB_ACCOUNT_AUTHENTICATED == false)
|
||||
{
|
||||
if(isset($_GET['access_token']))
|
||||
{
|
||||
process_coa_authentication();
|
||||
}
|
||||
}
|
||||
|
||||
function process_coa_authentication()
|
||||
{
|
||||
/** @var COASniffle $COASniffle */
|
||||
$COASniffle = DynamicalWeb::getMemoryObject('coasniffle');
|
||||
|
||||
try
|
||||
{
|
||||
$UserInformation = $COASniffle->getCOA()->getUser($_GET['access_token']);
|
||||
}
|
||||
catch (BadResponseException $e)
|
||||
{
|
||||
$RequestHandler = DynamicalWeb::activeRequestHandler();
|
||||
$RequestHandler->Redirect = true;
|
||||
$RequestHandler->RedirectLocation = DynamicalWeb::getRoute('index', ['callback' => '101']);
|
||||
$RequestHandler->execute();
|
||||
}
|
||||
catch (CoaAuthenticationException $e)
|
||||
{
|
||||
$RequestHandler = DynamicalWeb::activeRequestHandler();
|
||||
$RequestHandler->Redirect = true;
|
||||
$RequestHandler->RedirectLocation = DynamicalWeb::getRoute('index', ['callback' => '102', 'coa_error' => (string)$e->getCode()]);
|
||||
$RequestHandler->execute();
|
||||
}
|
||||
catch (RequestFailedException $e)
|
||||
{
|
||||
$RequestHandler = DynamicalWeb::activeRequestHandler();
|
||||
$RequestHandler->Redirect = true;
|
||||
$RequestHandler->RedirectLocation = DynamicalWeb::getRoute('index', ['callback' => '103']);
|
||||
$RequestHandler->execute();
|
||||
}
|
||||
catch (UnsupportedAuthMethodException $e)
|
||||
{
|
||||
$RequestHandler = DynamicalWeb::activeRequestHandler();
|
||||
$RequestHandler->Redirect = true;
|
||||
$RequestHandler->RedirectLocation = DynamicalWeb::getRoute('index', ['callback' => '104']);
|
||||
$RequestHandler->execute();
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
$RequestHandler = DynamicalWeb::activeRequestHandler();
|
||||
$RequestHandler->Redirect = true;
|
||||
$RequestHandler->RedirectLocation = DynamicalWeb::getRoute('index', ['callback' => '100']);
|
||||
$RequestHandler->execute();
|
||||
}
|
||||
|
||||
$Cookie = Cookies::getCookieStorage('services_session');
|
||||
$Cookie->Data['authenticated'] = true;
|
||||
$Cookie->Data['account_pubid'] = $UserInformation->PublicID;
|
||||
$Cookie->Data['account_id'] = $UserInformation->Tag;
|
||||
$Cookie->Data['account_username'] = $UserInformation->Username;
|
||||
$Cookie->Data['access_token'] = $_GET['access_token'];
|
||||
|
||||
// Force refresh cache
|
||||
if(isset($Cookie->Data['cache_refresh']) == true)
|
||||
{
|
||||
$Cookie->Data['cache_refresh'] = 0;
|
||||
}
|
||||
|
||||
Cookies::updateCookieStorage($Cookie);
|
||||
$Redirect = "None";
|
||||
|
||||
if(isset($_GET['redirect']))
|
||||
{
|
||||
$Redirect = $_GET['redirect'];
|
||||
}
|
||||
|
||||
switch($Redirect)
|
||||
{
|
||||
default:
|
||||
case 'dashboard':
|
||||
$RequestHandler = DynamicalWeb::activeRequestHandler();
|
||||
$RequestHandler->Redirect = true;
|
||||
$RequestHandler->RedirectLocation = DynamicalWeb::getRoute('dashboard');
|
||||
$RequestHandler->execute();
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
use COASniffle\COASniffle;
|
||||
use DynamicalWeb\DynamicalWeb;
|
||||
use DynamicalWeb\Html;
|
||||
|
||||
function require_authentication(string $redirect_to='index', array $params=array())
|
||||
{
|
||||
if(WEB_ACCOUNT_AUTHENTICATED == false)
|
||||
{
|
||||
Html::importScript('authenticate_coa');
|
||||
|
||||
$params['redirect'] = $redirect_to;
|
||||
|
||||
/** @var COASniffle $COASniffle */
|
||||
$COASniffle = DynamicalWeb::getMemoryObject('coasniffle');
|
||||
$Protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,strpos( $_SERVER["SERVER_PROTOCOL"],'/'))).'://';
|
||||
$RedirectURL = $Protocol . $_SERVER['HTTP_HOST'] . DynamicalWeb::getRoute('index', $params);
|
||||
$AuthenticationURL = $COASniffle->getCOA()->getAuthenticationURL($RedirectURL);
|
||||
|
||||
$RequestHandler = DynamicalWeb::activeRequestHandler();
|
||||
$RequestHandler->Redirect = true;
|
||||
$RequestHandler->RedirectLocation = $AuthenticationURL;
|
||||
$RequestHandler->execute();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
<link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png?v=12j91ed2j91">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png?v=12j91ed2j91">
|
||||
<link rel="icon" type="image/png" sizes="194x194" href="/favicon/favicon-194x194.png?v=12j91ed2j91">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/favicon/android-chrome-192x192.png?v=12j91ed2j91">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png?v=12j91ed2j91">
|
||||
<link rel="manifest" href="/favicon/site.webmanifest?v=12j91ed2j91">
|
||||
<link rel="mask-icon" href="/favicon/safari-pinned-tab.svg?v=12j91ed2j91" color="#465a65">
|
||||
<link rel="shortcut icon" href="/favicon/favicon.ico?v=12j91ed2j91">
|
||||
<meta name="apple-mobile-web-app-title" content="Services">
|
||||
<meta name="application-name" content="Services">
|
||||
<meta name="msapplication-TileColor" content="#465a65">
|
||||
<meta name="msapplication-TileImage" content="/favicon/mstile-144x144.png?v=12j91ed2j91">
|
||||
<meta name="msapplication-config" content="/favicon/browserconfig.xml?v=12j91ed2j91">
|
||||
<meta name="theme-color" content="#ffffff">
|
|
@ -6,7 +6,7 @@
|
|||
</div>
|
||||
<div class="col-12 text-center footer-content">
|
||||
<a href="#home" class="scrollTo">
|
||||
<img class="footer-logo" alt="footer logo" src="/assets/logos/white-full.svg" />
|
||||
<img class="footer-logo" alt="footer logo" src="/logos/white-full.svg" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -10,5 +10,5 @@
|
|||
<link rel="stylesheet" href="<?PHP DynamicalWeb::printAssetRoute('primary_assets', '/css/vendor/owl.carousel.min.css'); ?>"/>
|
||||
<link rel="stylesheet" href="<?PHP DynamicalWeb::printAssetRoute('primary_assets', '/css/vendor/bootstrap-stars.css'); ?>"/>
|
||||
<link rel="stylesheet" href="<?PHP DynamicalWeb::printAssetRoute('primary_assets', '/css/vendor/video-js.css'); ?>"/>
|
||||
<link rel="stylesheet" href="<?PHP DynamicalWeb::printAssetRoute('primary_assets', '/css/dore.light.bluenavy.min.css'); ?>"/>
|
||||
<link rel="stylesheet" href="<?PHP DynamicalWeb::printAssetRoute('primary_assets', '/css/main.css'); ?>"/>
|
||||
<link rel="stylesheet" href="<?PHP DynamicalWeb::printAssetRoute('primary_assets', '/css/dore.light.bluenavy.css'); ?>"/>
|
||||
<link rel="stylesheet" href="<?PHP DynamicalWeb::printAssetRoute('primary_assets', '/css/main.css'); ?>"/>
|
|
@ -1,8 +1,8 @@
|
|||
<li class="nav-item">
|
||||
<a href="#" class="scrollTo">Intellivoid</a>
|
||||
<a href="https://intellivoid.net/" class="scrollTo">Intellivoid</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="scrollTo">Documentation</a>
|
||||
<a href="https://docs.intellivoid.net/" class="scrollTo">Documentation</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="scrollTo">Terms</a>
|
||||
|
@ -11,6 +11,5 @@
|
|||
<a href="#" class="scrollTo">Privacy</a>
|
||||
</li>
|
||||
<li class="nav-item pl-4">
|
||||
<a class="btn btn-outline-semi-light btn-sm pr-4 pl-4" target="_top"
|
||||
href="https://1.envato.market/5kAb">Login/Register</a>
|
||||
<a class="btn btn-outline-semi-light btn-sm pr-4 pl-4" target="_top" href="<?PHP \DynamicalWeb\DynamicalWeb::printRoute('dashboard'); ?>">Login/Register</a>
|
||||
</li>
|
|
@ -9,483 +9,15 @@
|
|||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="iconsminds-pulse"></i> Secondary
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="sub-menu">
|
||||
<div class="scroll">
|
||||
<ul class="list-unstyled" data-link="dashboard">
|
||||
<li>
|
||||
<a href="Dashboard.Default.html">
|
||||
<i class="simple-icon-rocket"></i> <span class="d-inline-block">Default</span>
|
||||
<i class="iconsminds-security-check"></i> vCaptcha
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Dashboard.Analytics.html">
|
||||
<i class="simple-icon-pie-chart"></i> <span class="d-inline-block">Analytics</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Dashboard.Ecommerce.html">
|
||||
<i class="simple-icon-basket-loaded"></i> <span class="d-inline-block">Ecommerce</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Dashboard.Content.html">
|
||||
<i class="simple-icon-doc"></i> <span class="d-inline-block">Content</span>
|
||||
<a href="#">
|
||||
<i class="iconsminds-power-cable"></i> Webhook Proxy
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="list-unstyled" data-link="layouts" id="layouts">
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseAuthorization" aria-expanded="true"
|
||||
aria-controls="collapseAuthorization" class="rotate-arrow-icon opacity-50">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Authorization</span>
|
||||
</a>
|
||||
<div id="collapseAuthorization" class="collapse show">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="Pages.Auth.Login.html">
|
||||
<i class="simple-icon-user-following"></i> <span
|
||||
class="d-inline-block">Login</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Auth.Register.html">
|
||||
<i class="simple-icon-user-follow"></i> <span
|
||||
class="d-inline-block">Register</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Auth.ForgotPassword.html">
|
||||
<i class="simple-icon-user-unfollow"></i> <span class="d-inline-block">Forgot
|
||||
Password</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseProduct" aria-expanded="true"
|
||||
aria-controls="collapseProduct" class="rotate-arrow-icon opacity-50">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Product</span>
|
||||
</a>
|
||||
<div id="collapseProduct" class="collapse show">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="Pages.Product.List.html">
|
||||
<i class="simple-icon-credit-card"></i> <span class="d-inline-block">Data
|
||||
List</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Product.Thumbs.html">
|
||||
<i class="simple-icon-list"></i> <span class="d-inline-block">Thumb
|
||||
List</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Product.Images.html">
|
||||
<i class="simple-icon-grid"></i> <span class="d-inline-block">Image
|
||||
List</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Product.Detail.html">
|
||||
<i class="simple-icon-book-open"></i> <span class="d-inline-block">Detail</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseProfile" aria-expanded="true"
|
||||
aria-controls="collapseProfile" class="rotate-arrow-icon opacity-50">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Profile</span>
|
||||
</a>
|
||||
<div id="collapseProfile" class="collapse show">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="Pages.Profile.Social.html">
|
||||
<i class="simple-icon-share"></i> <span class="d-inline-block">Social</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Profile.Portfolio.html">
|
||||
<i class="simple-icon-link"></i> <span class="d-inline-block">Portfolio</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseBlog" aria-expanded="true"
|
||||
aria-controls="collapseBlog" class="rotate-arrow-icon opacity-50">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Blog</span>
|
||||
</a>
|
||||
<div id="collapseBlog" class="collapse show">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="Pages.Blog.html">
|
||||
<i class="simple-icon-list"></i> <span class="d-inline-block">List</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Blog.Detail.html">
|
||||
<i class="simple-icon-book-open"></i> <span class="d-inline-block">Detail</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Blog.Detail.Alt.html">
|
||||
<i class="simple-icon-picture"></i> <span class="d-inline-block">Detail
|
||||
Alt</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseMisc" aria-expanded="true"
|
||||
aria-controls="collapseMisc" class="rotate-arrow-icon opacity-50">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Miscellaneous</span>
|
||||
</a>
|
||||
<div id="collapseMisc" class="collapse show">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="Pages.Misc.Coming.Soon.html">
|
||||
<i class="simple-icon-hourglass"></i> <span class="d-inline-block">Coming
|
||||
Soon</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Misc.Error.html">
|
||||
<i class="simple-icon-exclamation"></i> <span
|
||||
class="d-inline-block">Error</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Misc.Faq.html">
|
||||
<i class="simple-icon-question"></i> <span class="d-inline-block">Faq</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Misc.Invoice.html">
|
||||
<i class="simple-icon-bag"></i> <span class="d-inline-block">Invoice</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Misc.Knowledge.Base.html">
|
||||
<i class="simple-icon-graduation"></i> <span class="d-inline-block">Knowledge
|
||||
Base</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Misc.Mailing.html">
|
||||
<i class="simple-icon-envelope-open"></i> <span
|
||||
class="d-inline-block">Mailing</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Misc.Pricing.html">
|
||||
<i class="simple-icon-diamond"></i> <span class="d-inline-block">Pricing</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Pages.Misc.Search.html">
|
||||
<i class="simple-icon-magnifier"></i> <span class="d-inline-block">Search</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="list-unstyled" data-link="applications">
|
||||
<li>
|
||||
<a href="Apps.MediaLibrary.html">
|
||||
<i class="simple-icon-picture"></i> <span class="d-inline-block">Library</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Apps.Todo.List.html">
|
||||
<i class="simple-icon-check"></i> <span class="d-inline-block">Todo</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Apps.Survey.List.html">
|
||||
<i class="simple-icon-calculator"></i> <span class="d-inline-block">Survey</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Apps.Chat.html">
|
||||
<i class="simple-icon-bubbles"></i> <span class="d-inline-block">Chat</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="list-unstyled" data-link="ui">
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseForms" aria-expanded="true"
|
||||
aria-controls="collapseForms" class="rotate-arrow-icon opacity-50">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Forms</span>
|
||||
</a>
|
||||
<div id="collapseForms" class="collapse show">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="Ui.Forms.Components.html">
|
||||
<i class="simple-icon-event"></i> <span class="d-inline-block">Components</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Forms.Layouts.html">
|
||||
<i class="simple-icon-doc"></i> <span class="d-inline-block">Layouts</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Forms.Validation.html">
|
||||
<i class="simple-icon-check"></i> <span class="d-inline-block">Validation</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Forms.Wizard.html">
|
||||
<i class="simple-icon-magic-wand"></i> <span
|
||||
class="d-inline-block">Wizard</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseDataTables" aria-expanded="true"
|
||||
aria-controls="collapseDataTables" class="rotate-arrow-icon opacity-50">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Datatables</span>
|
||||
</a>
|
||||
<div id="collapseDataTables" class="collapse show">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="Ui.Datatables.Rows.html">
|
||||
<i class="simple-icon-screen-desktop"></i> <span class="d-inline-block">Full
|
||||
Page UI</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Datatables.Scroll.html">
|
||||
<i class="simple-icon-mouse"></i> <span class="d-inline-block">Scrollable</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Datatables.Pagination.html">
|
||||
<i class="simple-icon-notebook"></i> <span
|
||||
class="d-inline-block">Pagination</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Datatables.Default.html">
|
||||
<i class="simple-icon-grid"></i> <span class="d-inline-block">Default</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseComponents" aria-expanded="true"
|
||||
aria-controls="collapseComponents" class="rotate-arrow-icon opacity-50">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Components</span>
|
||||
</a>
|
||||
<div id="collapseComponents" class="collapse show">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="Ui.Components.Alerts.html">
|
||||
<i class="simple-icon-bell"></i> <span class="d-inline-block">Alerts</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Badges.html">
|
||||
<i class="simple-icon-badge"></i> <span class="d-inline-block">Badges</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Buttons.html">
|
||||
<i class="simple-icon-control-play"></i> <span
|
||||
class="d-inline-block">Buttons</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Cards.html">
|
||||
<i class="simple-icon-layers"></i> <span class="d-inline-block">Cards</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Ui.Components.Carousel.html">
|
||||
<i class="simple-icon-picture"></i> <span class="d-inline-block">Carousel</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Charts.html">
|
||||
<i class="simple-icon-chart"></i> <span class="d-inline-block">Charts</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Collapse.html">
|
||||
<i class="simple-icon-arrow-up"></i> <span
|
||||
class="d-inline-block">Collapse</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Dropdowns.html">
|
||||
<i class="simple-icon-arrow-down"></i> <span
|
||||
class="d-inline-block">Dropdowns</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Editors.html">
|
||||
<i class="simple-icon-book-open"></i> <span
|
||||
class="d-inline-block">Editors</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Icons.html">
|
||||
<i class="simple-icon-star"></i> <span class="d-inline-block">Icons</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.InputGroups.html">
|
||||
<i class="simple-icon-note"></i> <span class="d-inline-block">Input
|
||||
Groups</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Jumbotron.html">
|
||||
<i class="simple-icon-screen-desktop"></i> <span
|
||||
class="d-inline-block">Jumbotron</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Modal.html">
|
||||
<i class="simple-icon-docs"></i> <span class="d-inline-block">Modal</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Navigation.html">
|
||||
<i class="simple-icon-cursor"></i> <span
|
||||
class="d-inline-block">Navigation</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Ui.Components.PopoverandTooltip.html">
|
||||
<i class="simple-icon-pin"></i> <span class="d-inline-block">Popover &
|
||||
Tooltip</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Sortable.html">
|
||||
<i class="simple-icon-shuffle"></i> <span class="d-inline-block">Sortable</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Ui.Components.Tables.html">
|
||||
<i class="simple-icon-grid"></i> <span class="d-inline-block">Tables</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="list-unstyled" data-link="menu" id="menuTypes">
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseMenuTypes" aria-expanded="true"
|
||||
aria-controls="collapseMenuTypes" class="rotate-arrow-icon">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Menu Types</span>
|
||||
</a>
|
||||
<div id="collapseMenuTypes" class="collapse show" data-parent="#menuTypes">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="Menu.Default.html">
|
||||
<i class="simple-icon-control-pause"></i> <span
|
||||
class="d-inline-block">Default</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Menu.Subhidden.html">
|
||||
<i class="simple-icon-arrow-left mi-subhidden"></i> <span
|
||||
class="d-inline-block">Subhidden</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Menu.Hidden.html">
|
||||
<i class="simple-icon-control-start mi-hidden"></i> <span
|
||||
class="d-inline-block">Hidden</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Menu.Mainhidden.html">
|
||||
<i class="simple-icon-control-rewind mi-hidden"></i> <span
|
||||
class="d-inline-block">Mainhidden</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseMenuLevel" aria-expanded="true"
|
||||
aria-controls="collapseMenuLevel" class="rotate-arrow-icon collapsed">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Menu Levels</span>
|
||||
</a>
|
||||
<div id="collapseMenuLevel" class="collapse" data-parent="#menuTypes">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="simple-icon-layers"></i> <span class="d-inline-block">Sub
|
||||
Level</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseMenuLevel2"
|
||||
aria-expanded="true" aria-controls="collapseMenuLevel2"
|
||||
class="rotate-arrow-icon collapsed">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Another
|
||||
Level</span>
|
||||
</a>
|
||||
<div id="collapseMenuLevel2" class="collapse">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="simple-icon-layers"></i> <span class="d-inline-block">Sub
|
||||
Level</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-toggle="collapse" data-target="#collapseMenuDetached" aria-expanded="true"
|
||||
aria-controls="collapseMenuDetached" class="rotate-arrow-icon collapsed">
|
||||
<i class="simple-icon-arrow-down"></i> <span class="d-inline-block">Detached</span>
|
||||
</a>
|
||||
<div id="collapseMenuDetached" class="collapse">
|
||||
<ul class="list-unstyled inner-level-menu">
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="simple-icon-layers"></i> <span class="d-inline-block">Sub
|
||||
Level</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,6 +1,10 @@
|
|||
<?php
|
||||
use COASniffle\Abstracts\AvatarResourceName;
|
||||
use COASniffle\Handlers\COA;
|
||||
use DynamicalWeb\Html;
|
||||
?>
|
||||
<nav class="navbar fixed-top">
|
||||
<div class="d-flex align-items-center navbar-left">
|
||||
|
||||
<a href="#" class="menu-button d-none d-md-block">
|
||||
<svg class="main" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 9 17">
|
||||
<rect x="0.48" y="0.5" width="7" height="1" />
|
||||
|
@ -13,7 +17,6 @@
|
|||
<rect x="1.56" y="15.5" width="16" height="1" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<a href="#" class="menu-button-mobile d-xs-block d-sm-block d-md-none">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 17">
|
||||
<rect x="0.5" y="0.5" width="25" height="1" />
|
||||
|
@ -21,17 +24,15 @@
|
|||
<rect x="0.5" y="15.5" width="25" height="1" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<a class="navbar-logo" href="#">
|
||||
|
||||
<span class="logo d-none d-xs-block"></span>
|
||||
<span class="logo-mobile d-block d-xs-none"></span>
|
||||
</a>
|
||||
|
||||
<div class="navbar-right">
|
||||
|
||||
<div class="header-icons d-inline-block align-middle">
|
||||
<div class="d-none d-md-inline-block align-text-bottom mr-3">
|
||||
<div class="custom-switch custom-switch-primary-inverse custom-switch-small pl-1"
|
||||
|
@ -45,8 +46,24 @@
|
|||
<i class="simple-icon-size-fullscreen"></i>
|
||||
<i class="simple-icon-size-actual"></i>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
<div class="user d-inline-block">
|
||||
<button class="btn btn-empty p-0" type="button" data-toggle="dropdown" aria-haspopup="true"
|
||||
aria-expanded="false">
|
||||
<span class="name"><?PHP \DynamicalWeb\Html::print(WEB_ACCOUNT_USERNAME) ?></span>
|
||||
<span>
|
||||
<img alt="Profile Picture" src="<?PHP HTML::print(COA::getAvatarUrl(AvatarResourceName::Normal, WEB_ACCOUNT_PUBID), false); ?>" />
|
||||
</span>
|
||||
</button>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-right mt-3">
|
||||
<a class="dropdown-item" href="https://accounts.intellivoid.net/">Account</a>
|
||||
<a class="dropdown-item" href="#">Features</a>
|
||||
<a class="dropdown-item" href="#">History</a>
|
||||
<a class="dropdown-item" href="#">Support</a>
|
||||
<a class="dropdown-item" href="<?PHP \DynamicalWeb\DynamicalWeb::printRoute('logout'); ?>">Sign out</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|