ソースを参照

move this outside the auth block. If SSO is enabled, it should be checked whether authorized or not

Grant Limberg 4 年 前
コミット
287c19e822
1 ファイル変更16 行追加15 行削除
  1. 16 15
      controller/EmbeddedNetworkController.cpp

+ 16 - 15
controller/EmbeddedNetworkController.cpp

@@ -1331,6 +1331,20 @@ void EmbeddedNetworkController::_request(
 	// Otherwise no, we use standard auth logic.
 	// Otherwise no, we use standard auth logic.
 	bool networkSSOEnabled = OSUtils::jsonBool(network["ssoEnabled"], false);
 	bool networkSSOEnabled = OSUtils::jsonBool(network["ssoEnabled"], false);
 	bool memberSSOExempt = OSUtils::jsonBool(member["ssoExempt"], false);
 	bool memberSSOExempt = OSUtils::jsonBool(member["ssoExempt"], false);
+
+	if (networkSSOEnabled && !memberSSOExempt) {
+		int64_t authenticationExpiryTime = (int64_t)OSUtils::jsonInt(member["authenticationExpiryTime"], 0);
+		if ((authenticationExpiryTime == 0) || (authenticationExpiryTime < now)) {
+			Dictionary<1024> authInfo;
+			std::string authenticationURL = _db.getSSOAuthURL(member);
+			if (!authenticationURL.empty()) {
+				authInfo.add("aU", authenticationURL.c_str());
+			}
+			_sender->ncSendError(nwid,requestPacketId,identity.address(),NetworkController::NC_ERROR_AUTHENTICATION_REQUIRED, authInfo.data(), authInfo.sizeBytes());
+			return;
+		}
+	}
+
 	if (authorized) {
 	if (authorized) {
 		// Update version info and meta-data if authorized and if this is a genuine request
 		// Update version info and meta-data if authorized and if this is a genuine request
 		if (requestPacketId) {
 		if (requestPacketId) {
@@ -1355,22 +1369,9 @@ void EmbeddedNetworkController::_request(
 				ms.lastRequestMetaData = metaData;
 				ms.lastRequestMetaData = metaData;
 				ms.identity = identity;
 				ms.identity = identity;
 			}
 			}
-		}
-		
-		if (networkSSOEnabled && !memberSSOExempt) {
-			int64_t authenticationExpiryTime = (int64_t)OSUtils::jsonInt(member["authenticationExpiryTime"], 0);
-			if ((authenticationExpiryTime == 0) || (authenticationExpiryTime < now)) {
-				Dictionary<1024> authInfo;
-				std::string authenticationURL = _db.getSSOAuthURL(member);
-				if (!authenticationURL.empty()) {
-					authInfo.add("aU", authenticationURL.c_str());
-				}
-				_sender->ncSendError(nwid,requestPacketId,identity.address(),NetworkController::NC_ERROR_AUTHENTICATION_REQUIRED, authInfo.data(), authInfo.sizeBytes());
-				return;
-			}
-		}
-		
+		}		
 	} else {
 	} else {
+		
 		// If they are not authorized, STOP!
 		// If they are not authorized, STOP!
 		DB::cleanMember(member);
 		DB::cleanMember(member);
 		_db.save(member,true);
 		_db.save(member,true);