Plugin Directory

Changeset 3178066


Ignore:
Timestamp:
10/29/2024 01:53:02 PM (14 months ago)
Author:
jamieblomerus
Message:

Version 1.4 commited to trunk

Location:
mobile-bankid-integration/trunk
Files:
5 added
68 edited

Legend:

Unmodified
Added
Removed
  • mobile-bankid-integration/trunk/assets/css/setup.css

    r3070283 r3178066  
    1 #adminmenumain,#wpadminbar,#wpfooter,.update-nag{display:none}#wpcontent{margin-left:0}.wizard{position:absolute;top:50%;left:50%;transform:translate(-50%,0);width:500px;padding:20px}.wizard .footer-info{text-align:center;margin-bottom:20px;color:#999}.wizard .steps{margin-bottom:20px}.wizard .steps ol{display:flex;justify-content:space-between;list-style:none;padding:0;margin:0}.wizard .steps ol li{width:25%;text-align:center;position:relative}.wizard .steps ol li:before{content:'';display:block;width:20px;height:20px;border-radius:50%;background:#ccc;margin:0 auto 5px}.wizard .steps ol li:after{content:'';display:block;width:100%;height:2px;background:#ccc;position:absolute;top:9px;left:-50%;z-index:-1}.wizard .steps ol li:first-child:after{content:none}.wizard .steps ol li.active:after,.wizard .steps ol li.active:before{background:#1e8cbe}.wizard .steps ol li.done:after,.wizard .steps ol li.done:before{background:#1e8cbe}.wizard .steps ol li.done:before{content:'\f147';font:400 18px/1 dashicons;display:block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#fff}.wizard .steps ol li.active:after{background:#1e8cbe}.wizard .steps ol li.animate-done:before{animation:wizard-animate-done .5s ease-in}.wizard .steps ol li.animate-active:after,.wizard .steps ol li.animate-active:before{animation:wizard-animate-active .5s ease-in}@keyframes wizard-animate-done{0%{font:400 1px/1 dashicons}100%{font:400 18px/1 dashicons}}@keyframes wizard-animate-active{0%{background:#ccc}100%{background:#1e8cbe}}#wizard-content{background:#fff;padding:20px;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.13)}#wizard-content ul{list-style:none;padding:0;margin-left:30px}#wizard-content ul li::before{content:" - ";font-weight:700}#wizard-content .form-group{margin-bottom:10px}#wizard-content .form-group label{display:block;margin-bottom:5px}#wizard-content .form-group input[type=password],#wizard-content .form-group input[type=text],#wizard-content .form-group input[type=url]{width:100%;padding:5px;border:1px solid #ccc;border-radius:3px}#wizard-modal{display:none;position:fixed;z-index:9999;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.4)}#wizard-modal-content{background-color:#fefefe;margin:15% auto;padding:20px;border:1px solid #888;width:50%}#wizard-modal-content p{text-align:center}#wizard-modal-footer{text-align:end}@media screen and (max-width:600px){.wizard{width:90%;padding:20px 10px}}
     1#adminmenumain,#wpadminbar,#wpfooter,.update-nag{display:none}#wpcontent{margin-left:0}.wizard{position:absolute;top:50%;left:50%;transform:translate(-50%,0);width:500px;padding:20px}.wizard .footer-info{text-align:center;margin-bottom:20px;color:#4a4a4a}.wizard .steps{margin-bottom:20px}.wizard .steps ol{display:flex;justify-content:space-between;list-style:none;padding:0;margin:0}.wizard .steps ol li{width:25%;text-align:center;position:relative}.wizard .steps ol li:before{content:'';display:block;width:20px;height:20px;border-radius:50%;background:#ccc;margin:0 auto 5px}.wizard .steps ol li:after{content:'';display:block;width:100%;height:2px;background:#ccc;position:absolute;top:9px;left:-50%;z-index:-1}.wizard .steps ol li:first-child:after{content:none}.wizard .steps ol li.active:after,.wizard .steps ol li.active:before{background:#1e8cbe}.wizard .steps ol li.done:after,.wizard .steps ol li.done:before{background:#1e8cbe}.wizard .steps ol li.done:before{content:'\f147';font:400 18px/1 dashicons;display:block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#fff}.wizard .steps ol li.active:after{background:#1e8cbe}.wizard .steps ol li.animate-done:before{animation:wizard-animate-done .5s ease-in}.wizard .steps ol li.animate-active:after,.wizard .steps ol li.animate-active:before{animation:wizard-animate-active .5s ease-in}@keyframes wizard-animate-done{0%{font:400 1px/1 dashicons}100%{font:400 18px/1 dashicons}}@keyframes wizard-animate-active{0%{background:#ccc}100%{background:#1e8cbe}}#wizard-content{background:#fff;padding:20px;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.13)}#wizard-content ul{list-style:none;padding:0;margin-left:30px}#wizard-content ul li::before{content:" - ";font-weight:700}#wizard-content .form-group{margin-bottom:10px}#wizard-content .form-group label{display:block;margin-bottom:5px}#wizard-content .form-group input[type=password],#wizard-content .form-group input[type=text],#wizard-content .form-group input[type=url]{width:100%;padding:5px;border:1px solid #ccc;border-radius:3px}#wizard-modal{display:none;position:fixed;z-index:9999;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.4)}#wizard-modal-content{background-color:#fefefe;margin:15% auto;padding:20px;border:1px solid #888;width:50%}#wizard-modal-content p{text-align:center}#wizard-modal-footer{text-align:end}@media screen and (max-width:600px){.wizard{width:90%;padding:20px 10px}}
  • mobile-bankid-integration/trunk/assets/css/setup.full.css

    r3070283 r3178066  
    1919    text-align: center;
    2020    margin-bottom: 20px;
    21     color: #999;
     21    color: #4a4a4a;
    2222}
    2323
  • mobile-bankid-integration/trunk/assets/js/login.full.js

    r3070283 r3178066  
    11if (typeof jQuery === 'undefined') {
    2     throw new Error('This JavaScript requires jQuery');
     2    throw new Error('Unofficial Mobile BankID Integration requires jQuery on the login page.');
    33}
    44
    5 var orderRef = null;
    6 var bankidRefreshId = null;
     5let orderRef = null;
     6let bankidRefreshId = null;
    77
    8 jQuery(document).ready(function() {
    9     // Add event listener to login button
    10     jQuery('#bankid-login-button').on('click', function() {
    11         // Send REST API request to start BankID identification
    12         jQuery.ajax({
    13             url: mobile_bankid_integration_rest_api + '/identify',
    14             type: 'POST',
    15             dataType: 'json',
    16             success: function(data) {
    17                 if (data.orderRef !== null) {
    18                     loginPage(data.autoStartToken);
     8jQuery(document).ready(function () {
     9    function initializeLoginPage(autoStartToken) {
     10        const loginButtonContainer = jQuery("#bankid-login-button").parent().parent();
     11        const bankIdLoginContainer = jQuery('#bankid-login-container');
    1912
    20                     // Save orderRef
     13        const statusElement = jQuery('#bankid-status');
     14        statusElement.text(mobile_bankid_integration_login_localization.qr_instructions);
     15
     16        const cancelButton = jQuery('#cancel_bankid');
     17        cancelButton.on('click', cancelBankIdLogin);
     18
     19        const openBankidButton = jQuery('#open_bankid');
     20        openBankidButton.attr('href', `https://app.bankid.com/?autostarttoken=${autoStartToken}&redirect=null`);
     21
     22        loginButtonContainer.after(bankIdLoginContainer);
     23        loginButtonContainer.hide();
     24
     25        jQuery('h2').not('#bankid-login-h2').addClass('bankid-login-hidden');
     26
     27        bankIdLoginContainer.show();
     28
     29        jQuery('#login').addClass('bankid-login');
     30    }
     31
     32    async function handleStatus() {
     33        if (orderRef === null) {
     34            return;
     35        }
     36
     37        try {
     38            const response = await fetch(`${mobile_bankid_integration_rest_api}/status?orderRef=${orderRef}`);
     39            const data = await response.json();
     40
     41            if (data.qr !== null) {
     42                jQuery('#bankid-qr-code').attr('src', data.qr);
     43
     44                if (! jQuery('#bankid-qr-code-loading').hasClass('hidden')) {
     45                    jQuery('#bankid-qr-code-loading').addClass('hidden');
     46                }
     47            }
     48
     49            if (data.status === 'failed' && data.hintCode === 'startFailed') {
     50                identify((data) => {
    2151                    orderRef = data.orderRef;
     52                    const open_on_this_device = jQuery('#open_bankid');
     53                    open_on_this_device.attr('href', `https://app.bankid.com/?autostarttoken=${data.autoStartToken}&redirect=null`);
     54                });
     55                return;
     56            }
    2257
    23                     // Show QR code
    24                     bankidRefreshId = setInterval(status, 1000);
     58            handleStatusSwitch(data.status);
     59            if (data.hintCode !== null) {
     60                handleHintCode(data.hintCode);
     61            }
     62
     63            updateQRCodeTimeLeft(data.time_since_auth);
     64        } catch (error) {
     65            displayErrorMessage(mobile_bankid_integration_login_localization.something_went_wrong);
     66            console.error("Something went wrong. Debug info:\n\n", error);
     67        }
     68    }
     69
     70    function handleStatusSwitch(status) {
     71        switch (status) {
     72            case 'expired':
     73                displayErrorMessage(mobile_bankid_integration_login_localization.status_expired);
     74                break;
     75            case 'complete':
     76                completeLogin();
     77                break;
     78            case 'complete_no_user':
     79                displayErrorMessage(mobile_bankid_integration_login_localization.status_complete_no_user);
     80                break;
     81            case 'failed':
     82                displayErrorMessage(mobile_bankid_integration_login_localization.status_failed);
     83                break;
     84        }
     85    }
     86
     87    function updateQRCodeTimeLeft(timeSinceAuth) {
     88        const timeLeft = 30 - timeSinceAuth;
     89        const timeLeftPercentage = (timeLeft / 30) * 100;
     90        jQuery('#bankid-qr-code-timeleft').css('width', `${timeLeftPercentage}%`);
     91    }
     92
     93    function handleHintCode(hintCode) {
     94        const statusElement = jQuery('#bankid-status');
     95        const hintMessages = {
     96            'userCancel': mobile_bankid_integration_login_localization.hintcode_userCancel,
     97            'userSign': mobile_bankid_integration_login_localization.hintcode_userSign,
     98            'startFailed': mobile_bankid_integration_login_localization.hintcode_startFailed,
     99            'certificateErr': mobile_bankid_integration_login_localization.hintcode_certificateErr,
     100            'default': mobile_bankid_integration_login_localization.qr_instructions
     101        };
     102        statusElement.html(hintMessages[hintCode] || hintMessages['default']);
     103    }
     104
     105    function displayErrorMessage(message) {
     106        const statusElement = jQuery('#bankid-status');
     107        statusElement.html(message);
     108        jQuery('#bankid-qr-code').attr('src', '');
     109        jQuery('#bankid-qr-code-container').hide();
     110        jQuery('#open_bankid').hide();
     111        jQuery('#bankid-login-container').addClass('error');
     112        orderRef = null;
     113        clearInterval(bankidRefreshId);
     114    }
     115
     116    function completeLogin() {
     117        orderRef = null;
     118        jQuery('#bankid-status').html(mobile_bankid_integration_login_localization.status_complete);
     119        jQuery('#bankid-qr-code').attr('src', '');
     120        jQuery('#bankid-qr-code-container').hide();
     121        jQuery('#open_bankid').hide();
     122        window.location.href = mobile_bankid_integration_redirect_url;
     123        clearInterval(bankidRefreshId);
     124    }
     125
     126    function cancelBankIdLogin() {
     127        const loginButtonContainer = jQuery("#bankid-login-button").parent().parent();
     128        const bankIdLoginContainer = jQuery("#bankid-login-container");
     129        bankIdLoginContainer.hide();
     130        loginButtonContainer.show();
     131
     132        // Close accordions
     133        jQuery('#bankid-login-container button.accordion-button').removeClass('active');
     134        jQuery('#bankid-login-container button.accordion-button').attr('aria-expanded', 'false');
     135        jQuery('#bankid-login-container button.accordion-button').next().slideUp();
     136
     137        // Show loading spinner
     138        jQuery('#bankid-qr-code-loading').removeClass('hidden');
     139
     140        // Unhide qr code container
     141        jQuery('#bankid-qr-code-container').show();
     142
     143        jQuery('#login').removeClass('bankid-login');
     144        jQuery('.bankid-login-hidden').removeClass('bankid-login-hidden');
     145        clearInterval(bankidRefreshId);
     146    }
     147
     148    async function identify(callback) {
     149        try {
     150            const response = await fetch(`${mobile_bankid_integration_rest_api}/identify`, {
     151                method: 'POST',
     152                headers: {
     153                    'Content-Type': 'application/json'
    25154                }
    26             },
    27             error: function(data) {
    28                 // Show error message
    29                 console.log("Something went wrong with BankID identify request.");
     155            });
     156            const data = await response.json();
     157            if (data.orderRef === null) {
     158                throw new Error('Order reference is null');
    30159            }
     160            callback(data);
     161        } catch (error) {
     162            console.error("Something went wrong with BankID identify request.", error);
     163        }
     164    }
     165
     166    jQuery('#bankid-login-button').on('click', function (event) {
     167        event.preventDefault();
     168        identify((data) => {
     169            initializeLoginPage(data.autoStartToken);
     170            orderRef = data.orderRef;
     171            bankidRefreshId = setInterval(handleStatus, 1000);
    31172        });
    32173    });
    33 });
    34174
    35 function loginPage(autoStartToken) {
    36     document.getElementById("bankid-login-button").parentElement.parentElement.innerHTML = '<h2>'+mobile_bankid_integration_login_localization.title+'</h2><p id="bankid-status">'+mobile_bankid_integration_login_localization.qr_instructions+'</p><img id="bankid-qr-code" src="" alt="'+mobile_bankid_integration_login_localization.qr_alt+'" /><br><br><a href="#" class="button wp-element-button" onclick="window.location.reload();">'+mobile_bankid_integration_login_localization.cancel+'</a><a style="margin-left: 5px;" target="_blank" id="open_bankid" href="https://app.bankid.com/?autostarttoken='+autoStartToken+'&redirect=null" class="button wp-element-button">'+mobile_bankid_integration_login_localization.open_on_this_device+'</a>';
    37 }
     175    jQuery('#bankid-login-container button.accordion-button').on('click', function (event) {
     176        event.preventDefault();
     177        jQuery(this).toggleClass('active');
     178        jQuery(this).attr('aria-expanded', jQuery(this).attr('aria-expanded') === 'true' ? 'false' : 'true');
     179        jQuery(this).next().slideToggle();
     180    });
    38181
    39 function status() {
    40     if (orderRef === null || document.getElementById('bankid-qr-code').style.display == 'none') {
    41         return;
    42     }
    43     // Send REST API request to get QR code
    44     jQuery.ajax({
    45         url: mobile_bankid_integration_rest_api + '/status?orderRef=' + orderRef,
    46         type: 'GET',
    47         dataType: 'json',
    48         success: function(data) {
    49             if (data.qr !== null) {
    50                 // Show QR code
    51                 document.getElementById('bankid-qr-code').src = data.qr;
    52             }
    53 
    54             switch (data.status) {
    55                 case 'expired':
    56                     // Show error message
    57                     showErrorMessage(mobile_bankid_integration_login_localization.status_expired);
    58                     clearInterval(bankidRefreshId);
    59                     break;
    60                 case 'complete':
    61                     orderRef = null;
    62                     // Show success message
    63                     document.getElementById('bankid-status').innerHTML = mobile_bankid_integration_login_localization.status_complete;
    64                     document.getElementById('bankid-qr-code').src = '';
    65                     document.getElementById('bankid-qr-code').style.display = 'none';
    66                     document.getElementById('open_bankid').style.display = 'none';
    67                     // Redirect to my account page
    68                     window.location.href = mobile_bankid_integration_redirect_url;
    69                     clearInterval(bankidRefreshId);
    70                     break;
    71                 case 'complete_no_user':
    72                     showErrorMessage(mobile_bankid_integration_login_localization.status_complete_no_user);
    73                     clearInterval(bankidRefreshId);
    74                     break;
    75                 case 'failed':
    76                     showErrorMessage(mobile_bankid_integration_login_localization.status_failed);
    77                     clearInterval(bankidRefreshId);
    78                     break;
    79             }
    80             if (data.hintCode !== null) {
    81                 switch (data.hintCode) {
    82                     case 'userCancel':
    83                         document.getElementById('bankid-status').innerHTML = mobile_bankid_integration_login_localization.hintcode_userCancel;
    84                         break;
    85                     case 'userSign':
    86                         document.getElementById('bankid-status').innerHTML = mobile_bankid_integration_login_localization.hintcode_userSign;
    87                         break;
    88                     case 'startFailed':
    89                         document.getElementById('bankid-status').innerHTML = mobile_bankid_integration_login_localization.hintcode_startFailed;
    90                         break;
    91                     case 'certificateErr':
    92                         document.getElementById('bankid-status').innerHTML = mobile_bankid_integration_login_localization.hintcode_certificateErr;
    93                         break;
    94                     default:
    95                         document.getElementById('bankid-status').innerHTML = mobile_bankid_integration_login_localization.qr_instructions;
    96                         break;
    97                 }
    98             }
    99         },
    100         error: function(data) {
    101             if (orderRef === null) {
    102                 clearInterval(bankidRefreshId);
    103                 return;
    104             }
    105             // Show error message
    106             document.getElementById('bankid-status').innerHTML = mobile_bankid_integration_login_localization.something_went_wrong;
    107             document.getElementById('bankid-qr-code').src = '';
    108             document.getElementById('bankid-qr-code').style.display = 'none';
    109             document.getElementById('open_bankid').style.display = 'none';
    110             console.log("Something went wrong. Debug info:\n\n" + data);
    111             clearInterval(bankidRefreshId);
     182    jQuery('#bankid-qr-code-container').on('click', function (event) {
     183        jQuery(this).toggleClass('full-screen');
     184        jQuery(this).attr('aria-expanded', jQuery(this).attr('aria-expanded') === 'true' ? 'false' : 'true');
     185        jQuery(this).attr('aria-label', jQuery(this).attr('aria-label') === mobile_bankid_integration_login_localization.qr_click_to_enlarge ? mobile_bankid_integration_login_localization.qr_click_to_shrink : mobile_bankid_integration_login_localization.qr_click_to_enlarge);
     186        if (jQuery(this).hasClass('full-screen')) {
     187            jQuery('#login').after(this);
     188            jQuery('#login').hide();
     189            jQuery('#bankid-terms').hide();
     190        } else {
     191            jQuery('#bankid-status').after(this);
     192            jQuery('#login').show();
     193            jQuery('#bankid-terms').show();
    112194        }
    113195    });
    114 }
    115 
    116 function showErrorMessage(message) {
    117     document.getElementById('bankid-status').innerHTML = message;
    118     document.getElementById('bankid-qr-code').src = '';
    119     document.getElementById('bankid-qr-code').style.display = 'none';
    120     document.getElementById('open_bankid').style.display = 'none';
    121     orderRef = null;
    122     clearInterval(bankidRefreshId);
    123 }
     196});
  • mobile-bankid-integration/trunk/assets/js/login.js

    r3070283 r3178066  
    1 if(typeof jQuery==="undefined"){throw new Error("This JavaScript requires jQuery")}var orderRef=null;var bankidRefreshId=null;jQuery(document).ready(function(){jQuery("#bankid-login-button").on("click",function(){jQuery.ajax({url:mobile_bankid_integration_rest_api+"/identify",type:"POST",dataType:"json",success:function(data){if(data.orderRef!==null){loginPage(data.autoStartToken);orderRef=data.orderRef;bankidRefreshId=setInterval(status,1e3)}},error:function(data){console.log("Something went wrong with BankID identify request.")}})})});function loginPage(autoStartToken){document.getElementById("bankid-login-button").parentElement.parentElement.innerHTML="<h2>"+mobile_bankid_integration_login_localization.title+'</h2><p id="bankid-status">'+mobile_bankid_integration_login_localization.qr_instructions+'</p><img id="bankid-qr-code" src="" alt="'+mobile_bankid_integration_login_localization.qr_alt+'" /><br><br><a href="#" class="button wp-element-button" onclick="window.location.reload();">'+mobile_bankid_integration_login_localization.cancel+'</a><a style="margin-left: 5px;" target="_blank" id="open_bankid" href="https://app.bankid.com/?autostarttoken='+autoStartToken+'&redirect=null" class="button wp-element-button">'+mobile_bankid_integration_login_localization.open_on_this_device+"</a>"}function status(){if(orderRef===null||document.getElementById("bankid-qr-code").style.display=="none"){return}jQuery.ajax({url:mobile_bankid_integration_rest_api+"/status?orderRef="+orderRef,type:"GET",dataType:"json",success:function(data){if(data.qr!==null){document.getElementById("bankid-qr-code").src=data.qr}switch(data.status){case"expired":showErrorMessage(mobile_bankid_integration_login_localization.status_expired);clearInterval(bankidRefreshId);break;case"complete":orderRef=null;document.getElementById("bankid-status").innerHTML=mobile_bankid_integration_login_localization.status_complete;document.getElementById("bankid-qr-code").src="";document.getElementById("bankid-qr-code").style.display="none";document.getElementById("open_bankid").style.display="none";window.location.href=mobile_bankid_integration_redirect_url;clearInterval(bankidRefreshId);break;case"complete_no_user":showErrorMessage(mobile_bankid_integration_login_localization.status_complete_no_user);clearInterval(bankidRefreshId);break;case"failed":showErrorMessage(mobile_bankid_integration_login_localization.status_failed);clearInterval(bankidRefreshId);break}if(data.hintCode!==null){switch(data.hintCode){case"userCancel":document.getElementById("bankid-status").innerHTML=mobile_bankid_integration_login_localization.hintcode_userCancel;break;case"userSign":document.getElementById("bankid-status").innerHTML=mobile_bankid_integration_login_localization.hintcode_userSign;break;case"startFailed":document.getElementById("bankid-status").innerHTML=mobile_bankid_integration_login_localization.hintcode_startFailed;break;case"certificateErr":document.getElementById("bankid-status").innerHTML=mobile_bankid_integration_login_localization.hintcode_certificateErr;break;default:document.getElementById("bankid-status").innerHTML=mobile_bankid_integration_login_localization.qr_instructions;break}}},error:function(data){if(orderRef===null){clearInterval(bankidRefreshId);return}document.getElementById("bankid-status").innerHTML=mobile_bankid_integration_login_localization.something_went_wrong;document.getElementById("bankid-qr-code").src="";document.getElementById("bankid-qr-code").style.display="none";document.getElementById("open_bankid").style.display="none";console.log("Something went wrong. Debug info:\n\n"+data);clearInterval(bankidRefreshId)}})}function showErrorMessage(message){document.getElementById("bankid-status").innerHTML=message;document.getElementById("bankid-qr-code").src="";document.getElementById("bankid-qr-code").style.display="none";document.getElementById("open_bankid").style.display="none";orderRef=null;clearInterval(bankidRefreshId)}
     1if(typeof jQuery==="undefined"){throw new Error("Unofficial Mobile BankID Integration requires jQuery on the login page.")}let orderRef=null;let bankidRefreshId=null;jQuery(document).ready(function(){function initializeLoginPage(autoStartToken){const loginButtonContainer=jQuery("#bankid-login-button").parent().parent();const bankIdLoginContainer=jQuery("#bankid-login-container");const statusElement=jQuery("#bankid-status");statusElement.text(mobile_bankid_integration_login_localization.qr_instructions);const cancelButton=jQuery("#cancel_bankid");cancelButton.on("click",cancelBankIdLogin);const openBankidButton=jQuery("#open_bankid");openBankidButton.attr("href",`https://app.bankid.com/?autostarttoken=${autoStartToken}&redirect=null`);loginButtonContainer.after(bankIdLoginContainer);loginButtonContainer.hide();jQuery("h2").not("#bankid-login-h2").addClass("bankid-login-hidden");bankIdLoginContainer.show();jQuery("#login").addClass("bankid-login")}async function handleStatus(){if(orderRef===null){return}try{const response=await fetch(`${mobile_bankid_integration_rest_api}/status?orderRef=${orderRef}`);const data=await response.json();if(data.qr!==null){jQuery("#bankid-qr-code").attr("src",data.qr);if(!jQuery("#bankid-qr-code-loading").hasClass("hidden")){jQuery("#bankid-qr-code-loading").addClass("hidden")}}if(data.status==="failed"&&data.hintCode==="startFailed"){identify(data=>{orderRef=data.orderRef;const open_on_this_device=jQuery("#open_bankid");open_on_this_device.attr("href",`https://app.bankid.com/?autostarttoken=${data.autoStartToken}&redirect=null`)});return}handleStatusSwitch(data.status);if(data.hintCode!==null){handleHintCode(data.hintCode)}updateQRCodeTimeLeft(data.time_since_auth)}catch(error){displayErrorMessage(mobile_bankid_integration_login_localization.something_went_wrong);console.error("Something went wrong. Debug info:\n\n",error)}}function handleStatusSwitch(status){switch(status){case"expired":displayErrorMessage(mobile_bankid_integration_login_localization.status_expired);break;case"complete":completeLogin();break;case"complete_no_user":displayErrorMessage(mobile_bankid_integration_login_localization.status_complete_no_user);break;case"failed":displayErrorMessage(mobile_bankid_integration_login_localization.status_failed);break}}function updateQRCodeTimeLeft(timeSinceAuth){const timeLeft=30-timeSinceAuth;const timeLeftPercentage=timeLeft/30*100;jQuery("#bankid-qr-code-timeleft").css("width",`${timeLeftPercentage}%`)}function handleHintCode(hintCode){const statusElement=jQuery("#bankid-status");const hintMessages={userCancel:mobile_bankid_integration_login_localization.hintcode_userCancel,userSign:mobile_bankid_integration_login_localization.hintcode_userSign,startFailed:mobile_bankid_integration_login_localization.hintcode_startFailed,certificateErr:mobile_bankid_integration_login_localization.hintcode_certificateErr,default:mobile_bankid_integration_login_localization.qr_instructions};statusElement.html(hintMessages[hintCode]||hintMessages["default"])}function displayErrorMessage(message){const statusElement=jQuery("#bankid-status");statusElement.html(message);jQuery("#bankid-qr-code").attr("src","");jQuery("#bankid-qr-code-container").hide();jQuery("#open_bankid").hide();jQuery("#bankid-login-container").addClass("error");orderRef=null;clearInterval(bankidRefreshId)}function completeLogin(){orderRef=null;jQuery("#bankid-status").html(mobile_bankid_integration_login_localization.status_complete);jQuery("#bankid-qr-code").attr("src","");jQuery("#bankid-qr-code-container").hide();jQuery("#open_bankid").hide();window.location.href=mobile_bankid_integration_redirect_url;clearInterval(bankidRefreshId)}function cancelBankIdLogin(){const loginButtonContainer=jQuery("#bankid-login-button").parent().parent();const bankIdLoginContainer=jQuery("#bankid-login-container");bankIdLoginContainer.hide();loginButtonContainer.show();jQuery("#bankid-login-container button.accordion-button").removeClass("active");jQuery("#bankid-login-container button.accordion-button").attr("aria-expanded","false");jQuery("#bankid-login-container button.accordion-button").next().slideUp();jQuery("#bankid-qr-code-loading").removeClass("hidden");jQuery("#bankid-qr-code-container").show();jQuery("#login").removeClass("bankid-login");jQuery(".bankid-login-hidden").removeClass("bankid-login-hidden");clearInterval(bankidRefreshId)}async function identify(callback){try{const response=await fetch(`${mobile_bankid_integration_rest_api}/identify`,{method:"POST",headers:{"Content-Type":"application/json"}});const data=await response.json();if(data.orderRef===null){throw new Error("Order reference is null")}callback(data)}catch(error){console.error("Something went wrong with BankID identify request.",error)}}jQuery("#bankid-login-button").on("click",function(event){event.preventDefault();identify(data=>{initializeLoginPage(data.autoStartToken);orderRef=data.orderRef;bankidRefreshId=setInterval(handleStatus,1e3)})});jQuery("#bankid-login-container button.accordion-button").on("click",function(event){event.preventDefault();jQuery(this).toggleClass("active");jQuery(this).attr("aria-expanded",jQuery(this).attr("aria-expanded")==="true"?"false":"true");jQuery(this).next().slideToggle()});jQuery("#bankid-qr-code-container").on("click",function(event){jQuery(this).toggleClass("full-screen");jQuery(this).attr("aria-expanded",jQuery(this).attr("aria-expanded")==="true"?"false":"true");jQuery(this).attr("aria-label",jQuery(this).attr("aria-label")===mobile_bankid_integration_login_localization.qr_click_to_enlarge?mobile_bankid_integration_login_localization.qr_click_to_shrink:mobile_bankid_integration_login_localization.qr_click_to_enlarge);if(jQuery(this).hasClass("full-screen")){jQuery("#login").after(this);jQuery("#login").hide();jQuery("#bankid-terms").hide()}else{jQuery("#bankid-status").after(this);jQuery("#login").show();jQuery("#bankid-terms").show()}})});
  • mobile-bankid-integration/trunk/includes/admin/class-admin.php

    r3106088 r3178066  
    217217                <label for="mobile-bankid-integration-terms"><?php esc_html_e( 'Terms to show with login (Supports HTML)', 'mobile-bankid-integration' ); ?></label>
    218218                <textarea name="mobile-bankid-integration-terms" id="mobile-bankid-integration-terms" rows="5"><?php // phpcs:ignore -- PHP tag needed to prevent whitespace in textarea.
    219                                                                                                                 echo wp_kses(
    220                                                                                                                     get_option( 'mobile_bankid_integration_terms', __( 'By logging in using Mobile BankID you agree to our Terms of Service and Privacy Policy.', 'mobile-bankid-integration' ) ),
    221                                                                                                                     array(
    222                                                                                                                         'a'      => array(
    223                                                                                                                             'href'   => array(),
    224                                                                                                                             'title'  => array(),
    225                                                                                                                             'target' => array(),
    226                                                                                                                         ),
    227                                                                                                                         'br'     => array(),
    228                                                                                                                         'em'     => array(),
    229                                                                                                                         'strong' => array(),
    230                                                                                                                         'i'      => array(),
    231                                                                                                                     )
    232                                                                                                                 );
    233                                                                                                                 // phpcs:ignore -- PHP tag needed to prevent whitespace in textarea.
    234                                                                                                                 ?></textarea>
     219                    echo wp_kses(
     220                        get_option( 'mobile_bankid_integration_terms', __( 'By logging in using Mobile BankID you agree to our Terms of Service and Privacy Policy.', 'mobile-bankid-integration' ) ),
     221                        array(
     222                            'a'      => array(
     223                                'href'   => array(),
     224                                'title'  => array(),
     225                                'target' => array(),
     226                            ),
     227                            'br'     => array(),
     228                            'em'     => array(),
     229                            'strong' => array(),
     230                            'i'      => array(),
     231                        )
     232                    );
     233                    // phpcs:ignore -- PHP tag needed to prevent whitespace in textarea.
     234                    ?></textarea>
    235235                <p class="description"><?php esc_html_e( 'Following HTML elements are supported: a, br, em, strong and i. All others will be escaped.', 'mobile-bankid-integration' ); ?></p>
    236236            </div>
  • mobile-bankid-integration/trunk/includes/class-core.php

    r3106088 r3178066  
    6565    private function create_bankid_service() {
    6666        if ( 'test' === get_option( 'mobile_bankid_integration_env' ) ) {
    67             $this->bankid_service = new BankID();
     67            $this->bankid_service = new BankID(
     68                BankID::ENVIRONMENT_TEST,
     69                MOBILE_BANKID_INTEGRATION_PLUGIN_DIR . 'assets/certs/test.pem',
     70                MOBILE_BANKID_INTEGRATION_PLUGIN_DIR . 'assets/certs/test_cacert.cer',
     71                null,
     72                'qwerty123'
     73            );
    6874        } else {
    6975            $this->bankid_service = new BankID(
  • mobile-bankid-integration/trunk/includes/integrations/woocommerce.php

    r3106088 r3178066  
    106106                }
    107107            );
     108            add_action( 'woocommerce_login_form_end', function () {
     109                $this->login_container( 'div' );
     110            } );
    108111        }
    109112    }
     
    126129            return;
    127130        }
    128         add_action( 'woocommerce_checkout_before_customer_details', array( $this, 'checkout_block' ) );
     131        add_action( 'woocommerce_checkout_before_customer_details', array( $this, 'checkout_block' ), 10 );
    129132        add_action( 'woocommerce_after_checkout_validation', array( $this, 'validate' ), 10, 2 );
    130133    }
     
    165168                ?>
    166169            </div>
     170            <?php
     171            $login->login_container( 'div', array( 'wc-block-components-notice-banner', 'is-info' ) );
     172            ?>
    167173        </div>
    168174        <?php
  • mobile-bankid-integration/trunk/includes/wp-login/class-api.php

    r3106088 r3178066  
    6161     * Handle status request.
    6262     *
    63      * @return array
    64      */
    65     public function status(): array {
     63     * @return array|\WP_Error
     64     */
     65    public function status() {
    6666        $instance = Core::$instance;
    6767
  • mobile-bankid-integration/trunk/includes/wp-login/class-login.php

    r3106088 r3178066  
    1717        if ( get_option( 'mobile_bankid_integration_wplogin' ) === 'as_alternative' && ( get_option( 'mobile_bankid_integration_certificate' ) && get_option( 'mobile_bankid_integration_password' ) && get_option( 'mobile_bankid_integration_env' ) ) ) {
    1818            add_action( 'login_form', array( $this, 'login_button' ), 40 );
     19            add_action( 'login_footer', array( $this, 'login_container' ) );
    1920            add_action(
    2021                'login_footer',
     
    3738            $redirect = '/wp-admin/';
    3839        }
    39         echo '<p><a href="#" target="_self" id="bankid-login-button" class="button wp-element-button" style="width: 100%; text-align: center; margin-bottom: 1em;">' . esc_html__( 'Login with BankID', 'mobile-bankid-integration' ) . '</a></p>';
    40         echo '<noscript><style>#bankid-login-button { display: none; height: 0; margin: 0; }</style></noscript>';
     40        ?>
     41        <p>
     42            <button id="bankid-login-button" class="button wp-element-button"><?php esc_html_e( 'Login with BankID', 'mobile-bankid-integration' ) ?></button>
     43        </p>
     44        <?php
    4145        $this->load_scripts( $redirect );
     46    }
     47
     48    /**
     49     * Add login container to login page.
     50     *
     51     * @return void
     52     */
     53    public function login_container($dom_element = 'form', $class = array()) {
     54        if ( ! in_array( $dom_element, array( 'form', 'div', 'section' ), true ) ) {
     55            $dom_element = 'form';
     56        }
     57        ?>
     58        <<?php echo esc_attr( $dom_element ); ?> id="bankid-login-container" class="<?php echo esc_attr( implode( ' ', $class ) ); ?>" style="display: none;">
     59            <h2 id="bankid-login-h2"><?php esc_html_e( 'Login with BankID', 'mobile-bankid-integration' ) ?></h2>
     60            <p id="bankid-status"><?php esc_html_e( 'Scan the QR code with your Mobile BankID app.', 'mobile-bankid-integration' ) ?></p>
     61            <div id="bankid-qr-code-container" role="button" aria-label="<?php esc_attr_e( 'Enlarge the QR code', 'mobile-bankid-integration' ) ?>">
     62                <img id="bankid-qr-code" src="" alt="<?php esc_attr_e( 'QR code', 'mobile-bankid-integration' ) ?>">
     63                <div id="bankid-qr-code-loading" aria-hidden="true">
     64                    <div class="spinner"></div>
     65                </div>
     66                <div id="bankid-qr-code-timeleft" aria-hidden="true"></div>
     67            </div>
     68            <div class="accordion screen-reader-accordion" role="region">
     69                <button class="accordion-button" aria-expanded="false" aria-controls="bankid-screen-reader-help"><?php esc_html_e( 'If you use a screen reader', 'mobile-bankid-integration' ) ?><span class="icon" aria-hidden="true"></span></button>
     70                <div id="bankid-screen-reader-help" class="accordion-content">
     71                    <p><?php esc_html_e( 'The most common problem is that the QR code doesn\'t fit on the screen. Please try to:', 'mobile-bankid-integration' ) ?></p>
     72                    <ul>
     73                        <li><?php esc_html_e( 'Ensure that the screen is switched on and Screen Curtain or similar functions are switched off.', 'mobile-bankid-integration' ) ?></li>
     74                        <li><?php esc_html_e( 'Zoom out in your browser by pressing Ctrl or Cmd-0.', 'mobile-bankid-integration' ) ?></li>
     75                        <li><?php esc_html_e( 'Zoom out with magnification tools such as ZoomText.', 'mobile-bankid-integration' ) ?></li>
     76                        <li><?php esc_html_e( 'Ensure the browser window is maximized.', 'mobile-bankid-integration' ) ?></li>
     77                        <li><?php esc_html_e( 'Hold your phone in portrait mode at an arm\'s lengths distance from the screen when you scan the QR code.', 'mobile-bankid-integration' ) ?></li>
     78                    </ul>
     79                    <p><?php esc_html_e( 'You can also click on the QR code above for it to be displayed bigger.', 'mobile-bankid-integration' ) ?></p>
     80                </div>
     81            </div>
     82            <a href="#" id="cancel_bankid" class="button wp-element-button"><?php esc_html_e( 'Cancel', 'mobile-bankid-integration' ) ?></a>
     83            <a target="_blank" id="open_bankid" href="#" class="button wp-element-button" style="margin-left: 5px;"><?php esc_html_e( 'Start the BankID app', 'mobile-bankid-integration' ) ?></a>
     84        </<?php echo esc_attr( $dom_element ); ?>>
     85        <?php
    4286    }
    4387
     
    5397        }
    5498        ?>
    55         <p class="bankid-terms">
     99        <p id="bankid-terms" style="font-size: <?php echo( esc_html( strval( $font_size ) ) ); ?>rem;">
    56100            <?php
    57101            echo wp_kses(
     
    71115            ?>
    72116        </p>
    73         <style>
    74             .bankid-terms {
    75                 text-align: center;
    76                 font-size: <?php echo( esc_html( strval( $font_size ) ) ); ?>rem;
    77                 margin-top: 0;
    78                 padding-top: 0;
    79             }
    80         </style>
    81117        <?php
    82118    }
     
    97133            'mobile_bankid_integration_login_localization',
    98134            array(
    99                 'title'                   => esc_html__( 'Login with BankID', 'mobile-bankid-integration' ),
     135                'qr_click_to_enlarge'     => esc_attr__( 'Enlarge the QR code', 'mobile-bankid-integration' ),
     136                'qr_click_to_shrink'      => esc_attr__( 'Shrink the QR code back to normal size', 'mobile-bankid-integration' ),
    100137                'qr_instructions'         => esc_html__( 'Scan the QR code with your Mobile BankID app.', 'mobile-bankid-integration' ),
    101                 'qr_alt'                  => esc_html__( 'QR code', 'mobile-bankid-integration' ),
    102                 'cancel'                  => esc_html__( 'Cancel', 'mobile-bankid-integration' ),
    103                 'open_on_this_device'     => esc_html__( 'Start the BankID app', 'mobile-bankid-integration' ),
    104138                'status_expired'          => esc_html__( 'BankID identification session has expired. Please try again.', 'mobile-bankid-integration' ),
    105139                'status_complete'         => esc_html__( 'BankID identification completed. Redirecting...', 'mobile-bankid-integration' ),
     
    116150        );
    117151        wp_add_inline_script( 'mobile-bankid-integration-login', 'var mobile_bankid_integration_rest_api = "' . rest_url( 'mobile-bankid-integration/v1/login' ) . '"; var mobile_bankid_integration_redirect_url = "' . $redirect . '";', 'before' );
     152
     153        wp_enqueue_style( 'mobile-bankid-integration-login', MOBILE_BANKID_INTEGRATION_PLUGIN_URL . 'assets/css/login.css', array(), MOBILE_BANKID_INTEGRATION_VERSION );
    118154    }
    119155}
  • mobile-bankid-integration/trunk/mobile-bankid-integration.php

    r3106088 r3178066  
    33Plugin Name: Mobile BankID Integration
    44Description: A plugin that allows you to integrate Mobile BankID with your WordPress site.
    5 Version: 1.3
     5Version: 1.4
    66Author: Jamie Blomerus
    77Author URI: https://github.com/jamieblomerus
     
    1414
    1515// Define constants.
    16 define( 'MOBILE_BANKID_INTEGRATION_VERSION', '1.3' );
     16define( 'MOBILE_BANKID_INTEGRATION_VERSION', '1.4' );
    1717define( 'MOBILE_BANKID_INTEGRATION_PLUGIN_FILE', __FILE__ );
    1818define( 'MOBILE_BANKID_INTEGRATION_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
  • mobile-bankid-integration/trunk/readme.txt

    r3106189 r3178066  
    33Tags: mobile bankid, bankid, authentication
    44Requires at least: 5.2
    5 Tested up to: 6.5
    6 Stable tag: 1.3
     5Tested up to: 6.7
     6Stable tag: 1.4
    77Requires PHP: 7.2
    88License: GPLv3 or later
     
    4848== Changelog ==
    4949
     50= 1.4 =
     51* Recreated the login screen to be more user-friendly, modern and accessible.
     52* Fixed a contrast issue within the setup wizard.
     53* Resolved a SSL verification issue which caused the plugin to not work with the BankID test environment.
     54
    5055= 1.3 =
    5156* Added credits tab to admin page
     
    8489== Upgrade Notice ==
    8590
     91= 1.4 =
     92A major update that changes the login screen and fixes some bugs.
     93
    8694= 1.3 =
    8795Fixes some bugs and adds some minor new features.
  • mobile-bankid-integration/trunk/vendor/autoload.php

    r3106088 r3178066  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit98b78f29606e95d04bc35c9b41f7b376::getLoader();
     25return ComposerAutoloaderInit157f05f27a3285b4e529ec8dec75a307::getLoader();
  • mobile-bankid-integration/trunk/vendor/chillerlan/php-settings-container/README.md

    r3070283 r3178066  
    4848The `SettingsContainerInterface` (wrapped in`SettingsContainerAbstract`) provides plug-in functionality for immutable object properties and adds some fancy, like loading/saving JSON, arrays etc.
    4949It takes an `iterable` as the only constructor argument and calls a method with the trait's name on invocation (`MyTrait::MyTrait()`) for each used trait.
     50
     51A PHPStan ruleset to exclude errors generated by accessing magic properties on `SettingsContainerInterface` can be found in `rules-magic-access.neon`.
     52
    5053
    5154### Simple usage
  • mobile-bankid-integration/trunk/vendor/chillerlan/php-settings-container/composer.json

    r3070283 r3178066  
    2525    },
    2626    "require-dev": {
    27         "phan/phan": "^5.4",
    2827        "phpmd/phpmd": "^2.15",
     28        "phpstan/phpstan": "^1.11",
     29        "phpstan/phpstan-deprecation-rules": "^1.2",
    2930        "phpunit/phpunit": "^10.5",
    30         "squizlabs/php_codesniffer": "^3.9"
     31        "squizlabs/php_codesniffer": "^3.10"
    3132    },
    3233    "autoload": {
    3334        "psr-4": {
    34             "chillerlan\\Settings\\": "src/"
     35            "chillerlan\\Settings\\": "src"
    3536        }
    3637    },
    3738    "autoload-dev": {
    3839        "psr-4": {
    39             "chillerlan\\SettingsTest\\": "tests/"
     40            "chillerlan\\SettingsTest\\": "tests"
    4041        }
    4142    },
    4243    "scripts": {
    4344        "phpunit": "@php vendor/bin/phpunit",
    44         "phan": "@php vendor/bin/phan"
     45        "phpstan": "@php vendor/bin/phpstan"
    4546    },
    4647    "config": {
  • mobile-bankid-integration/trunk/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php

    r3070283 r3178066  
    1212namespace chillerlan\Settings;
    1313
    14 use InvalidArgumentException, ReflectionClass, ReflectionProperty;
    15 use function array_keys, get_object_vars, is_object, json_decode,
    16     json_encode, method_exists, property_exists, serialize, unserialize;
     14use InvalidArgumentException, JsonException, ReflectionClass, ReflectionProperty;
     15use function array_keys, get_object_vars, is_object, json_decode, json_encode,
     16    json_last_error_msg, method_exists, property_exists, serialize, unserialize;
    1717use const JSON_THROW_ON_ERROR;
    1818
     
    2121    /**
    2222     * SettingsContainerAbstract constructor.
     23     *
     24     * @phpstan-param array<string, mixed> $properties
    2325     */
    2426    public function __construct(iterable|null $properties = null){
     
    147149     */
    148150    public function toJSON(int|null $jsonOptions = null):string{
    149         return json_encode($this, ($jsonOptions ?? 0));
     151        $json = json_encode($this, ($jsonOptions ?? 0));
     152
     153        if($json === false){
     154            throw new JsonException(json_last_error_msg());
     155        }
     156
     157        return $json;
    150158    }
    151159
     
    154162     */
    155163    public function fromJSON(string $json):static{
     164        /** @phpstan-var array<string, mixed> $data */
    156165        $data = json_decode($json, true, 512, JSON_THROW_ON_ERROR);
    157166
     
    161170    /**
    162171     * @inheritdoc
     172     * @return array<string, mixed>
    163173     */
    164174    public function jsonSerialize():array{
     
    229239     * @inheritdoc
    230240     * @see \chillerlan\Settings\SettingsContainerInterface::fromIterable()
     241     *
     242     * @param array<string, mixed> $data
    231243     */
    232244    public function __unserialize(array $data):void{
  • mobile-bankid-integration/trunk/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php

    r3070283 r3178066  
    5050     *
    5151     * The values will be run through the magic __get(), which may also call custom getters.
     52     *
     53     * @return array<string, mixed>
    5254     */
    5355    public function toArray():array;
     
    5759     *
    5860     * The values will be run through the magic __set(), which may also call custom setters.
     61     *
     62     *  @phpstan-param array<string, mixed> $properties
    5963     */
    6064    public function fromIterable(iterable $properties):static;
     
    6266    /**
    6367     * Returns a JSON representation of the settings object
     68     *
    6469     * @see \json_encode()
    6570     * @see \chillerlan\Settings\SettingsContainerInterface::toArray()
     71     *
     72     * @throws \JsonException
    6673     */
    6774    public function toJSON(int|null $jsonOptions = null):string;
     
    7077     * Sets properties from a given JSON string
    7178     *
     79     * @see \chillerlan\Settings\SettingsContainerInterface::fromIterable()
     80     *
    7281     * @throws \Exception
    7382     * @throws \JsonException
    74      * @see \chillerlan\Settings\SettingsContainerInterface::fromIterable()
    7583     */
    7684    public function fromJSON(string $json):static;
  • mobile-bankid-integration/trunk/vendor/composer/autoload_psr4.php

    r3106088 r3178066  
    99    'chillerlan\\Settings\\' => array($vendorDir . '/chillerlan/php-settings-container/src'),
    1010    'chillerlan\\QRCode\\' => array($vendorDir . '/chillerlan/php-qrcode/src'),
    11     'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src', $vendorDir . '/psr/http-factory/src'),
     11    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
    1212    'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
    1313    'Personnummer\\' => array($vendorDir . '/personnummer/personnummer/src'),
  • mobile-bankid-integration/trunk/vendor/composer/autoload_real.php

    r3106088 r3178066  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit98b78f29606e95d04bc35c9b41f7b376
     5class ComposerAutoloaderInit157f05f27a3285b4e529ec8dec75a307
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit98b78f29606e95d04bc35c9b41f7b376', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit157f05f27a3285b4e529ec8dec75a307', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit98b78f29606e95d04bc35c9b41f7b376', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit157f05f27a3285b4e529ec8dec75a307', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit98b78f29606e95d04bc35c9b41f7b376::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit157f05f27a3285b4e529ec8dec75a307::getInitializer($loader));
    3333
    3434        $loader->register(true);
    3535
    36         $filesToLoad = \Composer\Autoload\ComposerStaticInit98b78f29606e95d04bc35c9b41f7b376::$files;
     36        $filesToLoad = \Composer\Autoload\ComposerStaticInit157f05f27a3285b4e529ec8dec75a307::$files;
    3737        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
    3838            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • mobile-bankid-integration/trunk/vendor/composer/autoload_static.php

    r3106088 r3178066  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit98b78f29606e95d04bc35c9b41f7b376
     7class ComposerStaticInit157f05f27a3285b4e529ec8dec75a307
    88{
    99    public static $files = array (
     
    4848        'Psr\\Http\\Message\\' =>
    4949        array (
    50             0 => __DIR__ . '/..' . '/psr/http-message/src',
    51             1 => __DIR__ . '/..' . '/psr/http-factory/src',
     50            0 => __DIR__ . '/..' . '/psr/http-factory/src',
     51            1 => __DIR__ . '/..' . '/psr/http-message/src',
    5252        ),
    5353        'Psr\\Http\\Client\\' =>
     
    217217    {
    218218        return \Closure::bind(function () use ($loader) {
    219             $loader->prefixLengthsPsr4 = ComposerStaticInit98b78f29606e95d04bc35c9b41f7b376::$prefixLengthsPsr4;
    220             $loader->prefixDirsPsr4 = ComposerStaticInit98b78f29606e95d04bc35c9b41f7b376::$prefixDirsPsr4;
    221             $loader->classMap = ComposerStaticInit98b78f29606e95d04bc35c9b41f7b376::$classMap;
     219            $loader->prefixLengthsPsr4 = ComposerStaticInit157f05f27a3285b4e529ec8dec75a307::$prefixLengthsPsr4;
     220            $loader->prefixDirsPsr4 = ComposerStaticInit157f05f27a3285b4e529ec8dec75a307::$prefixDirsPsr4;
     221            $loader->classMap = ComposerStaticInit157f05f27a3285b4e529ec8dec75a307::$classMap;
    222222
    223223        }, null, ClassLoader::class);
  • mobile-bankid-integration/trunk/vendor/composer/installed.json

    r3106088 r3178066  
    8787        {
    8888            "name": "chillerlan/php-settings-container",
    89             "version": "3.2.0",
    90             "version_normalized": "3.2.0.0",
     89            "version": "3.2.1",
     90            "version_normalized": "3.2.1.0",
    9191            "source": {
    9292                "type": "git",
    9393                "url": "https://github.com/chillerlan/php-settings-container.git",
    94                 "reference": "8f93648fac8e6bacac8e00a8d325eba4950295e6"
    95             },
    96             "dist": {
    97                 "type": "zip",
    98                 "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/8f93648fac8e6bacac8e00a8d325eba4950295e6",
    99                 "reference": "8f93648fac8e6bacac8e00a8d325eba4950295e6",
     94                "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681"
     95            },
     96            "dist": {
     97                "type": "zip",
     98                "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/95ed3e9676a1d47cab2e3174d19b43f5dbf52681",
     99                "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681",
    100100                "shasum": ""
    101101            },
     
    105105            },
    106106            "require-dev": {
    107                 "phan/phan": "^5.4",
    108107                "phpmd/phpmd": "^2.15",
     108                "phpstan/phpstan": "^1.11",
     109                "phpstan/phpstan-deprecation-rules": "^1.2",
    109110                "phpunit/phpunit": "^10.5",
    110                 "squizlabs/php_codesniffer": "^3.9"
    111             },
    112             "time": "2024-03-02T20:07:15+00:00",
    113             "type": "library",
    114             "installation-source": "dist",
    115             "autoload": {
    116                 "psr-4": {
    117                     "chillerlan\\Settings\\": "src/"
     111                "squizlabs/php_codesniffer": "^3.10"
     112            },
     113            "time": "2024-07-16T11:13:48+00:00",
     114            "type": "library",
     115            "installation-source": "dist",
     116            "autoload": {
     117                "psr-4": {
     118                    "chillerlan\\Settings\\": "src"
    118119                }
    119120            },
     
    155156        {
    156157            "name": "guzzlehttp/guzzle",
    157             "version": "7.8.1",
    158             "version_normalized": "7.8.1.0",
     158            "version": "7.9.2",
     159            "version_normalized": "7.9.2.0",
    159160            "source": {
    160161                "type": "git",
    161162                "url": "https://github.com/guzzle/guzzle.git",
    162                 "reference": "41042bc7ab002487b876a0683fc8dce04ddce104"
    163             },
    164             "dist": {
    165                 "type": "zip",
    166                 "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104",
    167                 "reference": "41042bc7ab002487b876a0683fc8dce04ddce104",
     163                "reference": "d281ed313b989f213357e3be1a179f02196ac99b"
     164            },
     165            "dist": {
     166                "type": "zip",
     167                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b",
     168                "reference": "d281ed313b989f213357e3be1a179f02196ac99b",
    168169                "shasum": ""
    169170            },
    170171            "require": {
    171172                "ext-json": "*",
    172                 "guzzlehttp/promises": "^1.5.3 || ^2.0.1",
    173                 "guzzlehttp/psr7": "^1.9.1 || ^2.5.1",
     173                "guzzlehttp/promises": "^1.5.3 || ^2.0.3",
     174                "guzzlehttp/psr7": "^2.7.0",
    174175                "php": "^7.2.5 || ^8.0",
    175176                "psr/http-client": "^1.0",
     
    182183                "bamarni/composer-bin-plugin": "^1.8.2",
    183184                "ext-curl": "*",
    184                 "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
     185                "guzzle/client-integration-tests": "3.0.2",
    185186                "php-http/message-factory": "^1.1",
    186                 "phpunit/phpunit": "^8.5.36 || ^9.6.15",
     187                "phpunit/phpunit": "^8.5.39 || ^9.6.20",
    187188                "psr/log": "^1.1 || ^2.0 || ^3.0"
    188189            },
     
    192193                "psr/log": "Required for using the Log middleware"
    193194            },
    194             "time": "2023-12-03T20:35:24+00:00",
     195            "time": "2024-07-24T11:22:20+00:00",
    195196            "type": "library",
    196197            "extra": {
     
    264265            "support": {
    265266                "issues": "https://github.com/guzzle/guzzle/issues",
    266                 "source": "https://github.com/guzzle/guzzle/tree/7.8.1"
     267                "source": "https://github.com/guzzle/guzzle/tree/7.9.2"
    267268            },
    268269            "funding": [
     
    284285        {
    285286            "name": "guzzlehttp/promises",
    286             "version": "2.0.2",
    287             "version_normalized": "2.0.2.0",
     287            "version": "2.0.4",
     288            "version_normalized": "2.0.4.0",
    288289            "source": {
    289290                "type": "git",
    290291                "url": "https://github.com/guzzle/promises.git",
    291                 "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223"
    292             },
    293             "dist": {
    294                 "type": "zip",
    295                 "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223",
    296                 "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223",
     292                "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455"
     293            },
     294            "dist": {
     295                "type": "zip",
     296                "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
     297                "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
    297298                "shasum": ""
    298299            },
     
    302303            "require-dev": {
    303304                "bamarni/composer-bin-plugin": "^1.8.2",
    304                 "phpunit/phpunit": "^8.5.36 || ^9.6.15"
    305             },
    306             "time": "2023-12-03T20:19:20+00:00",
     305                "phpunit/phpunit": "^8.5.39 || ^9.6.20"
     306            },
     307            "time": "2024-10-17T10:06:22+00:00",
    307308            "type": "library",
    308309            "extra": {
     
    350351            "support": {
    351352                "issues": "https://github.com/guzzle/promises/issues",
    352                 "source": "https://github.com/guzzle/promises/tree/2.0.2"
     353                "source": "https://github.com/guzzle/promises/tree/2.0.4"
    353354            },
    354355            "funding": [
     
    370371        {
    371372            "name": "guzzlehttp/psr7",
    372             "version": "2.6.2",
    373             "version_normalized": "2.6.2.0",
     373            "version": "2.7.0",
     374            "version_normalized": "2.7.0.0",
    374375            "source": {
    375376                "type": "git",
    376377                "url": "https://github.com/guzzle/psr7.git",
    377                 "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221"
    378             },
    379             "dist": {
    380                 "type": "zip",
    381                 "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221",
    382                 "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221",
     378                "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201"
     379            },
     380            "dist": {
     381                "type": "zip",
     382                "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
     383                "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
    383384                "shasum": ""
    384385            },
     
    395396            "require-dev": {
    396397                "bamarni/composer-bin-plugin": "^1.8.2",
    397                 "http-interop/http-factory-tests": "^0.9",
    398                 "phpunit/phpunit": "^8.5.36 || ^9.6.15"
     398                "http-interop/http-factory-tests": "0.9.0",
     399                "phpunit/phpunit": "^8.5.39 || ^9.6.20"
    399400            },
    400401            "suggest": {
    401402                "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
    402403            },
    403             "time": "2023-12-03T20:05:35+00:00",
     404            "time": "2024-07-18T11:15:46+00:00",
    404405            "type": "library",
    405406            "extra": {
     
    469470            "support": {
    470471                "issues": "https://github.com/guzzle/psr7/issues",
    471                 "source": "https://github.com/guzzle/psr7/tree/2.6.2"
     472                "source": "https://github.com/guzzle/psr7/tree/2.7.0"
    472473            },
    473474            "funding": [
  • mobile-bankid-integration/trunk/vendor/composer/installed.php

    r3106088 r3178066  
    44        'pretty_version' => 'dev-trunk',
    55        'version' => 'dev-trunk',
    6         'reference' => 'a98e6c5268e731eb827275e8a6cbab799015651d',
     6        'reference' => 'eda3de5ee6e36223b306861696b1d726d31576a6',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-trunk',
    1515            'version' => 'dev-trunk',
    16             'reference' => 'a98e6c5268e731eb827275e8a6cbab799015651d',
     16            'reference' => 'eda3de5ee6e36223b306861696b1d726d31576a6',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
     
    3030        ),
    3131        'chillerlan/php-settings-container' => array(
    32             'pretty_version' => '3.2.0',
    33             'version' => '3.2.0.0',
    34             'reference' => '8f93648fac8e6bacac8e00a8d325eba4950295e6',
     32            'pretty_version' => '3.2.1',
     33            'version' => '3.2.1.0',
     34            'reference' => '95ed3e9676a1d47cab2e3174d19b43f5dbf52681',
    3535            'type' => 'library',
    3636            'install_path' => __DIR__ . '/../chillerlan/php-settings-container',
     
    3939        ),
    4040        'guzzlehttp/guzzle' => array(
    41             'pretty_version' => '7.8.1',
    42             'version' => '7.8.1.0',
    43             'reference' => '41042bc7ab002487b876a0683fc8dce04ddce104',
     41            'pretty_version' => '7.9.2',
     42            'version' => '7.9.2.0',
     43            'reference' => 'd281ed313b989f213357e3be1a179f02196ac99b',
    4444            'type' => 'library',
    4545            'install_path' => __DIR__ . '/../guzzlehttp/guzzle',
     
    4848        ),
    4949        'guzzlehttp/promises' => array(
    50             'pretty_version' => '2.0.2',
    51             'version' => '2.0.2.0',
    52             'reference' => 'bbff78d96034045e58e13dedd6ad91b5d1253223',
     50            'pretty_version' => '2.0.4',
     51            'version' => '2.0.4.0',
     52            'reference' => 'f9c436286ab2892c7db7be8c8da4ef61ccf7b455',
    5353            'type' => 'library',
    5454            'install_path' => __DIR__ . '/../guzzlehttp/promises',
     
    5757        ),
    5858        'guzzlehttp/psr7' => array(
    59             'pretty_version' => '2.6.2',
    60             'version' => '2.6.2.0',
    61             'reference' => '45b30f99ac27b5ca93cb4831afe16285f57b8221',
     59            'pretty_version' => '2.7.0',
     60            'version' => '2.7.0.0',
     61            'reference' => 'a70f5c95fb43bc83f07c9c948baa0dc1829bf201',
    6262            'type' => 'library',
    6363            'install_path' => __DIR__ . '/../guzzlehttp/psr7',
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/CHANGELOG.md

    r3070283 r3178066  
    22
    33Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version.
     4
     5
     6## 7.9.2 - 2024-07-24
     7
     8### Fixed
     9
     10- Adjusted handler selection to use cURL if its version is 7.21.2 or higher, rather than 7.34.0
     11
     12
     13## 7.9.1 - 2024-07-19
     14
     15### Fixed
     16
     17- Fix TLS 1.3 check for HTTP/2 requests
     18
     19
     20## 7.9.0 - 2024-07-18
     21
     22### Changed
     23
     24- Improve protocol version checks to provide feedback around unsupported protocols
     25- Only select the cURL handler by default if 7.34.0 or higher is linked
     26- Improved `CurlMultiHandler` to avoid busy wait if possible
     27- Dropped support for EOL `guzzlehttp/psr7` v1
     28- Improved URI user info redaction in errors
     29
     30## 7.8.2 - 2024-07-18
     31
     32### Added
     33
     34- Support for PHP 8.4
    435
    536
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/README.md

    r3070283 r3178066  
    6363| Version | Status              | Packagist           | Namespace    | Repo                | Docs                | PSR-7 | PHP Version  |
    6464|---------|---------------------|---------------------|--------------|---------------------|---------------------|-------|--------------|
    65 | 3.x     | EOL                 | `guzzle/guzzle`     | `Guzzle`     | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No    | >=5.3.3,<7.0 |
    66 | 4.x     | EOL                 | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A                 | No    | >=5.4,<7.0   |
    67 | 5.x     | EOL                 | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No    | >=5.4,<7.4   |
    68 | 6.x     | Security fixes only | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes   | >=5.5,<8.0   |
    69 | 7.x     | Latest              | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes   | >=7.2.5,<8.4 |
     65| 3.x     | EOL (2016-10-31)    | `guzzle/guzzle`     | `Guzzle`     | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No    | >=5.3.3,<7.0 |
     66| 4.x     | EOL (2016-10-31)    | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A                 | No    | >=5.4,<7.0   |
     67| 5.x     | EOL (2019-10-31)    | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No    | >=5.4,<7.4   |
     68| 6.x     | EOL (2023-10-31)    | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes   | >=5.5,<8.0   |
     69| 7.x     | Latest              | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes   | >=7.2.5,<8.5 |
    7070
    7171[guzzle-3-repo]: https://github.com/guzzle/guzzle3
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/composer.json

    r3070283 r3178066  
    5151        }
    5252    ],
     53    "repositories": [
     54        {
     55            "type": "package",
     56            "package": {
     57                "name": "guzzle/client-integration-tests",
     58                "version": "v3.0.2",
     59                "dist": {
     60                    "url": "https://codeload.github.com/guzzle/client-integration-tests/zip/2c025848417c1135031fdf9c728ee53d0a7ceaee",
     61                    "type": "zip"
     62                },
     63                "require": {
     64                    "php": "^7.2.5 || ^8.0",
     65                    "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.11",
     66                    "php-http/message": "^1.0 || ^2.0",
     67                    "guzzlehttp/psr7": "^1.7 || ^2.0",
     68                    "th3n3rd/cartesian-product": "^0.3"
     69                },
     70                "autoload": {
     71                    "psr-4": {
     72                        "Http\\Client\\Tests\\": "src/"
     73                    }
     74                },
     75                "bin": [
     76                    "bin/http_test_server"
     77                ]
     78            }
     79        }
     80    ],
    5381    "require": {
    5482        "php": "^7.2.5 || ^8.0",
    5583        "ext-json": "*",
    56         "guzzlehttp/promises": "^1.5.3 || ^2.0.1",
    57         "guzzlehttp/psr7": "^1.9.1 || ^2.5.1",
     84        "guzzlehttp/promises": "^1.5.3 || ^2.0.3",
     85        "guzzlehttp/psr7": "^2.7.0",
    5886        "psr/http-client": "^1.0",
    5987        "symfony/deprecation-contracts": "^2.2 || ^3.0"
     
    6593        "ext-curl": "*",
    6694        "bamarni/composer-bin-plugin": "^1.8.2",
    67         "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
     95        "guzzle/client-integration-tests": "3.0.2",
    6896        "php-http/message-factory": "^1.1",
    69         "phpunit/phpunit": "^8.5.36 || ^9.6.15",
     97        "phpunit/phpunit": "^8.5.39 || ^9.6.20",
    7098        "psr/log": "^1.1 || ^2.0 || ^3.0"
    7199    },
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/BodySummarizer.php

    r3070283 r3178066  
    1212    private $truncateAt;
    1313
    14     public function __construct(int $truncateAt = null)
     14    public function __construct(?int $truncateAt = null)
    1515    {
    1616        $this->truncateAt = $truncateAt;
     
    2323    {
    2424        return $this->truncateAt === null
    25             ? \GuzzleHttp\Psr7\Message::bodySummary($message)
    26             : \GuzzleHttp\Psr7\Message::bodySummary($message, $this->truncateAt);
     25            ? Psr7\Message::bodySummary($message)
     26            : Psr7\Message::bodySummary($message, $this->truncateAt);
    2727    }
    2828}
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Client.php

    r3070283 r3178066  
    5353     * @param array $config Client configuration settings.
    5454     *
    55      * @see \GuzzleHttp\RequestOptions for a list of available request options.
     55     * @see RequestOptions for a list of available request options.
    5656     */
    5757    public function __construct(array $config = [])
     
    203203     * @deprecated Client::getConfig will be removed in guzzlehttp/guzzle:8.0.
    204204     */
    205     public function getConfig(string $option = null)
     205    public function getConfig(?string $option = null)
    206206    {
    207207        return $option === null
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/ClientInterface.php

    r3070283 r3178066  
    8181     * @deprecated ClientInterface::getConfig will be removed in guzzlehttp/guzzle:8.0.
    8282     */
    83     public function getConfig(string $option = null);
     83    public function getConfig(?string $option = null);
    8484}
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php

    r3070283 r3178066  
    104104    }
    105105
    106     public function clear(string $domain = null, string $path = null, string $name = null): void
     106    public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void
    107107    {
    108108        if (!$domain) {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php

    r3070283 r3178066  
    6363     * @param string|null $name   Clears cookies matching a domain, path, and name
    6464     */
    65     public function clear(string $domain = null, string $path = null, string $name = null): void;
     65    public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void;
    6666
    6767    /**
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php

    r3070283 r3178066  
    1515        RequestInterface $request,
    1616        ResponseInterface $response,
    17         \Throwable $previous = null,
     17        ?\Throwable $previous = null,
    1818        array $handlerContext = []
    1919    ) {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php

    r3070283 r3178066  
    2626        string $message,
    2727        RequestInterface $request,
    28         \Throwable $previous = null,
     28        ?\Throwable $previous = null,
    2929        array $handlerContext = []
    3030    ) {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php

    r3070283 r3178066  
    88use Psr\Http\Message\RequestInterface;
    99use Psr\Http\Message\ResponseInterface;
    10 use Psr\Http\Message\UriInterface;
    1110
    1211/**
     
    3332        string $message,
    3433        RequestInterface $request,
    35         ResponseInterface $response = null,
    36         \Throwable $previous = null,
     34        ?ResponseInterface $response = null,
     35        ?\Throwable $previous = null,
    3736        array $handlerContext = []
    3837    ) {
     
    6463    public static function create(
    6564        RequestInterface $request,
    66         ResponseInterface $response = null,
    67         \Throwable $previous = null,
     65        ?ResponseInterface $response = null,
     66        ?\Throwable $previous = null,
    6867        array $handlerContext = [],
    69         BodySummarizerInterface $bodySummarizer = null
     68        ?BodySummarizerInterface $bodySummarizer = null
    7069    ): self {
    7170        if (!$response) {
     
    9190        }
    9291
    93         $uri = $request->getUri();
    94         $uri = static::obfuscateUri($uri);
     92        $uri = \GuzzleHttp\Psr7\Utils::redactUserInfo($request->getUri());
    9593
    9694        // Client Error: `GET /` resulted in a `404 Not Found` response:
     
    112110
    113111        return new $className($message, $request, $response, $previous, $handlerContext);
    114     }
    115 
    116     /**
    117      * Obfuscates URI if there is a username and a password present
    118      */
    119     private static function obfuscateUri(UriInterface $uri): UriInterface
    120     {
    121         $userInfo = $uri->getUserInfo();
    122 
    123         if (false !== ($pos = \strpos($userInfo, ':'))) {
    124             return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***');
    125         }
    126 
    127         return $uri;
    128112    }
    129113
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php

    r3070283 r3178066  
    1212use GuzzleHttp\Utils;
    1313use Psr\Http\Message\RequestInterface;
     14use Psr\Http\Message\UriInterface;
    1415
    1516/**
     
    4748    public function create(RequestInterface $request, array $options): EasyHandle
    4849    {
     50        $protocolVersion = $request->getProtocolVersion();
     51
     52        if ('2' === $protocolVersion || '2.0' === $protocolVersion) {
     53            if (!self::supportsHttp2()) {
     54                throw new ConnectException('HTTP/2 is supported by the cURL handler, however libcurl is built without HTTP/2 support.', $request);
     55            }
     56        } elseif ('1.0' !== $protocolVersion && '1.1' !== $protocolVersion) {
     57            throw new ConnectException(sprintf('HTTP/%s is not supported by the cURL handler.', $protocolVersion), $request);
     58        }
     59
    4960        if (isset($options['curl']['body_as_string'])) {
    5061            $options['_body_as_string'] = $options['curl']['body_as_string'];
     
    7182
    7283        return $easy;
     84    }
     85
     86    private static function supportsHttp2(): bool
     87    {
     88        static $supportsHttp2 = null;
     89
     90        if (null === $supportsHttp2) {
     91            $supportsHttp2 = self::supportsTls12()
     92                && defined('CURL_VERSION_HTTP2')
     93                && (\CURL_VERSION_HTTP2 & \curl_version()['features']);
     94        }
     95
     96        return $supportsHttp2;
     97    }
     98
     99    private static function supportsTls12(): bool
     100    {
     101        static $supportsTls12 = null;
     102
     103        if (null === $supportsTls12) {
     104            $supportsTls12 = \CURL_SSLVERSION_TLSv1_2 & \curl_version()['features'];
     105        }
     106
     107        return $supportsTls12;
     108    }
     109
     110    private static function supportsTls13(): bool
     111    {
     112        static $supportsTls13 = null;
     113
     114        if (null === $supportsTls13) {
     115            $supportsTls13 = defined('CURL_SSLVERSION_TLSv1_3')
     116                && (\CURL_SSLVERSION_TLSv1_3 & \curl_version()['features']);
     117        }
     118
     119        return $supportsTls13;
    73120    }
    74121
     
    148195            'appconnect_time' => \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME),
    149196        ] + \curl_getinfo($easy->handle);
    150         $ctx[self::CURL_VERSION_STR] = \curl_version()['version'];
     197        $ctx[self::CURL_VERSION_STR] = self::getCurlVersion();
    151198        $factory->release($easy);
    152199
     
    157204
    158205        return self::createRejection($easy, $ctx);
     206    }
     207
     208    private static function getCurlVersion(): string
     209    {
     210        static $curlVersion = null;
     211
     212        if (null === $curlVersion) {
     213            $curlVersion = \curl_version()['version'];
     214        }
     215
     216        return $curlVersion;
    159217    }
    160218
     
    195253        }
    196254
     255        $uri = $easy->request->getUri();
     256
     257        $sanitizedError = self::sanitizeCurlError($ctx['error'] ?? '', $uri);
     258
    197259        $message = \sprintf(
    198260            'cURL error %s: %s (%s)',
    199261            $ctx['errno'],
    200             $ctx['error'],
     262            $sanitizedError,
    201263            'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
    202264        );
    203         $uriString = (string) $easy->request->getUri();
    204         if ($uriString !== '' && false === \strpos($ctx['error'], $uriString)) {
    205             $message .= \sprintf(' for %s', $uriString);
     265
     266        if ('' !== $sanitizedError) {
     267            $redactedUriString = \GuzzleHttp\Psr7\Utils::redactUserInfo($uri)->__toString();
     268            if ($redactedUriString !== '' && false === \strpos($sanitizedError, $redactedUriString)) {
     269                $message .= \sprintf(' for %s', $redactedUriString);
     270            }
    206271        }
    207272
     
    212277
    213278        return P\Create::rejectionFor($error);
     279    }
     280
     281    private static function sanitizeCurlError(string $error, UriInterface $uri): string
     282    {
     283        if ('' === $error) {
     284            return $error;
     285        }
     286
     287        $baseUri = $uri->withQuery('')->withFragment('');
     288        $baseUriString = $baseUri->__toString();
     289
     290        if ('' === $baseUriString) {
     291            return $error;
     292        }
     293
     294        $redactedUriString = \GuzzleHttp\Psr7\Utils::redactUserInfo($baseUri)->__toString();
     295
     296        return str_replace($baseUriString, $redactedUriString, $error);
    214297    }
    215298
     
    233316
    234317        $version = $easy->request->getProtocolVersion();
    235         if ($version == 1.1) {
     318
     319        if ('2' === $version || '2.0' === $version) {
     320            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0;
     321        } elseif ('1.1' === $version) {
    236322            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1;
    237         } elseif ($version == 2.0) {
    238             $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0;
    239323        } else {
    240324            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0;
     
    391475                // sets a matching 'Accept-Encoding' header.
    392476                $conf[\CURLOPT_ENCODING] = '';
    393                 // But as the user did not specify any acceptable encodings we need
    394                 // to overwrite this implicit header with an empty one.
     477                // But as the user did not specify any encoding preference,
     478                // let's leave it up to server by preventing curl from sending
     479                // the header, which will be interpreted as 'Accept-Encoding: *'.
     480                // https://www.rfc-editor.org/rfc/rfc9110#field.accept-encoding
    395481                $conf[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
    396482            }
     
    456542
    457543        if (isset($options['crypto_method'])) {
    458             if (\STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']) {
    459                 if (!defined('CURL_SSLVERSION_TLSv1_0')) {
    460                     throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.0 not supported by your version of cURL');
    461                 }
     544            $protocolVersion = $easy->request->getProtocolVersion();
     545
     546            // If HTTP/2, upgrade TLS 1.0 and 1.1 to 1.2
     547            if ('2' === $protocolVersion || '2.0' === $protocolVersion) {
     548                if (
     549                    \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']
     550                    || \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method']
     551                    || \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method']
     552                ) {
     553                    $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2;
     554                } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) {
     555                    if (!self::supportsTls13()) {
     556                        throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL');
     557                    }
     558                    $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_3;
     559                } else {
     560                    throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided');
     561                }
     562            } elseif (\STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']) {
    462563                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_0;
    463564            } elseif (\STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method']) {
    464                 if (!defined('CURL_SSLVERSION_TLSv1_1')) {
    465                     throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.1 not supported by your version of cURL');
    466                 }
    467565                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_1;
    468566            } elseif (\STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method']) {
    469                 if (!defined('CURL_SSLVERSION_TLSv1_2')) {
     567                if (!self::supportsTls12()) {
    470568                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.2 not supported by your version of cURL');
    471569                }
    472570                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2;
    473571            } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) {
    474                 if (!defined('CURL_SSLVERSION_TLSv1_3')) {
     572                if (!self::supportsTls13()) {
    475573                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL');
    476574                }
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php

    r3070283 r3178066  
    33namespace GuzzleHttp\Handler;
    44
     5use Closure;
    56use GuzzleHttp\Promise as P;
    67use GuzzleHttp\Promise\Promise;
     
    160161        }
    161162
     163        // Run curl_multi_exec in the queue to enable other async tasks to run
     164        P\Utils::queue()->add(Closure::fromCallable([$this, 'tickInQueue']));
     165
    162166        // Step through the task queue which may add additional requests.
    163167        P\Utils::queue()->run();
     
    170174
    171175        while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) {
     176            // Prevent busy looping for slow HTTP requests.
     177            \curl_multi_select($this->_mh, $this->selectTimeout);
    172178        }
    173179
    174180        $this->processMessages();
     181    }
     182
     183    /**
     184     * Runs \curl_multi_exec() inside the event loop, to prevent busy looping
     185     */
     186    private function tickInQueue(): void
     187    {
     188        if (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) {
     189            \curl_multi_select($this->_mh, 0);
     190            P\Utils::queue()->add(Closure::fromCallable([$this, 'tickInQueue']));
     191        }
    175192    }
    176193
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php

    r3070283 r3178066  
    5353     * @param callable|null $onRejected  Callback to invoke when the return value is rejected.
    5454     */
    55     public static function createWithMiddleware(array $queue = null, callable $onFulfilled = null, callable $onRejected = null): HandlerStack
     55    public static function createWithMiddleware(?array $queue = null, ?callable $onFulfilled = null, ?callable $onRejected = null): HandlerStack
    5656    {
    5757        return HandlerStack::create(new self($queue, $onFulfilled, $onRejected));
     
    6060    /**
    6161     * The passed in value must be an array of
    62      * {@see \Psr\Http\Message\ResponseInterface} objects, Exceptions,
     62     * {@see ResponseInterface} objects, Exceptions,
    6363     * callables, or Promises.
    6464     *
     
    6767     * @param callable|null          $onRejected  Callback to invoke when the return value is rejected.
    6868     */
    69     public function __construct(array $queue = null, callable $onFulfilled = null, callable $onRejected = null)
     69    public function __construct(?array $queue = null, ?callable $onFulfilled = null, ?callable $onRejected = null)
    7070    {
    7171        $this->onFulfilled = $onFulfilled;
     
    201201        RequestInterface $request,
    202202        array $options,
    203         ResponseInterface $response = null,
     203        ?ResponseInterface $response = null,
    204204        $reason = null
    205205    ): void {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php

    r3070283 r3178066  
    3939        if (isset($options['delay'])) {
    4040            \usleep($options['delay'] * 1000);
     41        }
     42
     43        $protocolVersion = $request->getProtocolVersion();
     44
     45        if ('1.0' !== $protocolVersion && '1.1' !== $protocolVersion) {
     46            throw new ConnectException(sprintf('HTTP/%s is not supported by the stream handler.', $protocolVersion), $request);
    4147        }
    4248
     
    8490        RequestInterface $request,
    8591        ?float $startTime,
    86         ResponseInterface $response = null,
    87         \Throwable $error = null
     92        ?ResponseInterface $response = null,
     93        ?\Throwable $error = null
    8894    ): void {
    8995        if (isset($options['on_stats'])) {
     
    274280        // HTTP/1.1 streams using the PHP stream wrapper require a
    275281        // Connection: close header
    276         if ($request->getProtocolVersion() == '1.1'
     282        if ($request->getProtocolVersion() === '1.1'
    277283            && !$request->hasHeader('Connection')
    278284        ) {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/HandlerStack.php

    r3070283 r3178066  
    4545     *                                                                            system will be utilized.
    4646     */
    47     public static function create(callable $handler = null): self
     47    public static function create(?callable $handler = null): self
    4848    {
    4949        $stack = new self($handler ?: Utils::chooseHandler());
     
    5959     * @param (callable(RequestInterface, array): PromiseInterface)|null $handler Underlying HTTP handler.
    6060     */
    61     public function __construct(callable $handler = null)
     61    public function __construct(?callable $handler = null)
    6262    {
    6363        $this->handler = $handler;
     
    132132     * @param string                       $name       Name to register for this middleware.
    133133     */
    134     public function unshift(callable $middleware, string $name = null): void
     134    public function unshift(callable $middleware, ?string $name = null): void
    135135    {
    136136        \array_unshift($this->stack, [$middleware, $name]);
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/MessageFormatter.php

    r3070283 r3178066  
    6969     * @param \Throwable|null        $error    Exception that was received
    7070     */
    71     public function format(RequestInterface $request, ResponseInterface $response = null, \Throwable $error = null): string
     71    public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string
    7272    {
    7373        $cache = [];
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php

    r3070283 r3178066  
    1515     * @param \Throwable|null        $error    Exception that was received
    1616     */
    17     public function format(RequestInterface $request, ResponseInterface $response = null, \Throwable $error = null): string;
     17    public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string;
    1818}
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Middleware.php

    r3070283 r3178066  
    5656     * @return callable(callable): callable Returns a function that accepts the next handler.
    5757     */
    58     public static function httpErrors(BodySummarizerInterface $bodySummarizer = null): callable
     58    public static function httpErrors(?BodySummarizerInterface $bodySummarizer = null): callable
    5959    {
    6060        return static function (callable $handler) use ($bodySummarizer): callable {
     
    133133     * @return callable Returns a function that accepts the next handler.
    134134     */
    135     public static function tap(callable $before = null, callable $after = null): callable
     135    public static function tap(?callable $before = null, ?callable $after = null): callable
    136136    {
    137137        return static function (callable $handler) use ($before, $after): callable {
     
    177177     * @return callable Returns a function that accepts the next handler.
    178178     */
    179     public static function retry(callable $decider, callable $delay = null): callable
     179    public static function retry(callable $decider, ?callable $delay = null): callable
    180180    {
    181181        return static function (callable $handler) use ($decider, $delay): RetryMiddleware {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php

    r3070283 r3178066  
    7777        $expect = $options['expect'] ?? null;
    7878
    79         // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
    80         if ($expect === false || $request->getProtocolVersion() < 1.1) {
     79        // Return if disabled or using HTTP/1.0
     80        if ($expect === false || $request->getProtocolVersion() === '1.0') {
    8181            return;
    8282        }
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/RequestOptions.php

    r3070283 r3178066  
    6262     * jar to use or what cookies to send. This option only works if your
    6363     * handler has the `cookie` middleware. Valid values are `false` and
    64      * an instance of {@see \GuzzleHttp\Cookie\CookieJarInterface}.
     64     * an instance of {@see Cookie\CookieJarInterface}.
    6565     */
    6666    public const COOKIES = 'cookies';
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php

    r3070283 r3178066  
    4141     *                                                                         milliseconds to delay.
    4242     */
    43     public function __construct(callable $decider, callable $nextHandler, callable $delay = null)
     43    public function __construct(callable $decider, callable $nextHandler, ?callable $delay = null)
    4444    {
    4545        $this->decider = $decider;
     
    111111    }
    112112
    113     private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null): PromiseInterface
     113    private function doRetry(RequestInterface $request, array $options, ?ResponseInterface $response = null): PromiseInterface
    114114    {
    115115        $options['delay'] = ($this->delay)(++$options['retries'], $response, $request);
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/TransferStats.php

    r3070283 r3178066  
    4747    public function __construct(
    4848        RequestInterface $request,
    49         ResponseInterface $response = null,
    50         float $transferTime = null,
     49        ?ResponseInterface $response = null,
     50        ?float $transferTime = null,
    5151        $handlerErrorData = null,
    5252        array $handlerStats = []
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/guzzle/src/Utils.php

    r3070283 r3178066  
    7272        }
    7373
    74         return \GuzzleHttp\Psr7\Utils::tryFopen('php://output', 'w');
     74        return Psr7\Utils::tryFopen('php://output', 'w');
    7575    }
    7676
     
    8888        $handler = null;
    8989
    90         if (\defined('CURLOPT_CUSTOMREQUEST')) {
     90        if (\defined('CURLOPT_CUSTOMREQUEST') && \function_exists('curl_version') && version_compare(curl_version()['version'], '7.21.2') >= 0) {
    9191            if (\function_exists('curl_multi_exec') && \function_exists('curl_exec')) {
    9292                $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/CHANGELOG.md

    r3070283 r3178066  
    11# CHANGELOG
     2
     3
     4## 2.0.4 - 2024-10-17
     5
     6### Fixed
     7
     8- Once settled, don't allow further rejection of additional promises
     9
     10
     11## 2.0.3 - 2024-07-18
     12
     13### Changed
     14
     15- PHP 8.4 support
    216
    317
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/README.md

    r3070283 r3178066  
    3939## Version Guidance
    4040
    41 | Version | Status                 | PHP Version  |
    42 |---------|------------------------|--------------|
    43 | 1.x     | Bug and security fixes | >=5.5,<8.3   |
    44 | 2.x     | Latest                 | >=7.2.5,<8.4 |
     41| Version | Status              | PHP Version  |
     42|---------|---------------------|--------------|
     43| 1.x     | Security fixes only | >=5.5,<8.3   |
     44| 2.x     | Latest              | >=7.2.5,<8.5 |
    4545
    4646
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/composer.json

    r3070283 r3178066  
    3131    "require-dev": {
    3232        "bamarni/composer-bin-plugin": "^1.8.2",
    33         "phpunit/phpunit": "^8.5.36 || ^9.6.15"
     33        "phpunit/phpunit": "^8.5.39 || ^9.6.20"
    3434    },
    3535    "autoload": {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/src/Coroutine.php

    r3070283 r3178066  
    8585
    8686    public function then(
    87         callable $onFulfilled = null,
    88         callable $onRejected = null
     87        ?callable $onFulfilled = null,
     88        ?callable $onRejected = null
    8989    ): PromiseInterface {
    9090        return $this->result->then($onFulfilled, $onRejected);
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/src/Each.php

    r3070283 r3178066  
    2424    public static function of(
    2525        $iterable,
    26         callable $onFulfilled = null,
    27         callable $onRejected = null
     26        ?callable $onFulfilled = null,
     27        ?callable $onRejected = null
    2828    ): PromiseInterface {
    2929        return (new EachPromise($iterable, [
     
    4747        $iterable,
    4848        $concurrency,
    49         callable $onFulfilled = null,
    50         callable $onRejected = null
     49        ?callable $onFulfilled = null,
     50        ?callable $onRejected = null
    5151    ): PromiseInterface {
    5252        return (new EachPromise($iterable, [
     
    6868        $iterable,
    6969        $concurrency,
    70         callable $onFulfilled = null
     70        ?callable $onFulfilled = null
    7171    ): PromiseInterface {
    7272        return self::ofLimit(
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/src/FulfilledPromise.php

    r3070283 r3178066  
    3232
    3333    public function then(
    34         callable $onFulfilled = null,
    35         callable $onRejected = null
     34        ?callable $onFulfilled = null,
     35        ?callable $onRejected = null
    3636    ): PromiseInterface {
    3737        // Return itself if there is no onFulfilled function.
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/src/Promise.php

    r3070283 r3178066  
    2626     */
    2727    public function __construct(
    28         callable $waitFn = null,
    29         callable $cancelFn = null
     28        ?callable $waitFn = null,
     29        ?callable $cancelFn = null
    3030    ) {
    3131        $this->waitFn = $waitFn;
     
    3434
    3535    public function then(
    36         callable $onFulfilled = null,
    37         callable $onRejected = null
     36        ?callable $onFulfilled = null,
     37        ?callable $onRejected = null
    3838    ): PromiseInterface {
    3939        if ($this->state === self::PENDING) {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/src/PromiseInterface.php

    r3070283 r3178066  
    2828     */
    2929    public function then(
    30         callable $onFulfilled = null,
    31         callable $onRejected = null
     30        ?callable $onFulfilled = null,
     31        ?callable $onRejected = null
    3232    ): PromiseInterface;
    3333
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/src/RejectedPromise.php

    r3070283 r3178066  
    3232
    3333    public function then(
    34         callable $onFulfilled = null,
    35         callable $onRejected = null
     34        ?callable $onFulfilled = null,
     35        ?callable $onRejected = null
    3636    ): PromiseInterface {
    3737        // If there's no onRejected callback then just return self.
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/src/RejectionException.php

    r3070283 r3178066  
    1919     * @param string|null $description Optional description.
    2020     */
    21     public function __construct($reason, string $description = null)
     21    public function __construct($reason, ?string $description = null)
    2222    {
    2323        $this->reason = $reason;
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/promises/src/Utils.php

    r3070283 r3178066  
    2222     * @param TaskQueueInterface|null $assign Optionally specify a new queue instance.
    2323     */
    24     public static function queue(TaskQueueInterface $assign = null): TaskQueueInterface
     24    public static function queue(?TaskQueueInterface $assign = null): TaskQueueInterface
    2525    {
    2626        static $queue;
     
    145145            },
    146146            function ($reason, $idx, Promise $aggregate): void {
    147                 $aggregate->reject($reason);
     147                if (Is::pending($aggregate)) {
     148                    $aggregate->reject($reason);
     149                }
    148150            }
    149151        )->then(function () use (&$results) {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/CHANGELOG.md

    r3070283 r3178066  
    55The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
    66and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
     7
     8## 2.7.0 - 2024-07-18
     9
     10### Added
     11
     12- Add `Utils::redactUserInfo()` method
     13- Add ability to encode bools as ints in `Query::build`
     14
     15## 2.6.3 - 2024-07-18
     16
     17### Fixed
     18
     19- Make `StreamWrapper::stream_stat()` return `false` if inner stream's size is `null`
     20
     21### Changed
     22
     23- PHP 8.4 support
    724
    825## 2.6.2 - 2023-12-03
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/README.md

    r3070283 r3178066  
    2525| Version | Status              | PHP Version  |
    2626|---------|---------------------|--------------|
    27 | 1.x     | Security fixes only | >=5.4,<8.1   |
    28 | 2.x     | Latest              | >=7.2.5,<8.4 |
     27| 1.x     | EOL (2024-06-30)    | >=5.4,<8.2   |
     28| 2.x     | Latest              | >=7.2.5,<8.5 |
    2929
    3030
     
    437437## `GuzzleHttp\Psr7\Query::build`
    438438
    439 `public static function build(array $params, int|false $encoding = PHP_QUERY_RFC3986): string`
     439`public static function build(array $params, int|false $encoding = PHP_QUERY_RFC3986, bool $treatBoolsAsInts = true): string`
    440440
    441441Build a query string from an array of key value pairs.
     
    499499## `GuzzleHttp\Psr7\Utils::readLine`
    500500
    501 `public static function readLine(StreamInterface $stream, int $maxLength = null): string`
     501`public static function readLine(StreamInterface $stream, ?int $maxLength = null): string`
    502502
    503503Read a line from the stream up to the maximum allowed buffer length.
     504
     505
     506## `GuzzleHttp\Psr7\Utils::redactUserInfo`
     507
     508`public static function redactUserInfo(UriInterface $uri): UriInterface`
     509
     510Redact the password in the user info part of a URI.
    504511
    505512
     
    675682### `GuzzleHttp\Psr7\Uri::isSameDocumentReference`
    676683
    677 `public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null): bool`
     684`public static function isSameDocumentReference(UriInterface $uri, ?UriInterface $base = null): bool`
    678685
    679686Whether the URI is a same-document reference. A same-document reference refers to a URI that is, aside from its
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/composer.json

    r3070283 r3178066  
    6262    "require-dev": {
    6363        "bamarni/composer-bin-plugin": "^1.8.2",
    64         "http-interop/http-factory-tests": "^0.9",
    65         "phpunit/phpunit": "^8.5.36 || ^9.6.15"
     64        "http-interop/http-factory-tests": "0.9.0",
     65        "phpunit/phpunit": "^8.5.39 || ^9.6.20"
    6666    },
    6767    "suggest": {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/src/CachingStream.php

    r3070283 r3178066  
    3434    public function __construct(
    3535        StreamInterface $stream,
    36         StreamInterface $target = null
     36        ?StreamInterface $target = null
    3737    ) {
    3838        $this->remoteStream = $stream;
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/src/HttpFactory.php

    r3070283 r3178066  
    2828    public function createUploadedFile(
    2929        StreamInterface $stream,
    30         int $size = null,
     30        ?int $size = null,
    3131        int $error = \UPLOAD_ERR_OK,
    32         string $clientFilename = null,
    33         string $clientMediaType = null
     32        ?string $clientFilename = null,
     33        ?string $clientMediaType = null
    3434    ): UploadedFileInterface {
    3535        if ($size === null) {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/src/MultipartStream.php

    r3070283 r3178066  
    3333     * @throws \InvalidArgumentException
    3434     */
    35     public function __construct(array $elements = [], string $boundary = null)
     35    public function __construct(array $elements = [], ?string $boundary = null)
    3636    {
    3737        $this->boundary = $boundary ?: bin2hex(random_bytes(20));
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/src/Query.php

    r3070283 r3178066  
    6464     * encountered (like `http_build_query()` would).
    6565     *
    66      * @param array     $params   Query string parameters.
    67      * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
    68      *                            to encode using RFC3986, or PHP_QUERY_RFC1738
    69      *                            to encode using RFC1738.
     66     * @param array     $params           Query string parameters.
     67     * @param int|false $encoding         Set to false to not encode,
     68     *                                    PHP_QUERY_RFC3986 to encode using
     69     *                                    RFC3986, or PHP_QUERY_RFC1738 to
     70     *                                    encode using RFC1738.
     71     * @param bool      $treatBoolsAsInts Set to true to encode as 0/1, and
     72     *                                    false as false/true.
    7073     */
    71     public static function build(array $params, $encoding = PHP_QUERY_RFC3986): string
     74    public static function build(array $params, $encoding = PHP_QUERY_RFC3986, bool $treatBoolsAsInts = true): string
    7275    {
    7376        if (!$params) {
     
    8790        }
    8891
     92        $castBool = $treatBoolsAsInts ? static function ($v) { return (int) $v; } : static function ($v) { return $v ? 'true' : 'false'; };
     93
    8994        $qs = '';
    9095        foreach ($params as $k => $v) {
     
    9297            if (!is_array($v)) {
    9398                $qs .= $k;
    94                 $v = is_bool($v) ? (int) $v : $v;
     99                $v = is_bool($v) ? $castBool($v) : $v;
    95100                if ($v !== null) {
    96101                    $qs .= '='.$encoder((string) $v);
     
    100105                foreach ($v as $vv) {
    101106                    $qs .= $k;
    102                     $vv = is_bool($vv) ? (int) $vv : $vv;
     107                    $vv = is_bool($vv) ? $castBool($vv) : $vv;
    103108                    if ($vv !== null) {
    104109                        $qs .= '='.$encoder((string) $vv);
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/src/Response.php

    r3070283 r3178066  
    9797        $body = null,
    9898        string $version = '1.1',
    99         string $reason = null
     99        ?string $reason = null
    100100    ) {
    101101        $this->assertStatusCodeRange($status);
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/src/StreamWrapper.php

    r3070283 r3178066  
    7070    }
    7171
    72     public function stream_open(string $path, string $mode, int $options, string &$opened_path = null): bool
     72    public function stream_open(string $path, string $mode, int $options, ?string &$opened_path = null): bool
    7373    {
    7474        $options = stream_context_get_options($this->context);
     
    120120
    121121        return $resource ?? false;
     122    }
     123
     124    /**
     125     * @return array{
     126     *   dev: int,
     127     *   ino: int,
     128     *   mode: int,
     129     *   nlink: int,
     130     *   uid: int,
     131     *   gid: int,
     132     *   rdev: int,
     133     *   size: int,
     134     *   atime: int,
     135     *   mtime: int,
     136     *   ctime: int,
     137     *   blksize: int,
     138     *   blocks: int
     139     * }|false
     140     */
     141    public function stream_stat()
     142    {
     143        if ($this->stream->getSize() === null) {
     144            return false;
     145        }
     146
     147        static $modeMap = [
     148            'r' => 33060,
     149            'rb' => 33060,
     150            'r+' => 33206,
     151            'w' => 33188,
     152            'wb' => 33188,
     153        ];
     154
     155        return [
     156            'dev' => 0,
     157            'ino' => 0,
     158            'mode' => $modeMap[$this->mode],
     159            'nlink' => 0,
     160            'uid' => 0,
     161            'gid' => 0,
     162            'rdev' => 0,
     163            'size' => $this->stream->getSize() ?: 0,
     164            'atime' => 0,
     165            'mtime' => 0,
     166            'ctime' => 0,
     167            'blksize' => 0,
     168            'blocks' => 0,
     169        ];
    122170    }
    123171
     
    139187     * }
    140188     */
    141     public function stream_stat(): array
    142     {
    143         static $modeMap = [
    144             'r' => 33060,
    145             'rb' => 33060,
    146             'r+' => 33206,
    147             'w' => 33188,
    148             'wb' => 33188,
    149         ];
    150 
    151         return [
    152             'dev' => 0,
    153             'ino' => 0,
    154             'mode' => $modeMap[$this->mode],
    155             'nlink' => 0,
    156             'uid' => 0,
    157             'gid' => 0,
    158             'rdev' => 0,
    159             'size' => $this->stream->getSize() ?: 0,
    160             'atime' => 0,
    161             'mtime' => 0,
    162             'ctime' => 0,
    163             'blksize' => 0,
    164             'blocks' => 0,
    165         ];
    166     }
    167 
    168     /**
    169      * @return array{
    170      *   dev: int,
    171      *   ino: int,
    172      *   mode: int,
    173      *   nlink: int,
    174      *   uid: int,
    175      *   gid: int,
    176      *   rdev: int,
    177      *   size: int,
    178      *   atime: int,
    179      *   mtime: int,
    180      *   ctime: int,
    181      *   blksize: int,
    182      *   blocks: int
    183      * }
    184      */
    185189    public function url_stat(string $path, int $flags): array
    186190    {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/src/UploadedFile.php

    r3070283 r3178066  
    6565        ?int $size,
    6666        int $errorStatus,
    67         string $clientFilename = null,
    68         string $clientMediaType = null
     67        ?string $clientFilename = null,
     68        ?string $clientMediaType = null
    6969    ) {
    7070        $this->setError($errorStatus);
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/src/Uri.php

    r3070283 r3178066  
    280280     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.4
    281281     */
    282     public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null): bool
     282    public static function isSameDocumentReference(UriInterface $uri, ?UriInterface $base = null): bool
    283283    {
    284284        if ($base !== null) {
  • mobile-bankid-integration/trunk/vendor/guzzlehttp/psr7/src/Utils.php

    r3070283 r3178066  
    232232     * @param int|null        $maxLength Maximum buffer length
    233233     */
    234     public static function readLine(StreamInterface $stream, int $maxLength = null): string
     234    public static function readLine(StreamInterface $stream, ?int $maxLength = null): string
    235235    {
    236236        $buffer = '';
     
    249249
    250250        return $buffer;
     251    }
     252
     253    /**
     254     * Redact the password in the user info part of a URI.
     255     */
     256    public static function redactUserInfo(UriInterface $uri): UriInterface
     257    {
     258        $userInfo = $uri->getUserInfo();
     259
     260        if (false !== ($pos = \strpos($userInfo, ':'))) {
     261            return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***');
     262        }
     263
     264        return $uri;
    251265    }
    252266
Note: See TracChangeset for help on using the changeset viewer.