4
0
Эх сурвалжийг харах

added global blacklist user feature

CauseFX 4 жил өмнө
parent
commit
8aa362370c

+ 34 - 2
api/classes/organizr.class.php

@@ -138,6 +138,8 @@ class Organizr
 		$this->upgradeCheck();
 		// Is Page load Organizr OAuth?
 		$this->checkForOrganizrOAuth();
+		// Is user Blacklisted?
+		$this->checkIfUserIsBlacklisted();
 	}
 	
 	protected function connectDB()
@@ -180,6 +182,16 @@ class Organizr
 		}
 	}
 	
+	public function checkIfUserIsBlacklisted()
+	{
+		if ($this->hasDB()) {
+			$currentIP = $this->userIP();
+			if (in_array($currentIP, $this->arrayIP($this->config['blacklisted']))) {
+				die($this->config['blacklistedMessage']);
+			}
+		}
+	}
+	
 	public function auth()
 	{
 		if ($this->hasDB()) {
@@ -2072,7 +2084,8 @@ class Organizr
 					'name' => 'debugAreaAuth',
 					'label' => 'Minimum Authentication for Debug Area',
 					'value' => $this->config['debugAreaAuth'],
-					'options' => $this->groupSelect()
+					'options' => $this->groupSelect(),
+					'settings' => '{}'
 				),
 				array(
 					'type' => 'select2',
@@ -2132,7 +2145,26 @@ class Organizr
 							'value' => 'allow-downloads'
 						),
 					)
-				)
+				),
+				array(
+					'type' => 'select2',
+					'class' => 'select2-multiple',
+					'id' => 'blacklisted-select',
+					'name' => 'blacklisted',
+					'label' => 'Blacklisted IP\'s',
+					'value' => $this->config['blacklisted'],
+					'help' => 'WARNING! This can potentially mess up your iFrames',
+					'options' => $this->makeOptionsFromValues($this->config['blacklisted']),
+					'settings' => '{tags: true}',
+				),
+				array(
+					'type' => 'textbox',
+					'name' => 'blacklistedMessage',
+					'class' => '',
+					'label' => 'Blacklisted Error Message',
+					'value' => $this->config['blacklistedMessage'],
+					'attr' => 'rows="10"',
+				),
 			),
 			'Login' => array(
 				array(

+ 3 - 1
api/config/default.php

@@ -496,5 +496,7 @@ return array(
 	'traktRefreshToken' => '',
 	'autoCollapseCategories' => false,
 	'autoExpandNavBar' => true,
-	'defaultSettingsTab' => '5'
+	'defaultSettingsTab' => '5',
+	'blacklisted' => '',
+	'blacklistedMessage' => 'You have been blacklisted from this site.'
 );

+ 15 - 0
api/functions/option-functions.php

@@ -2,6 +2,21 @@
 
 trait OptionsFunction
 {
+	public function makeOptionsFromValues($values = null)
+	{
+		$formattedValues = [];
+		if (strpos($values, ',') !== false) {
+			$explode = explode(',', $values);
+			foreach ($explode as $item) {
+				$formattedValues[] = [
+					'name' => $item,
+					'value' => $item
+				];
+			}
+		}
+		return $formattedValues;
+	}
+	
 	public function calendarLocaleOptions()
 	{
 		return [

+ 1 - 0
css/organizr.css

@@ -1427,6 +1427,7 @@ img.dark-logo-side {
     position: relative;
     vertical-align: middle;
     width: 100% !important;
+    z-index: 9999;
 }
 .select2-container--default .select2-selection--single .select2-selection__rendered {
     line-height: 38px;

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
css/organizr.min.css


+ 2 - 1
js/functions.js

@@ -1112,7 +1112,8 @@ function buildFormItem(item){
 			break;
 		case 'select2':
             var select2ID = (item.id) ? '#'+item.id : '.'+item.name;
-            return smallLabel+'<select class="m-b-10 '+extraClass+'"'+placeholder+value+id+name+disabled+type+label+attr+' multiple="multiple" data-placeholder="Choose">'+selectOptions(item.options, item.value)+'</select><script>$("'+select2ID+'").select2();</script>';
+            let settings = (item.settings) ? item.settings : '{}';
+            return smallLabel+'<select class="m-b-10 '+extraClass+'"'+placeholder+value+id+name+disabled+type+label+attr+' multiple="multiple" data-placeholder="Choose">'+selectOptions(item.options, item.value)+'</select><script>$("'+select2ID+'").select2('+settings+');</script>';
 			break;
 		case 'switch':
 		case 'checkbox':

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно