27if (!defined(
'WEBPORTAL')) {
28 define(
'WEBPORTAL', 1);
30if (!defined(
'NOLOGIN')) {
33if (!defined(
'NOREQUIREUSER')) {
34 define(
'NOREQUIREUSER', 1);
36if (!defined(
'NOREQUIREMENU')) {
37 define(
'NOREQUIREMENU', 1);
39if (!defined(
'NOREQUIRESOC')) {
40 define(
'NOREQUIRESOC', 1);
42if (!defined(
'EVEN_IF_ONLY_LOGIN_ALLOWED')) {
43 define(
'EVEN_IF_ONLY_LOGIN_ALLOWED', 1);
45if (!defined(
'NOIPCHECK')) {
46 define(
'NOIPCHECK', 1);
50if (!function_exists(
'dol_getprefix')) {
60 function dol_getprefix($mode =
'')
62 global $dolibarr_main_instance_unique_id,
63 $dolibarr_main_cookie_cryptkey;
65 $tmp_instance_unique_id = empty($dolibarr_main_instance_unique_id) ?
66 (empty($dolibarr_main_cookie_cryptkey) ?
'' :
67 $dolibarr_main_cookie_cryptkey) : $dolibarr_main_instance_unique_id;
71 if (!empty($tmp_instance_unique_id)) {
72 return sha1(
'webportal' . $tmp_instance_unique_id);
74 return sha1(
'webportal' . $_SERVER[
'SERVER_NAME'].$_SERVER[
'DOCUMENT_ROOT'].DOL_DOCUMENT_ROOT);
79include __DIR__.
'/../../main.inc.php';
80require_once DOL_DOCUMENT_ROOT .
'/user/class/user.class.php';
81require_once DOL_DOCUMENT_ROOT .
'/societe/class/societeaccount.class.php';
82require_once DOL_DOCUMENT_ROOT .
'/public/webportal/lib/webportal.lib.php';
83require_once DOL_DOCUMENT_ROOT .
'/webportal/class/context.class.php';
84require_once DOL_DOCUMENT_ROOT .
'/webportal/class/webportalmember.class.php';
85require_once DOL_DOCUMENT_ROOT .
'/webportal/class/webportalpartnership.class.php';
96@phan-var-force string $sessionname
97@phan-var-force string $sessiontimeout
112$hookmanager->initHooks(array(
'main',
'webportal'));
115$anti_spam_session_key =
'dol_antispam_value';
117if (!defined(
'NOREQUIREDB') && empty(
$conf->webportal->enabled)) {
121if (!defined(
'WEBPORTAL_NOREQUIRETRAN') || (!defined(
'WEBPORTAL_NOLOGIN') && !empty(
$context->controllerInstance->accessNeedLoggedUser))) {
122 if (!is_object($langs)) {
123 include_once DOL_DOCUMENT_ROOT .
'/core/class/translate.class.php';
125 $langcode = (
GETPOST(
'lang',
'aZ09', 1) ?
GETPOST(
'lang',
'aZ09', 1) : (empty($logged_user->
conf->MAIN_LANG_DEFAULT) ?
getDolGlobalString(
'MAIN_LANG_DEFAULT',
'auto') : $logged_user->
conf->MAIN_LANG_DEFAULT));
126 if (defined(
'MAIN_LANG_DEFAULT')) {
127 $langcode = constant(
'MAIN_LANG_DEFAULT');
129 $langs->setDefaultLang($langcode);
131 $langs->loadLangs(array(
'website',
'main'));
137if (
getDolGlobalInt(
'WEBPORTAL_LOGIN_BY_MODULE') && !empty(
$conf->modules_parts[
'webportallogin']) && is_array(
$conf->modules_parts[
'webportallogin'])) {
138 foreach (
$conf->modules_parts[
'webportallogin'] as $module => $file) {
143} elseif (!defined(
'WEBPORTAL_NOLOGIN') && !empty(
$context->controllerInstance->accessNeedLoggedUser)) {
147 $hookmanager->initHooks(array(
'login'));
149 "webportal_sessionname" => $sessionname,
150 "webportal_anti_spam_session_key" => $anti_spam_session_key,
152 $reshook = $hookmanager->executeHooks(
'beforeLoginAuthentication', $parameters, $context);
155 } elseif (empty($reshook)) {
156 $admin_error_messages = array();
157 $webportal_logged_thirdparty_account_id = isset($_SESSION[
"webportal_logged_thirdparty_account_id"]) && $_SESSION[
"webportal_logged_thirdparty_account_id"] > 0 ? $_SESSION[
"webportal_logged_thirdparty_account_id"] : 0;
158 $webportal_logged_member_account_id = isset($_SESSION[
"webportal_logged_member_account_id"]) && $_SESSION[
"webportal_logged_member_account_id"] > 0 ? $_SESSION[
"webportal_logged_member_account_id"] : 0;
162 $langs->loadLangs(array(
"other",
"help",
"admin"));
164 $action =
GETPOST(
'action_login',
'alphanohtml');
166 if ($action ==
'login') {
167 $login =
GETPOST(
'login',
'alphanohtml');
168 $password =
GETPOST(
'password',
'password');
169 $security_code =
GETPOST(
'security_code',
'alphanohtml');
172 $context->setEventMessage($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Login")),
'errors');
173 $focus_element =
'login';
176 if (empty($password)) {
177 $context->setEventMessage($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Password")),
'errors');
178 if (empty($focus_element)) {
179 $focus_element =
'password';
185 $ok = (array_key_exists($anti_spam_session_key, $_SESSION) && (strtolower($_SESSION[$anti_spam_session_key]) == strtolower($security_code)));
188 $context->setEventMessage($langs->trans(
"ErrorBadValueForCode"),
'errors');
189 if (empty($focus_element)) {
190 $focus_element =
'security_code';
197 $thirdparty_account_id =
$context->getThirdPartyAccountFromLogin($login, $password);
198 if ($thirdparty_account_id <= 0) {
200 dol_syslog($langs->transnoentitiesnoconv(
'WebPortalErrorFetchThirdPartyAccountFromLogin', $login), LOG_WARNING);
202 $_SESSION[
"webportal_logged_thirdparty_account_id"] = $thirdparty_account_id;
203 $webportal_logged_thirdparty_account_id = $thirdparty_account_id;
209 $member_account_id =
$context->getMemberAccountFromLogin($login, $password);
210 if ($member_account_id <= 0) {
212 dol_syslog($langs->transnoentitiesnoconv(
'WebPortalErrorFetchMemberAccountFromLogin', $login), LOG_WARNING);
214 $_SESSION[
"webportal_logged_member_account_id"] = $member_account_id;
215 $webportal_logged_member_account_id = $member_account_id;
221 dol_syslog($langs->transnoentitiesnoconv(
'WebPortalErrorNoFetchMethod'), LOG_WARNING);
225 $context->setEventMessage($langs->transnoentitiesnoconv(
'WebPortalErrorAuthentication'),
'errors');
229 if (empty($webportal_logged_thirdparty_account_id) && empty($webportal_logged_member_account_id)) {
240 if (!$error &&
$context->userIsLog()) {
241 $logged_member =
null;
242 $websiteaccount =
null;
247 $result = $logged_member->fetch($webportal_logged_member_account_id);
252 dol_syslog(
"Can't load member account (ID: $webportal_logged_member_account_id) even if session logged.", LOG_WARNING);
254 session_set_cookie_params(0,
'/',
null, !empty($dolibarr_main_force_https),
true);
255 session_name($sessionname);
258 $error_msg = $langs->transnoentitiesnoconv(
'WebPortalErrorFetchLoggedMember', (
string) $webportal_logged_member_account_id);
260 $context->setEventMessage($error_msg,
'errors');
264 $result = $websiteaccount->fetch($webportal_logged_thirdparty_account_id);
270 dol_syslog(
"Can't load third-party account (ID: $webportal_logged_thirdparty_account_id) even if session logged.", LOG_WARNING);
272 session_set_cookie_params(0,
'/',
null, !empty($dolibarr_main_force_https),
true);
273 session_name($sessionname);
276 $context->setEventMessage($langs->transnoentitiesnoconv(
'WebPortalErrorFetchLoggedThirdPartyAccount', $webportal_logged_thirdparty_account_id),
'errors');
285 $error_msg = $langs->transnoentitiesnoconv(
'WebPortalSetupNotComplete');
287 $context->setEventMessages($error_msg,
null,
'errors');
291 $result = $logged_user->fetch($user_id);
294 $error_msg = $langs->transnoentitiesnoconv(
'WebPortalErrorFetchLoggedUser', (
string) $user_id);
296 $context->setEventMessages($error_msg,
null,
'errors');
303 $logged_thirdparty = $websiteaccount->thirdparty;
304 if (!$logged_thirdparty || !($logged_thirdparty->id > 0)) {
305 $result = $websiteaccount->fetch_thirdparty();
308 $error_msg = $langs->transnoentitiesnoconv(
'WebPortalErrorFetchLoggedThirdParty', (
string) $websiteaccount->fk_soc);
311 $context->setEventMessage($error_msg,
'errors');
317 $logged_thirdparty = $websiteaccount->thirdparty;
321 $result = $logged_member->fetch(0,
'', $websiteaccount->thirdparty->id);
324 $error_msg = $langs->transnoentitiesnoconv(
'WebPortalErrorFetchLoggedMember', (
string) $websiteaccount->thirdparty->id);
326 $context->setEventMessage($error_msg,
'errors');
329 if (
isModEnabled(
'partnership') && !$error && $logged_member->id > 0) {
333 $result = $logged_partnership->fetch(0,
'', $logged_member->id, $websiteaccount->thirdparty->id);
336 $error_msg = $langs->transnoentitiesnoconv(
'WebPortalErrorFetchLoggedPartnership', (
string) $websiteaccount->thirdparty->id, (
string) $logged_member->id);
338 $context->setEventMessage($error_msg,
'errors');
343 if ($logged_thirdparty->default_lang != $langs->defaultlang && !defined(
'WEBPORTAL_NOREQUIRETRAN')) {
344 if (!is_object($langs)) {
345 include_once DOL_DOCUMENT_ROOT .
'/core/class/translate.class.php';
347 $langs->setDefaultLang($logged_thirdparty->default_lang);
349 $langs->loadLangs(array(
'website',
'main'));
352 $context->logged_thirdparty = $logged_thirdparty;
353 if (!empty($logged_partnership)) {
354 $context->logged_partnership = $logged_partnership;
362 $context->logged_user = $logged_user;
363 if (!empty($logged_member)) {
364 $context->logged_member = $logged_member;
377 "webportal_sessionname" => $sessionname,
378 "webportal_anti_spam_session_key" => $anti_spam_session_key,
380 $reshook = $hookmanager->executeHooks(
'afterLoginFailed', $parameters, $context);
387 "webportal_sessionname" => $sessionname,
388 "webportal_anti_spam_session_key" => $anti_spam_session_key,
390 $reshook = $hookmanager->executeHooks(
'afterLogin', $parameters, $context);
static getInstance()
Singleton method to create one instance of this object.
Class for SocieteAccount.
Class to manage translations.
Class to manage Dolibarr users.
Class for WebPortalMember.
Class for WebPortalPartnership.
dolSetCookie(string $cookiename, string $cookievalue, int $expire=-1)
Set a cookie.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
conf($dolibarr_main_document_root)
Load conf file (file must exists)
$context
@method int call_trigger(string $triggerName, ?User $user)
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.