ILIAS  trunk Revision v11.0_alpha-1713-gd8962da2f67
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
StartUp.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
21 namespace ILIAS\Cron\CLI;
22 
24 
25 class StartUp
26 {
27  private readonly \ilAuthSession $auth_session;
28  private bool $is_authenticated = false;
29 
30  public function __construct(
31  private readonly string $client,
32  private readonly string $username,
33  ?\ilAuthSession $authSession = null
34  ) {
37 
38  // TODO @see mantis 20371: To get rid of this, the authentication service has to provide a mechanism to pass the client_id
39  $_GET['client_id'] = $this->client;
41 
42  if ($authSession === null) {
43  global $DIC;
44  $authSession = $DIC['ilAuthSession'];
45  }
46  $this->auth_session = $authSession;
47  }
48 
49  public function authenticate(): bool
50  {
51  $credentials = new \ilAuthFrontendCredentials();
52  $credentials->setUsername($this->username);
53 
54  $status = \ilAuthStatus::getInstance();
55 
56  $frontend_factory = new \ilAuthFrontendFactory();
57  $frontend_factory->setContext(\ilAuthFrontendFactory::CONTEXT_CLI);
58 
59  $provider_factory = new \ilAuthProviderCliFactory();
60 
61  $frontend = $frontend_factory->getFrontend(
62  $this->auth_session,
63  $status,
64  $credentials,
65  $provider_factory->getProviders($credentials)
66  );
67 
68  $frontend->authenticate();
69 
70  switch ($status->getStatus()) {
71  case \ilAuthStatus::STATUS_AUTHENTICATED:
72  $this->is_authenticated = true;
73  \ilLoggerFactory::getLogger('auth')->debug('Authentication successful; Redirecting to starting page.');
74  return true;
75 
76  case \ilAuthStatus::STATUS_AUTHENTICATION_FAILED:
77  default:
78  throw new CronException($status->getTranslatedReason());
79  }
80  }
81 
82  public function logout(): void
83  {
84  if ($this->is_authenticated) {
86  $this->auth_session->logout();
87  }
88  }
89 }
$_GET["client_id"]
Definition: webdav.php:30
static getLogger(string $a_component_id)
Get component logger.
const CONTEXT_CRON
__construct(private readonly string $client, private readonly string $username, ?\ilAuthSession $authSession=null)
Definition: StartUp.php:30
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
$client
static initILIAS()
ilias initialisation
readonly ilAuthSession $auth_session
Definition: StartUp.php:27
const SESSION_CLOSE_USER
global $DIC
Definition: shib_login.php:22
static getInstance()
Get status instance.
static setClosingContext(int $a_context)
set closing context (for statistics)
static init(string $a_type)
Init context by type.