{% extends "layout2.html" %} {% load i18n %} {% load static %} {% block css_include %} {% endblock %} {% block js_include %} {% endblock %} {% block content %}
{% csrf_token %}
{% if form.non_field_errors or save_error %}
{# Print form errors correctly #} {% if form.non_field_errors %}

Form errors

{{ form.non_field_errors|safe }}
{% endif %} {# If there is save/configuration errors #} {% if save_error %} {% endif %}
{% endif %}

 {% translate "User Authentication edition" %}

{% endblock %} {% block jquery_code %} if (!String.prototype.endsWith) { String.prototype.endsWith = function(searchString, position) { var subjectString = this.toString(); if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { position = subjectString.length; } position -= searchString.length; var lastIndex = subjectString.lastIndexOf(searchString, position); return lastIndex !== -1 && lastIndex === position; }; } /* Initialize ClipboardJS */ var clipboard = new ClipboardJS('.btn'); clipboard.on('success', function(e) { showTooltip(e.trigger,'Copied!'); console.log(e); }); clipboard.on('error', function(e) { console.error(e); }); /* Switchery mandatory code */ var elems = Array.prototype.slice.call(document.querySelectorAll('.js-switch')); elems.forEach(function(html) { var switchery = new Switchery(html, { 'color': '#FA9834', }); }); let enable_oauth_switch = new Switchery(document.querySelector("#id_enable_oauth")); /* Show openid class if openid repo is chosen */ function toggle_repos() { var repos = $('#id_repositories'); var openid = false; for( repo of repos.find(':selected') ) { if( repo.text.indexOf("(openid)") > 0 ) { openid = true; } } if( openid ) { $('.openid').show(); } else { $('.openid').hide(); } } $('#id_repositories').on('change', toggle_repos); toggle_repos(); /* Show lookup-ldap class if lookup_ldap repo is chosen */ function toggle_lookup_ldap() { console.log($('#id_lookup_ldap_repo').find(":selected")[0].value == "") if( $('#id_lookup_ldap_repo').find(":selected")[0].value == "" ) { $('.lookup-ldap').hide(); } else { $('.lookup-ldap').show(); } } $('#id_lookup_ldap_repo').on('change', toggle_lookup_ldap); toggle_lookup_ldap(); /* Show fields depending on auth_type chosen */ function toggle_auth_type() { var auth_type = $('#id_auth_type').val(); $('.form-auth').hide(); $('.basic-auth').hide(); $('.kerberos-auth').hide(); if( $('.'+auth_type+'-auth') ) { $('.'+auth_type+'-auth').show(); } } $('#id_auth_type').on('change', toggle_auth_type); toggle_auth_type(""); /* Show or hide otp_max_retry depending on otp_repository chosen */ function toggle_otp(event) { if( $('#id_otp_repository').val() === "" ) $('.otp').hide(); else $('.otp').show(); } $('#id_otp_repository').on("change", toggle_otp); toggle_otp(); /* Show or hide disconnect fields depending on disconnect_url */ function toggle_disconnect(event) { if( $('#id_disconnect_url').val() === "" ) $('.disconnect').hide(); else $('.disconnect').show(); } $('#id_disconnect_url').on("change", toggle_disconnect); toggle_disconnect(); /* Show or hide oauth2 fields */ function toggle_oauth(event) {} /* Show or hide oauth2 refresh token fields */ const refresh_token_toggle_fields = { 'id_enable_refresh': ["tab-refresh"], 'id_enable_rotation': ["max_nb_refresh"], }; function toggle_refresh(toggle_name) { for( field of refresh_token_toggle_fields[toggle_name] ) { if( $('#'+toggle_name).is(":checked") ) $('#'+field).show(); else $('#'+field).hide(); } } for( const key of Object.keys(refresh_token_toggle_fields)) { $('#'+key).on("change", function(e) { toggle_refresh(key); }); toggle_refresh(key); } const sso_forward_toggle_fields = { 'id_sso_forward_enable_capture': ["sso_forward_capture_content"], 'id_sso_forward_enable_replace': ["sso_forward_replace_pattern","sso_forward_replace_content"], 'id_sso_forward_enable_additionnal': ["sso_forward_additional_url"] }; function toggle_sso_forward_field(toggle_name) { if( $('#'+toggle_name).is(":checked") ) { for( field of sso_forward_toggle_fields[toggle_name] ) { $('#'+field).show(); } } else { for( field of sso_forward_toggle_fields[toggle_name] ) { $('#'+field).hide(); } } } function toggle_sso_forward_url() { if( $('#id_sso_forward_url').val().startsWith("https://") ) { $('.sso_forward_tls').show(); } else { $('.sso_forward_tls').hide(); } } function toggle_sso_forward_type() { if( $('#id_sso_forward_type').find(":selected").val() == "form" ) { $('.sso_forward_tls').show(); } else { $('.sso_forward_tls').hide(); } } /* Show and hide content fields depending on associated checkbox */ function toggle_sso_forward() { for( const key of Object.keys(sso_forward_toggle_fields)) { $('#'+key).on('change', function(e) { toggle_sso_forward_field(key); }); toggle_sso_forward_field(key); } /* Show SSO forward tls options only for https url */ $('#id_sso_forward_url').on('change keyup', toggle_sso_forward_url); toggle_sso_forward_url(); } function toggle_external(event) { /* If enable_external, repositories != OpenID */ if( event ) { if( $('#id_enable_external').is(':checked') ) { $('#id_repositories').html($(`{{form.not_openid_repositories}}`).html()).trigger('change') $('.tab_idp').show(); $('#idp-tab').show(); } else { $('.tab_idp').hide(); $('#idp-tab').hide(); console.log($(`{{form.repositories}}`).html()) $('#id_repositories').html($(`{{form.repositories}}`).html()).trigger('change') } } /* If External selected, auto enable OAuth */ if( $('#id_enable_external').is(":checked")) { if (!$('#id_enable_oauth').is(":checked")) { $('#id_enable_oauth').trigger('click'); } enable_oauth_switch.disable(); $('.tab_idp').show(); $('#idp-tab').show(); } else if( !$('#id_enable_external').is(":checked") ) { /* If enable External unselected, re-enable oauth button */ enable_oauth_switch.enable(); $('.tab_idp').hide(); $('#idp-tab').hide(); } } /* Show or hide registration fields depending on enable_registration */ function toggle_class(classe, event) { console.log(classe) if( $('#id_enable_'+classe).is(":checked") ) { $('.'+classe).show(); } else { $('.'+classe).hide(); } // Call function toggle_ if exists try { eval('var myfunc = toggle_'+classe); myfunc(event); } catch(e) {console.error(e);} } /* Show attributes depending on chosen options */ $('#id_enable_oauth').on("change", function(e){ toggle_class("oauth", e); }); toggle_class("oauth"); $('#id_enable_external').on("change", function(e){ toggle_class("external", e); }); toggle_class("external"); $('#id_enable_sso_forward').on("change", function(e){ toggle_class("sso_forward", e); }); toggle_class("sso_forward"); $('#btn_sso_wizard').on('click', function(e) { var res = []; var filled = false; $('#sso_modal div[class~="sso_field"]').each(function(num, field) { console.log(field); var field_json = { 'name': $(field).data('name')+";vlt;"+$(field).data('id'), 'send_type': $(field).data('send_type') }; field_json['value'] = $(field).find('input')[0].value; field_json['type'] = $(field).find('select :selected')[0].value; // Better performance than push res[res.length] = field_json; filled = true; }); console.log(res) $('#id_sso_forward_content').val(JSON.stringify(res)); // Change "Not configured" to "Configured" if( filled ) { $('#sso_forward_status').css('color', "green"); $('#sso_forward_status').text("Configured"); } $("#modal_sso_wizard").modal('hide'); }); function handle_form_errors(data){ if (typeof(data['form_errors']) !== 'undefined'){ $('.errorlist').remove(); $.each(data['form_errors'], function(field_name, error_list){ field_selector = $('#id_'+field_name); var ul = $('