Skip to content

Commit 50a1267

Browse files
committed
Add debug logs
1 parent 09c8592 commit 50a1267

3 files changed

Lines changed: 98 additions & 5 deletions

File tree

src/components/com_externallogin/src/Model/ServerModel.php

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,18 @@ public function getItem($pk = null)
8484
{
8585
// Load the server
8686
$id = $this->getState('server.id');
87+
Log::add('ServerModel getItem() called with server.id: ' . $id, Log::INFO, 'externallogin');
88+
8789
$item = $this->getTable();
90+
Log::add('ServerModel got table: ' . get_class($item), Log::INFO, 'externallogin');
8891

8992
if (!$item->load($id) || $item->published != 1) {
93+
Log::add('ServerModel: server not found or not published (id: ' . $id . ')', Log::ERROR, 'externallogin');
9094
throw new Exception(Text::_('COM_EXTERNALLOGIN_ERROR_SERVER_UNPUBLISHED'));
9195
}
9296

97+
Log::add('ServerModel: loaded server #' . $id . ' (plugin: ' . $item->plugin . ')', Log::INFO, 'externallogin');
98+
9399
/** @var CMSApplication */
94100
$app = Factory::getApplication();
95101
$menu = $app->getMenu()->getActive();
@@ -121,20 +127,31 @@ public function getItem($pk = null)
121127
$url = $app->getInput()->server->getString('HTTP_REFERER');
122128

123129
if (empty($url) || !Uri::isInternal($url)) {
124-
$url = Route::_('index.php', true, $app->get('force_ssl') == 2 ? 1 : 0);
130+
// Get the full base URL (http://www.dev.local/)
131+
$url = Uri::root() . 'index.php';
132+
Log::add('ServerModel: Using base URL as service: ' . $url, Log::INFO, 'externallogin');
125133
}
126134
}
127135

128136
// Compute the URI
129137
$uri = Uri::getInstance($url);
138+
Log::add('ServerModel: Service URI for CAS: ' . (string)$uri, Log::INFO, 'externallogin');
130139

131140
// Return the service/URL
132141
$user = $this->getCurrentUser();
133142
if (!$user->guest) {
143+
Log::add('User is already logged in, return ' . (string)$uri . '.', Log::INFO, 'externallogin');
134144
return $uri;
135145
}
146+
147+
Log::add('ServerModel: User is guest, preparing login URL', Log::INFO, 'externallogin');
148+
136149
$app->setUserState('com_externallogin.server', $item->id);
150+
Log::add('ServerModel: Set user state com_externallogin.server = ' . $item->id, Log::INFO, 'externallogin');
151+
137152
$dispatcher = Factory::getContainer()->get(DispatcherInterface::class);
153+
Log::add('ServerModel: Got dispatcher: ' . get_class($dispatcher), Log::INFO, 'externallogin');
154+
138155
$event = new ContentPrepareEvent(
139156
'onGetLoginUrl',
140157
[
@@ -143,10 +160,18 @@ public function getItem($pk = null)
143160
]
144161
);
145162
$event->setArgument('service', $uri);
163+
Log::add('ServerModel: Created event, dispatching onGetLoginUrl for server plugin: ' . $item->plugin, Log::INFO, 'externallogin');
164+
146165
$dispatcher->dispatch('onGetLoginUrl', $event);
166+
Log::add('ServerModel: Event dispatched', Log::INFO, 'externallogin');
167+
147168
$results = $event->getArgument('result', []);
148169

170+
// Debug logging
171+
Log::add('onGetLoginUrl service: ' . (string)$uri . ', results: ' . json_encode($results) . ' (type: ' . gettype($results) . ')', Log::INFO, 'externallogin');
172+
149173
if (empty($results)) {
174+
Log::add('ServerModel: No results from onGetLoginUrl event handlers!', Log::ERROR, 'externallogin');
150175
throw new Exception(Text::_('COM_EXTERNALLOGIN_ERROR_OCCURS'));
151176
}
152177
$result = is_array($results) ? $results[0] : $results;

src/plugins/system/caslogin/src/Extension/Caslogin.php

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public function __construct($config)
8383
'system-caslogin-groups',
8484
]
8585
);
86+
Log::add('CAS plugin constructed, plugin enabled', Log::INFO, 'externallogin');
8687
}
8788

