From 442bb6750bff5b6d1eaceb03aabc695fb8ca1e62 Mon Sep 17 00:00:00 2001
From: phpipam <miha.petkovsek@telemach.si>
Date: Thu, 21 Dec 2023 09:48:42 +0100
Subject: [PATCH] Added protocol selection for radius auth

---
 .../authentication-methods/edit-Radius.php    | 21 ++++++++++++++++++-
 app/admin/authentication-methods/index.php    |  6 ++++++
 functions/classes/class.User.php              | 15 ++++++-------
 3 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/app/admin/authentication-methods/edit-Radius.php b/app/admin/authentication-methods/edit-Radius.php
index 7865e4cd..13a5a98a 100644
--- a/app/admin/authentication-methods/edit-Radius.php
+++ b/app/admin/authentication-methods/edit-Radius.php
@@ -103,11 +103,30 @@ $delete = $_POST['action']=="delete" ? "disabled" : "";
 		</td>
 	</tr>
 
+	<!-- protocol -->
+	<tr>
+		<td><?php print _('Protocol'); ?></td>
+		<td>
+			<select name="authProtocol" class="form-control input-sm input-w-auto">
+			<?php
+			$values = ["pap","chap","mschapv1"];
+			foreach($values as $v) {
+				if($v==@$method_settings->params->authProtocol)	{ print "<option value='$v' selected=selected>$v</option>"; }
+				else											{ print "<option value='$v'					 >$v</option>"; }
+			}
+			?>
+			</select>
+		</td>
+		<td class="base_dn info2">
+			<?php print _('Set timeout in seconds'); ?>
+		</td>
+	</tr>
+
 	<!-- timeout -->
 	<tr>
 		<td><?php print _('Timeout'); ?></td>
 		<td>
-			<select name="timeout" class="form-control input-w-auto">
+			<select name="timeout" class="form-control input-sm input-w-auto">
 			<?php
 			$values = array(1,2,3,5,10);
 			foreach($values as $v) {
diff --git a/app/admin/authentication-methods/index.php b/app/admin/authentication-methods/index.php
index 9091ed09..9882c468 100644
--- a/app/admin/authentication-methods/index.php
+++ b/app/admin/authentication-methods/index.php
@@ -78,6 +78,12 @@ foreach($all_methods as $method) {
 	else {
 		print _("no parameters");
 	}
+	// radius - composer validation
+	if($method->type=="Radius") {
+	    if($User->composer_has_errors(["dapphp/radius"])) {
+	        $Result->show("danger", $User->composer_err, false);
+	    }
+	}
 	print "	</span>";
 	print "	</td>";
 	print "	<td class='$protected_class'>$user_num</td>";
diff --git a/functions/classes/class.User.php b/functions/classes/class.User.php
index 532b92bc..9b9fd309 100644
--- a/functions/classes/class.User.php
+++ b/functions/classes/class.User.php
@@ -1244,8 +1244,8 @@ class User extends Common_functions {
         $params = pf_json_decode($this->authmethodparams);
 
         # Valdate composer
-        if($this->composer_has_errors(["dapphp/radius"])) {
-            $this->Result->show("danger", $this->composer_err, true);
+        if($this->composer_has_errors(["dapphp/radius1"])) {
+            $this->Result->show("danger", _("Error in authentication method. Please contact administrator").".", true);
         }
 
         # Composer
@@ -1267,25 +1267,22 @@ class User extends Common_functions {
         if($this->debugging)
         $client->setDebug(true);
 
-        // fake type for testing
-        $params->authType = "chap";
-
         // pap
-        if(!isset($params->authType) || @$params->authType=="pap") {
+        if(!isset($params->authProtocol) || @$params->authProtocol=="pap") {
             $authenticated = $client->accessRequest($username, $password);
         }
         // chap-md5
-        elseif ($params->authType == "chap") {
+        elseif ($params->authProtocol == "chap") {
             $client->setChapPassword($password);
             $authenticated = $client->accessRequest($username);
         }
         // mschapv1
-        elseif ($params->authType == "mschapv1") {
+        elseif ($params->authProtocol == "mschapv1") {
             $client->setMSChapPassword($password);
             $authenticated = $client->accessRequest($username);
         }
         // mschapv2
-        elseif($params->authType == "mschapv2") {
+        elseif($params->authProtocol == "mschapv2") {
             $authenticated = $client->accessRequestEapMsChapV2($username, $password);
         }
         // fault
-- 
GitLab