Merge branch 'main' into joeykimsey-com
This commit is contained in:
@ -41,7 +41,8 @@ use TheTempusProject\Models\Routes as RoutesModel;
|
||||
class TheTempusProject extends Bedrock {
|
||||
const MAIN_MENU_NAME = 'topNavLeft';
|
||||
const ADMIN_MENU_NAME = 'adminMenu';
|
||||
const FOOTER_MENU_NAME = 'footerMenu';
|
||||
const CONTACT_FOOTER_MENU_NAME = 'contactFooterMenu';
|
||||
const INFO_FOOTER_MENU_NAME = 'infoFooterMenu';
|
||||
public static $plugins = [];
|
||||
public static $activeGroup;
|
||||
public static $activePerms;
|
||||
@ -55,7 +56,20 @@ class TheTempusProject extends Bedrock {
|
||||
public static $isAdmin = false;
|
||||
public static $isMod = false;
|
||||
private $initialized = false;
|
||||
public $footer_links = [
|
||||
public $contact_footer_links = [];
|
||||
public $info_footer_links = [
|
||||
[
|
||||
'text' => 'FAQs',
|
||||
'url' => '{ROOT_URL}home/faq',
|
||||
],
|
||||
[
|
||||
'text' => 'About',
|
||||
'url' => '{ROOT_URL}home/about',
|
||||
],
|
||||
[
|
||||
'text' => 'Privacy Policy',
|
||||
'url' => '{ROOT_URL}home/privacy',
|
||||
],
|
||||
[
|
||||
'text' => 'Terms of Service',
|
||||
'url' => '{ROOT_URL}home/terms',
|
||||
@ -63,7 +77,7 @@ class TheTempusProject extends Bedrock {
|
||||
];
|
||||
public $admin_links = [
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-home"></i> Home',
|
||||
'text' => '<i class="fa fa-fw fa-home"></i> Dashboard',
|
||||
'url' => '{ROOT_URL}admin/index',
|
||||
],
|
||||
[
|
||||
@ -75,15 +89,19 @@ class TheTempusProject extends Bedrock {
|
||||
'url' => '{ROOT_URL}admin/users',
|
||||
],
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-group"></i> Groups',
|
||||
'text' => '<i class="fa fa-fw fa-user-group"></i> Groups',
|
||||
'url' => '{ROOT_URL}admin/groups',
|
||||
],
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-reply-all"></i> Contact',
|
||||
'url' => '{ROOT_URL}admin/contact',
|
||||
'text' => '<i class="fa fa-fw fa-phone"></i> Contact',
|
||||
'url' => '{ROOT_URL}admin/SendMail',
|
||||
],
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-arrows-v"></i> Modules',
|
||||
'text' => '<i class="fa fa-fw fa-shield-halved"></i> Tokens',
|
||||
'url' => '{ROOT_URL}admin/tokens',
|
||||
],
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-arrow-down"></i> Modules',
|
||||
'url' => [
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-database"></i> Plugins',
|
||||
@ -96,7 +114,7 @@ class TheTempusProject extends Bedrock {
|
||||
],
|
||||
],
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-arrows-v"></i> Logs',
|
||||
'text' => '<i class="fa fa-fw fa-arrow-down"></i> Logs',
|
||||
'url' => [
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-file"></i> Logs',
|
||||
@ -257,6 +275,11 @@ class TheTempusProject extends Bedrock {
|
||||
"pretty" => "Site Logo (Used mostly in emails)",
|
||||
"default" => "images/logo.png"
|
||||
],
|
||||
"logoLarge" => [
|
||||
"type" => "file",
|
||||
"pretty" => "Large Site Logo (Used mostly when sharing images on social media)",
|
||||
"default" => "images/logoLarge.jpg"
|
||||
],
|
||||
"name" => [
|
||||
"type" => "text",
|
||||
"pretty" => "Site Name",
|
||||
@ -276,6 +299,27 @@ class TheTempusProject extends Bedrock {
|
||||
"type" => "text",
|
||||
"pretty" => "Maximum Login Attempts per hour",
|
||||
"default" => 5
|
||||
],
|
||||
"loginTimer" => [
|
||||
"type" => "text",
|
||||
"pretty" => "Maximum Login session length. (in seconds)",
|
||||
"default" => 604800 // 60 * 60 * 24 * 7
|
||||
]
|
||||
],
|
||||
"uploads" => [
|
||||
"images" => [
|
||||
"type"=> "radio",
|
||||
"pretty"=> "Upload Images Enabled",
|
||||
"default"=> true,
|
||||
"protected"=> true,
|
||||
"value"=> true,
|
||||
],
|
||||
"maxImageSize"=> [
|
||||
"type" => "text",
|
||||
"pretty" => "Maximum size for image uploads",
|
||||
"default" => 500000,
|
||||
"protected" => true,
|
||||
"value" => 500000,
|
||||
]
|
||||
],
|
||||
"database" => [
|
||||
@ -324,6 +368,8 @@ class TheTempusProject extends Bedrock {
|
||||
]
|
||||
];
|
||||
|
||||
public static $userCPlinks = [];
|
||||
|
||||
/**
|
||||
* The constructor takes care of everything that we will need before
|
||||
* finally calling appload to instantiate the appropriate controller/method.
|
||||
@ -370,6 +416,25 @@ class TheTempusProject extends Bedrock {
|
||||
}
|
||||
}
|
||||
|
||||
// load the damn usercp menu n a retarded fashion
|
||||
self::$userCPlinks[] = (object) [
|
||||
"url" => "{ROOT_URL}usercp",
|
||||
"name" => "Profile"
|
||||
];
|
||||
self::$userCPlinks[] = (object) [
|
||||
"url" => "{ROOT_URL}usercp/settings",
|
||||
"name" => "Settings"
|
||||
];
|
||||
self::$userCPlinks[] = (object) [
|
||||
"url" => "{ROOT_URL}usercp/email",
|
||||
"name" => "Change Email"
|
||||
];
|
||||
self::$userCPlinks[] = (object) [
|
||||
"url" => "{ROOT_URL}usercp/password",
|
||||
"name" => "Change Password"
|
||||
];
|
||||
Components::set( 'SITE_URL', Routes::getAddress() );
|
||||
Components::set( 'DEBUG_EMAIL', DEBUG_EMAIL );
|
||||
Debug::gend();
|
||||
}
|
||||
|
||||
@ -387,8 +452,7 @@ class TheTempusProject extends Bedrock {
|
||||
self::$activePrefs = $user->getDefaultPreferences(); // PREFERENCES_JSON
|
||||
if (
|
||||
!$sessions->checkSession( Session::get( 'SessionID' ) ) &&
|
||||
!$sessions->checkCookie( Cookie::get( 'RememberToken' ), true ) &&
|
||||
!$sessions->checkToken( self::getBearerToken(), true )
|
||||
!$sessions->checkCookie( Cookie::get( 'RememberToken' ), true )
|
||||
) {
|
||||
Debug::info( 'Sessions->authenticate - Could not authenticate cookie or session' );
|
||||
return false;
|
||||
@ -444,6 +508,13 @@ class TheTempusProject extends Bedrock {
|
||||
'enabled' => true,
|
||||
'example' => '{LOGGEDIN}Only visible to users who are logged-in{LOGGEDIN}',
|
||||
];
|
||||
$this->filters[] = [
|
||||
'name' => 'notloggedin',
|
||||
'find' => '#{NOTLOGGEDIN}(.*?){/NOTLOGGEDIN}#is',
|
||||
'replace' => ( self::$isLoggedIn ? '' : '$1' ),
|
||||
'enabled' => true,
|
||||
'example' => '{NOTLOGGEDIN}Only visible to users who are logged-in{NOTLOGGEDIN}',
|
||||
];
|
||||
$this->filters[] = [
|
||||
'name' => 'dtc',
|
||||
'find' => '#{DTC(.*?)}(.*?){/DTC}#is',
|
||||
@ -460,8 +531,11 @@ class TheTempusProject extends Bedrock {
|
||||
}
|
||||
|
||||
public function loadLinks() {
|
||||
foreach ( $this->footer_links as $key => $link ) {
|
||||
Navigation::addLink( self::FOOTER_MENU_NAME, $link );
|
||||
foreach ( $this->contact_footer_links as $key => $link ) {
|
||||
Navigation::addLink( self::CONTACT_FOOTER_MENU_NAME, $link );
|
||||
}
|
||||
foreach ( $this->info_footer_links as $key => $link ) {
|
||||
Navigation::addLink( self::INFO_FOOTER_MENU_NAME, $link );
|
||||
}
|
||||
foreach ( $this->main_links as $key => $link ) {
|
||||
Navigation::addLink( self::MAIN_MENU_NAME, $link );
|
||||
@ -473,8 +547,8 @@ class TheTempusProject extends Bedrock {
|
||||
|
||||
public function load( $url = '' ) {
|
||||
$routes = new RoutesModel;
|
||||
if (empty($url)) {
|
||||
$url = trim(Input::get('url'), '/');
|
||||
if ( empty( $url ) ) {
|
||||
$url = trim( Input::get( 'url' ), '/' );
|
||||
$url = str_ireplace( '.php', '', $url );
|
||||
}
|
||||
$route = $routes->findByOriginalUrl($url);
|
||||
@ -515,45 +589,6 @@ class TheTempusProject extends Bedrock {
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
public static function verifyApiRequest() {
|
||||
$token = self::getBearerToken();
|
||||
if ( empty( $token ) ) {
|
||||
return false;
|
||||
}
|
||||
$user = new User;
|
||||
$result = $user->findByToken( $token );
|
||||
return $result;
|
||||
}
|
||||
|
||||
private static function getAuthorizationHeader(){
|
||||
$headers = null;
|
||||
if ( isset( $_SERVER['Authorization'] ) ) {
|
||||
$headers = trim( $_SERVER["Authorization"] );
|
||||
} elseif ( isset( $_SERVER['HTTP_AUTHORIZATION'] ) ) {
|
||||
$headers = trim( $_SERVER["HTTP_AUTHORIZATION"] );
|
||||
} elseif ( function_exists( 'apache_request_headers' ) ) {
|
||||
$requestHeaders = apache_request_headers();
|
||||
$requestHeaders = array_combine(array_map('ucwords', array_keys($requestHeaders)), array_values($requestHeaders));
|
||||
if ( isset( $requestHeaders['Authorization'] ) ) {
|
||||
$headers = trim( $requestHeaders['Authorization'] );
|
||||
}
|
||||
}
|
||||
return $headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* get access token from header
|
||||
* */
|
||||
private static function getBearerToken() {
|
||||
$headers = self::getAuthorizationHeader();
|
||||
// HEADER: Get the access token from the header
|
||||
if ( ! empty( $headers ) ) {
|
||||
if ( preg_match( '/Bearer\s(\S+)/', $headers, $matches ) ) {
|
||||
return $matches[1];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/**
|
||||
* Echos useful information about the installation.
|
||||
*
|
||||
|
Reference in New Issue
Block a user