8889
/**
@@ -165,7 +166,14 @@ public function onAfterInitialise(): void
165166
$app = Factory::getApplication();
166167
$user = $app->getIdentity();
167168

169+
Log::add(
170+
sprintf('CAS onAfterInitialise: User guest=%s, ID=%d', $user->guest ? 'yes' : 'no', $user->id),
171+
Log::INFO,
172+
'externallogin'
173+
);
174+
168175
if (!$user->guest) {
176+
Log::add('CAS onAfterInitialise: User already logged in, exiting', Log::INFO, 'externallogin');
169177
return;
170178
}
171179

@@ -174,11 +182,26 @@ public function onAfterInitialise(): void
174182
$service = Uri::getInstance();
175183
$ticket = $input->get('ticket');
176184
$serverID = $app->isClient('administrator') ? $input->get('server') : $app->getUserState('com_externallogin.server');
185+
186+
Log::add(
187+
sprintf(
188+
'CAS onAfterInitialise: ticket=%s, serverID=%s, isAdmin=%s, userState=%s',
189+
$ticket ?: 'null',
190+
$serverID ?: 'null',
191+
$app->isClient('administrator') ? 'yes' : 'no',
192+
$app->getUserState('com_externallogin.server') ?: 'null'
193+
),
194+
Log::INFO,
195+
'externallogin'
196+
);
197+
Log::add('CAS onAfterInitialise: Current URL: ' . (string)$service, Log::INFO, 'externallogin');
198+
177199
/** @var MVCFactoryServiceInterface */
178200
$component = $app->bootComponent('com_externallogin');
179201
$mvcFactory = $component->getMVCFactory();
180202

181203
if (!$ticket && !$serverID) {
204+
Log::add('CAS onAfterInitialise: No ticket and no serverID, checking autologin servers...', Log::INFO, 'externallogin');
182205
/** @var ServersModel $model */
183206
$model = $mvcFactory->createModel('Servers', 'Administrator', ['ignore_request' => true]);
184207

@@ -246,6 +269,7 @@ public function onAfterInitialise(): void
246269
}
247270

248271
if (!$ticket && $serverID !== null) {
272+
Log::add('CAS onAfterInitialise: serverID exists but no ticket - autologin failed scenario', Log::INFO, 'externallogin');
249273
/** @var ServerTable|bool $server */
250274
$server = $mvcFactory->createTable('Server', 'Administrator');
251275

@@ -261,16 +285,31 @@ public function onAfterInitialise(): void
261285
}
262286
}
263287

288+
Log::add('CAS onAfterInitialise: Exiting (no ticket)', Log::INFO, 'externallogin');
264289
return;
265290
}
266291

292+
Log::add('CAS onAfterInitialise: Has ticket! Starting ticket validation...', Log::INFO, 'externallogin');
293+
267294
/** @var ServerTable|bool */
268295
$server = $mvcFactory->createTable('Server', 'Administrator');
269296

270297
if (!$server || !$server->load($serverID) || $server->plugin != 'system.caslogin') {
298+
Log::add(
299+
sprintf(
300+
'CAS onAfterInitialise: Server validation failed! server=%s, loaded=%s, plugin=%s',
301+
$server ? 'exists' : 'null',
302+
$server && $server->load($serverID) ? 'yes' : 'no',
303+
$server ? $server->plugin : 'n/a'
304+
),
305+
Log::ERROR,
306+
'externallogin'
307+
);
271308
return;
272309
}
273310

311+
Log::add('CAS onAfterInitialise: Server validated, server #' . $serverID, Log::INFO, 'externallogin');
312+
274313
$params = $server->params;
275314

276315
if ($params->get('log_login', 0)) {
@@ -283,6 +322,8 @@ public function onAfterInitialise(): void
283322
);
284323
}
285324

325+
Log::add('CAS onAfterInitialise: Verifying service ticket with CAS server...', Log::INFO, 'externallogin');
326+
286327
$service->delVar('ticket');
287328
$response = $this->verifyServiceTicket($params, $ticket, $service);
288329

