Client Portal) a contact signing in with a password is kept here * until it is on (includes/check_login.php). * * SCOPING: everything is the session contact's own - no id is read from the * request. The forms post to post.php. */ // intl-tel-input for the phone numbers - see includes/header.php $portal_load_phone_inputs = true; header("Content-Security-Policy: default-src 'self'"); require_once 'includes/inc_all.php'; $me = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT contact_name, contact_title, contact_department, contact_email, contact_extension, contact_location_id, contact_mobile, contact_mobile_country_code, contact_phone, contact_phone_country_code, contact_pin, contact_billing, contact_technical, contact_primary, contact_ticket_emails, contact_company_ticket_emails, location_name, location_address, location_city, location_state, location_zip, location_country FROM contacts LEFT JOIN locations ON location_id = contact_location_id AND location_client_id = $session_client_id AND location_archived_at IS NULL WHERE contact_id = $session_contact_id AND contact_client_id = $session_client_id LIMIT 1")); $password_account = $session_auth_method === 'local'; $microsoft_account = $session_auth_method === 'azure'; $mfa_required = intval($config_client_portal_require_mfa) === 1; $mfa_setup = $password_account && !$session_mfa_on && (($_GET['mfa'] ?? '') === 'setup' || $portal_mfa_setup_needed) && !portalViewingAs(); $remembered = $session_mfa_on ? portalRememberedBrowsers($session_user_id) : 0; $sees_company = $session_contact_primary || $session_contact_is_technical_contact; // they see every ticket at their company // Setting up two-step sign-in: one secret, kept until a code from it is checked $mfa_secret = ''; $mfa_qr = ''; if ($mfa_setup && !portalViewingAs()) { if (empty($_SESSION['portal_mfa_secret'])) { $_SESSION['portal_mfa_secret'] = generateTotpSecret(); } $mfa_secret = $_SESSION['portal_mfa_secret']; $mfa_qr = portalMfaQrSvg($mfa_secret, $me['contact_email'] ?? ''); } $roles = portalContactRoles($me ?: []); $location = ''; if (!empty($me['location_name'])) { $location = escapeHtml($me['location_name']); $address = formatAddress($me['location_address'], $me['location_city'], $me['location_state'], $me['location_zip'], $me['location_country']); if (trim(strip_tags((string) $address)) !== '') { $location .= '
Your details, the emails you get from us and how you sign in
You sign in with your Microsoft 365 account - Microsoft looks after your password and its own sign-in checks.
There is no client portal sign-in for this contact.
We ask for it to make sure it is really you when you call. = empty($me['contact_pin']) ? 'You have not set one.' : 'Yours is ' . escapeHtml($me['contact_pin']) . '.' ?>