@@ -486,27 +527,46 @@ public function onAfterInitialise(): void
486527
*/
487528
public function onGetLoginUrl(Event $event): void
488529
{
530+
Log::add('CAS onGetLoginUrl method ENTERED!', Log::INFO, 'externallogin');
531+
489532
$server = $event->getArgument('subject');
490533
$service = $event->getArgument('service');
491534

535+
// Debug logging
536+
Log::add('CAS onGetLoginUrl called. Server: ' . ($server ? ('id=' . $server->id . ', plugin=' . $server->plugin) : 'null') . ', Service: ' . ($service ? (string)$service : 'null'), Log::INFO, 'externallogin');
537+
492538
if ($server && $server->plugin == 'system.caslogin') {
539+
Log::add('CAS onGetLoginUrl: Plugin matches, generating URL...', Log::INFO, 'externallogin');
540+
493541
if ($service instanceof Uri) {
494542
$service = (string) $service;
495543
}
496544

497545
$url = $this->getUrl($server->params) . '/login?service=' . urlencode($service);
546+
Log::add('CAS onGetLoginUrl: Base URL: ' . $url, Log::INFO, 'externallogin');
498547

499548
if ($server->params->get('locale')) {
500549
[$locale] = explode('-', Factory::getApplication()->getLanguage()->getTag());
501550
$url .= '&locale=' . $locale;
551+
Log::add('CAS onGetLoginUrl: Added locale: ' . $locale, Log::INFO, 'externallogin');
502552
}
503553

554+
Log::add('CAS onGetLoginUrl: Event class: ' . get_class($event) . ', is ResultAware: ' . ($event instanceof ResultAwareInterface ? 'YES' : 'NO'), Log::INFO, 'externallogin');
555+
504556
if ($event instanceof ResultAwareInterface) {
505557
$event->addResult($url);
558+
Log::add('CAS onGetLoginUrl: Called addResult()', Log::INFO, 'externallogin');
506559
} else {
507560
$event->setArgument('result', $url);
561+
Log::add('CAS onGetLoginUrl: Called setArgument() with array [url]', Log::INFO, 'externallogin');
508562
}
563+
// Debug logging
564+
Log::add('CAS login URL constructed: ' . $url . ' (service: ' . $service . ')', Log::INFO, 'externallogin');
565+
} else {
566+
Log::add('CAS onGetLoginUrl: Plugin does NOT match! Expected system.caslogin, got: ' . ($server ? $server->plugin : 'null'), Log::WARNING, 'externallogin');
509567
}
568+
569+
Log::add('CAS onGetLoginUrl method EXITING', Log::INFO, 'externallogin');
510570
}
511571

512572
/**

src/plugins/system/externallogin/src/Extension/Externallogin.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Joomla\CMS\Factory;
2020
use Joomla\CMS\Language\Text;
2121
use Joomla\CMS\Log\Log;
22+
use Joomla\CMS\MVC\Factory\MVCFactoryServiceInterface;
2223
use Joomla\CMS\Plugin\CMSPlugin;
2324
use Joomla\CMS\Plugin\PluginHelper;
2425
use Joomla\CMS\Router\Route;
@@ -109,8 +110,12 @@ public function onUserAfterDelete($user, $success, $msg)
109110
->where('user_id = ' . (int) $user['id'])
110111
);
111112
$sid = $dbo->loadResult();
112-
$server = $dbo->getTable('Server', 'ExternalloginTable');
113-
$currentUser = Factory::getApplication()->getIdentity();
113+
$app = Factory::getApplication();
114+
/** @var MVCFactoryServiceInterface */
115+
$component = $app->bootComponent('com_externallogin');
116+
$mvcFactory = $component->getMVCFactory();
117+
$server = $mvcFactory->createTable('Server', 'ExternalloginTable');
118+
$currentUser = $app->getIdentity();
114119

115120
if ($server->load($sid)) {
116121
if (!$success) {
@@ -165,8 +170,11 @@ public function onUserBeforeSave($old, $isnew, $new)
165170
->where('user_id = ' . (int) $new['id'])
166171
);
167172
$sid = $dbo->loadResult();
168-
$dbo = Factory::getContainer()->get(DatabaseInterface::class);
169-
$server = $dbo->getTable('Server', 'ExternalloginTable');
173+
$app = Factory::getApplication();
174+
/** @var MVCFactoryServiceInterface */
175+
$component = $app->bootComponent('com_externallogin');
176+
$mvcFactory = $component->getMVCFactory();
177+
$server = $mvcFactory->createTable('Server', 'ExternalloginTable');
170178

171179
if ($server->load($sid) && !$server->params->get('allow_change_password', 0)) {
172180
$dbo = Factory::getContainer()->get(DatabaseInterface::class);

0 commit comments

Comments
 (0)