PageSourceSearch

https://nceaquaculture.com/dist/all/chunks/679-d5013c587679444bb083.js

js nceaquaculture.com collected 2026-10-07 22:26:07 UTC 39,302 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkwips_components_scripts||=[]).push([[679,18513,23060,36255,47862,61862],{aee7fb0d2a76db18(e,t,a){a.d(t,{EX:()=>l.EX,Y8:()=>l.Y8,VZ:()=>l.VZ,sG:()=>l.sG,$r:()=>l.$r});var l=a("8ceb46feae9623c5"),n=a("ee6a5df6fd8f468e"),o=a("2840db5415c0b78b");(0,l.p4)({type:"microsoft-entra",displayName:"Microsoft Entra ID",icon:"mdi-microsoft",configComponent:n.default,oauthButtonBrand:{backgroundColor:"#2f2f2f",hoverBackgroundColor:"#1a1a1a",iconComponent:o.default},defaultConfig:()=>({tenantId:"",autoCreateUsers:!0,allowLinking:!0,autoLinkByEmail:!1,syncGroups:!1,syncGroupMemberships:!0,syncIntervalMinutes:60,lastSyncAt:null,hasRefreshToken:!1,refreshToken:null,useCustomApp:!1,clientId:"",clientSecret:"",featureLevel:"sso"}),validateConfig:e=>{const t=[];return e.useCustomApp||e.tenantId||t.push("Tenant ID is required"),t}});var i=a("d474299db57fc6fb");(0,l.p4)({type:"feide",displayName:"Feide",icon:"mdi-school",configComponent:i.default,oauthButtonBrand:{backgroundColor:"#1f4f3f",hoverBackgroundColor:"#163b2f",iconText:"F"},defaultConfig:()=>({clientId:"",clientSecret:"",autoCreateUsers:!0,allowLinking:!0,autoLinkByEmail:!1,syncGroups:!1,syncGroupMemberships:!0,syncIntervalMinutes:60,lastSyncAt:null,featureLevel:"sso",requestGroupsOrg:!1,requestGroupsEdu:!1}),validateConfig:e=>{const t=[];return e.clientId||t.push("Client ID is required"),t}});var s=a("08fafc0616ba6aa5");(0,l.p4)({type:"vipps",displayName:"Vipps",icon:"mdi-cellphone",configComponent:s.default,oauthButtonBrand:{backgroundColor:"#ff5b24",hoverBackgroundColor:"#e14d1a",iconText:"V"},defaultConfig:()=>({clientId:"",clientSecret:"",environment:"test",autoCreateUsers:!0,allowLinking:!0,autoLinkByEmail:!1,autoLinkByPhoneNumber:!1,requestAddress:!1,requestBirthDate:!1}),validateConfig:e=>{const t=[];return e.clientId||t.push("Client ID is required"),t}})},"8ceb46feae9623c5"(e,t,a){a.d(t,{$r:()=>d,EX:()=>i,VZ:()=>s,Y8:()=>r,p4:()=>n,sG:()=>o}),a("c748440b56b4d076"),a("5f35a93b0ced2429");const l=new Map;function n(e){if(l.has(e.type))throw new Error(`Provider type '${e.type}' is already registered`);l.set(e.type,e)}function o(e){return l.get(e)}function i(){return Array.from(l.values())}function s(e){return l.get(e)?.oauthButtonBrand}function r(e){return l.get(e)?.defaultConfig()??{}}function d(e,t){return l.get(e)?.validateConfig(t)??[]}},a46f5cae585f93fa(e,t,a){a.r(t),a.d(t,{default:()=>K}),a("6bcf20aa1369abd3"),a("1519ef9f27f54b60"),a("1afb2fd57889d583"),a("07a8db537f1fb869"),a("27e0a48d3d4d9aab"),a("c748440b56b4d076"),a("5f35a93b0ced2429");var l=a("b641633d6c906d19"),n=a("a54fa6d0a722ba3f"),o=a("99c472be6da17922"),i=a("eb0d7dd6674ec63a"),s=a("ab5c7e913102dd40"),r=a("0a7bbc22bb49fa90"),d=a("82eea75f3b712219"),u=a("79db9680994c4062"),c=a("a3b8e0beaaa15980"),f=a("10e5bc8fed45f298"),p=a("e4a3d3209ec84146"),v=a("0adb5804ae5adb7f"),m=a("cea3dd9cfdd4e17f"),b=a("16b512075f10bf61"),g=a("e90e17db7b7ac076"),y=a("aee7fb0d2a76db18"),k=a("d9492f72911b6294"),h=a("32a07343d5e06d61"),C=a("0c402b9e75a52e9e"),_=a("c4f2b76c676356a0"),F=a("0d02d238511e9d3e");function R(e){const t=(0,n.IJ)(null);function a(){t.value=null}return(0,n.jr)(a),{start:async function(a){const l={requestId:a};for(t.value=l;t.value===l;){if(await new Promise(e=>setTimeout(e,2e3)),t.value!==l)return;try{const t=await fetch(`/admin/identity-providers-api/onboarding/status?requestId=${a}`);await e(t,a)}catch{}}},stop:a}}const w={class:"add-provider-options"},S=["onClick","tabindex","aria-disabled"],L={class:"option-header"},I={key:0,class:"disabled-reason"},V={class:"add-provider-options"},E={class:"tenants-selection-section"},$={key:0},A={class:"section-description"},x={class:"domain-list"},W=["onClick"],U={key:0,class:"organization-label"},B={class:"tenant-id-display"},O={key:1,class:"small-info tenant-domains-info"},D={key:2,class:"badge already-added-badge"},P={class:"checkbox-indicator"},G={key:0},X={key:1},T={class:"info-box instruction"},q={class:"small-info"},M={key:0,class:"field-hint"},z=(0,l.pM)({__name:"IdentityProvidersManager",setup(e){const{t}=(0,s.s)(),a=(0,C.B)(),{currentHashValue:z}=(0,i.bP)(a),K=(0,l.EW)(()=>{const e=z.value;return(e.startsWith("#")?e.slice(1):e)||"/"}),N=(0,n.KR)(!0),j=(0,n.KR)(!1),Y=(0,n.KR)(!1),Q=(0,n.KR)(""),Z=(0,n.KR)(""),J=(0,n.KR)([]),H=(0,n.KR)({}),ee=(0,n.KR)(null),te=(0,n.KR)(!1),ae=(0,n.KR)(!1),le=(0,n.KR)(!1),ne=(0,n.KR)(""),oe=(0,n.KR)(""),ie=(0,n.KR)(""),se=(0,l.
1EW)(()=>[...J.value].sort((e,t)=>Number(Boolean(t.enabled))-Number(Boolean(e.enabled))||String(e.name).localeCompare(String(t.name))).map(e=>({provider:e,status:pe(e)}))),re=(0,l.EW)(()=>[{key:"name",caption:t("Name"),width:240,fill:!0,sortable:!0},{key:"type",caption:t("Type"),width:200,sortable:!0},{key:"status",caption:t("Status"),width:200,sortable:!0},...te.value?[{key:"actions",caption:"",width:120,align:"right"}]:[]]),de=(0,l.EW)(()=>se.value.map(({provider:e,status:t})=>({id:e.id,values:{name:e.name,type:Ue(e.type),status:t},sortValues:{status:t.label}})));function ue(e){return J.value.find(t=>t.id===e.id)}function ce(e){return e.values.status}function fe(e){if(!te.value)return;const t=ue(e);Pe(`/edit/${t.type}/${t.id}`)}function pe(e){if(!e.enabled)return{label:t("Disabled"),level:"disabled"};const a=e.config?.clientSecretDaysRemaining;return null!=a&&a<=30?{label:t("Enabled, action required"),level:"action-required"}:{label:t("Enabled"),level:"enabled"}}const ve=(0,n.KR)([]),me=(0,n.KR)(null),be=(0,n.KR)(null),ge=(0,n.KR)([]),ye=(0,n.KR)(""),ke=(0,n.KR)(null),he=(0,n.KR)(null),Ce=(0,n.KR)(!1),_e=(0,l.EW)(()=>{const e=new Map;ve.value.forEach(t=>{const a=t.tenantId;a&&(e.has(a)||e.set(a,{id:a,organizationName:t.organizationName,domains:[]}),e.get(a).domains.push(t))}),0===e.size&&be.value&&e.set(be.value,{id:be.value,organizationName:me.value||t("Unknown Organization"),domains:[]});const a=J.value.filter(e=>"microsoft-entra"===e.type&&e.config?.tenantId).map(e=>e.config.tenantId);return Array.from(e.values()).map(e=>({...e,isAdded:a.includes(e.id)}
1))}),Fe=(0,l.EW)(()=>K.value.startsWith("/edit/")),Re=(0,l.EW)(()=>!!K.value.match(/^\/add\/[^/]+\/configure$/)||!!K.value.match(/^\/edit\/[^/]+\/\d+$/)),we=(0,l.EW)(()=>null!==K.value.match(/^\/add\/[^/]+\/waiting\//)),Se=(0,l.EW)(()=>{const e=K.value.match(/^\/add\/([^/]+)\/waiting\//);if(e){const a=(0,y.sG)(e[1]);if(a)return String(t(":provider Onboarding").replace(":provider",a.displayName))}return String(t("Provider Onboarding"))}),Le=(0,l.EW)(()=>null!==K.value.match(/^\/add\/[^/]+\/select-tenants\//)),Ie=(0,n.KR)({id:0,type:"",name:"",enabled:!0,config:{}}),Ve=(0,l.EW)(()=>({...Ie.value,config:{...Ie.value.config,lastSyncAt:null}})),{hasChanges:Ee,markLoaded:$e}=(0,F.d)({state:Ve}),Ae=(0,l.EW)(()=>Re.value&&Ee.value);(0,_.G)({hasOtherChanges:Ae});const xe=(0,l.EW)(()=>{const e=Ie.value.config;return!("microsoft-entra"===Ie.value.type&&(e.useCustomApp?!e.clientId||!e.tenantId||!e.clientSecret&&!e.hasClientCredentials:!e.tenantId))});function We(e,t){Z.value=e,Q.value=t}function Ue(e){const t=(0,y.sG)(e);return t?t.displayName:e}function Be(e){const t=(0,y.sG)(e);return t?.configComponent}function Oe(e){return"microsoft-entra"===e?ae.value:"feide"!==e||le.value}async function De(){N.value=!0;try{const e=await fetch("/admin/identity-providers-api/providers");if(e.ok){const t=await e.json();J.value=t.providers||[],H.value=t.availableTypes||{},te.value=t.permissions?.canEdit??!1,ae.value=t.features?.microsoftEntra??!1,le.value=t.features?.feide??!1,ne.value=t.siteName||"",oe.value=t.siteDomain||"",ie.value=t.systemDomain||""}else We("error",String(t("Failed to load")))}catch{We("error",String(t("Failed to load")))}finally{N.value=!1}}function Pe(e){a.setHashValue(e)}const{start:Ge,stop:Xe}=R(async(e,a)=>{if(e.ok){const t=await e.json();return void("completed"===t.status&&(Xe(),qe(t.data,a)))}if(400===e.status){const a=await e.json();Xe(),We("error",a.error||String(t("Onboarding failed"))),Pe("/add/select-type")}});function Te(e="microsoft-entra"){ee.value=null,Ie.value={id:0,type:e,name:"",enabled:!0,config:(0,y.Y8)(e)},ve.value=[],me.value=null,be.value=null,he.value=null,ge.value=[],ye.value="",ke.value=null,Ce.value=!1,Xe()}function qe(e,t){ve.value=e.availableDomains||[],me.value=e.organizationName||null,be.value=e.tenantId||null,ye.value=e.clientId||"",he.value=e.refreshToken||null,ge.value=[];const a=J.value.filter(e=>"microsoft-entra"===e.type&&e.config?.tenantId).map(e=>e.config.tenantId);if(ve.value.length>0){const e=[...new Set(ve.value.map(e=>e.tenantId))].filter(e=>!!e);ge.value=e.filter(e=>!a.includes(e))}else be.value&&!a.includes(be.value)&&(ge.value=[be.value]);Pe(`/add/microsoft-entra/select-tenants/${t}`)}async function Me(){if(j.value)return;if(0===ge.value.length)return void We("error",String(t("Please select at least one tenant")));j.value=!0;let e=0,a="";try{for(const l of ge.value){const n=_e.value.find(e=>e.id===l),o=n?.organizationName||l,i={type:"microsoft-entra",name:o,enabled:!0,config:{tenantId:l,refreshToken:he.value}},s=await fetch("/admin/identity-providers-api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});s.ok?e++:a=(await s.json().catch(()=>({}))).error||String(t("Failed to create provider for :tenant")).replace(":tenant",o)}e>0?(We("ok",String(t("Created :count providers")).replace(":count",String(e))),await De(),Pe("/")):a&&We("error",a)}catch{We("error",String(t("An error occurred while creating providers")))}finally{j.value=!1}}async function ze(){if(j.value)return;if(!Ie.value.name)return void We("error",String(t("Please fill in Name")));const e=(0,y.$r)(Ie.value.type,Ie.value.config);if(e.length>0)We("error",e[0]);else{j.value=!0;try{const e={...Ie.value};if(e.config){const{hasRefreshToken:t,refreshToken:a,hasClientCredentials:l,clientSecret:n,...o}=e.config,i={...o};"string"==typeof a&&a&&(i.refreshToken=a),"string"==typeof n&&""!==n&&"********"!==n&&(i.clientSecret=n),e.config=i}const a=!Ie.value.id,l=a?"/admin/identity-providers-api/providers":`/admin/identity-providers-api/providers/${Ie.value.id}`,n=await fetch(l,{method:a?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});n.ok?(We("ok",String(t(a?"Provider created":"Provider updated"))),await De(),Pe("/")):We("error",(await n.json().catch(()=>({}))).error||String(t("Failed to save")))}catch{We("error",String(t("Failed to save")))}finally{j.value=!1}}}function Ke(e){if(!e)return;Ie.value.config.tenantId=e;let t=e;!ve.value.find(t=>t.name===e)&&ve.value.length>0&&(t=ve.value.find(e=>e.isDefault)?.name||ve.value[0].name),Ie.value.name&&!Ie.value.name.startsWith("Microsoft Entra")||(Ie.value.name=t)}function Ne(e){Ie.value.config=e}
1(0,l.wB)([K,J],([e,a],[l])=>{if("/"===e)return void Te();if("/add/select-type"===e)return void Te();const n=e.match(/^\/add\/([^/]+)\/configure$/);if(n){if(!Ie.value.type||Ie.value.type!==n[1]){const e=n[1];Ie.value.type=e,Ie.value.config=(0,y.Y8)(e)}return void(e!==l&&$e())}const o=e.match(/^\/add\/([^/]+)\/(waiting|select-tenants)\/(.+)$/);if(o){const e=o[1],a=o[2],l=o[3];return Ie.value.type||(Ie.value.type=e),void(l&&l!==ke.value&&(ke.value=l,"waiting"===a?Ge(l):"select-tenants"===a&&0===ve.value.length&&async function(e){try{const a=await fetch(`/admin/identity-providers-api/onboarding/status?requestId=${e}`);if(a.ok){const t=await a.json();"completed"===t.status?qe(t.data,e):(Pe(`/add/microsoft-entra/waiting/${e}`),Ge(e))}else We("error",String(t("Onboarding request not found or expired"))),Pe("/add/select-type")}catch{We("error",String(t("Failed to resume onboarding"))),Pe("/add/select-type")}}(l)))}if(e.startsWith("/edit/")&&a.length>0){const t=e.split("/"),l=parseInt(t[t.length-1]);if(ee.value===l)return;const n=a.find(e=>e.id===l);if(n){ee.value=l;const e=(0,y.Y8)(n.type);Ie.value={...n,config:{...e,...n.config||{}}},$e()}return}},{immediate:!0});const{start:je,stop:Ye}=R(async e=>{if(e.ok){const a=await e.json();if("completed"===a.status){Ye();const e=a.data;if(be.value=e.tenantId,ve.value=e.availableDomains||[],me.value=e.organizationName||null,e.refreshToken&&(Ie.value.config.refreshToken=e.refreshToken),ve.value.length>0?Ie.value.config.tenantId||Ke(ve.value.find(e=>e.isDefault)?.name||ve.value[0].name):(Ie.value.config.tenantId=e.tenantId,Ie.value.name&&!Ie.value.name.startsWith("Microsoft Entra")||(Ie.value.name=e.domain||e.tenantId)),e.domain||me.value){const a=me.value||e.domain;We("ok",String(t("Connected to organization :domain")).replace(":domain",a))}else We("ok",String(t("Connected to Microsoft Entra")))}return}if(400===e.status){const a=await e.json();Ye(),We("error",a.error||String(t("Authentication failed")))}});async function Qe(e="select_account"){if(!j.value)try{const a=await fetch("/admin/identity-providers-api/onboarding/init",{method:"POST"});if(!a.ok)return void We("error",String(t("Failed to initialize connection")));const{requestId:l}=await a.json(),n=window.location.origin+"/admin/identity-providers-api/onboarding/callback",o=await fetch(`/admin/identity-providers-api/oauth/authorize/global?redirect_uri=${encodeURIComponent(n)}&state=${l}&prompt=${e}`);if(o.ok){const e=await o.json();window.open(e.authorizationUrl,"ms-entra-login","width=600,height=600"),je(l)}else We("error",String(t("Failed to start OAuth flow")))}catch{We("error",String(t("Failed to start OAuth flow")))}}async function Ze(){if(!Ce.value&&Ie.value.id){Ce.value=!0;try{console.log("[IdentityProvidersManager] Triggering sync for provider ID:",Ie.value.id);const e=await fetch(`/admin/identity-providers-api/providers/${Ie.value.id}/sync`,{method:"POST"});if(console.log("[IdentityProvidersManager] Sync response status:",e.status),e.ok){const a=await e.json();console.log("[IdentityProvidersManager] Sync result:",a),We("ok",String(t("Sync completed: {created} groups created, {updated} updated, {memberships} membership changes")).replace("{created}",String(a.groupsCreated)).replace("{updated}",String(a.groupsUpdated)).replace("{memberships}",String(a.membershipsUpdated))),await De();const l=J.value.find(e=>e.id===Ie.value.id);l?.config?.lastSyncAt&&(Ie.value.config.lastSyncAt=l.config.lastSyncAt)}else{const a=await e.json().catch(()=>({}));console.error("[IdentityProvidersManager] Sync failed:",a),We("error",a.error||a.message||String(t("Sync failed")))}}catch{We("error",String(t("Sync failed")))}finally{Ce.value=!1}}}return(0,l.sV)(()=>{De()}),(e,a)=>"/add/select-type"===K.value?((0,l.uX)(),(0,l.Wv)(r.default,{key:0},{default:(0,l.k6)(()=>[(0,l.bF)(d.default,{key:"add-select-type",title:(0,n.R1)(t)("Add Provider: Select Type"),"back-button-label":(0,n.R1)(t)("Cancel"),"form-width":1100,"hide-bottom-buttons":"",onBack:a[0]||(a[0]=e=>Pe("/"))},{body:(0,l.k6)(()=>[(0,l.bF)(u.default,null,{default:(0,l.k6)(()=>[(0,l.bF)(c.default,{class:"card-content"},{default:(0,l.k6)(()=>[(0,l.Lk)("div",w,[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)((0,y.EX)(),e=>{return(0,l.uX)(),(0,l.CE)("div",{key:e.type,class:(0,o.C4)(["option-button",[e.type,{disabled:!Oe(e.type)}]]),onClick:t=>{return Oe(e.type)&&void("microsoft-entra"!==(a=e.type)?(Ie.value.type=a,Ie.value.config=(0,y.Y8)(a),Pe(`/add/${a}/configure`)):Pe("/add/microsoft-entra/select-method"));var a},role:"button",tabindex:Oe(e.type)?0:-1,"aria-disabled":!Oe(e.type)},[(0,l.Lk)("div",L,[(0,l.bF)(k.default,{class:"option-logo","icon-name":e.type+"-logo","preserve-original-colors":!0},null,8,["icon-name"]),(0,l.Lk)("strong",null,(0,o.v_)(e.displayName),1)]),(0,l.Lk)("p",null,(0,o.v_)((a=e.type,{"microsoft-entra":t("Authenticate users via Microsoft Entra ID"),feide:t("Authenticate users via Feide")}[a]||"")),1),Oe(e.type)?(0,l.Q3)("",!0):((0,l.uX)(),(0,l.CE)("p",I,(0,o.v_)((0,n.R1)(t)("This identity provider is not enabled for this site. Contact support to enable the license for this provider.")),1))],10,S);var a}),128))])]),_:1})]),_:1})]),_:1},8,["title","back-button-label"])]),_:1})):"/add/microsoft-entra/select-method"===K.value?((0,l.uX)(),(0,l.Wv)(r.default,{key:1},{default:(0,l.k6)(()=>[(0,l.bF)(d.default,{key:"select-method",title:(0,n.R1)(t)("Add Provider: Select Setup Method"),"back-button-label":(0,n.R1)(t)("Cancel"),"form-width":1100,"hide-bottom-buttons":"",onBack:a[3]||(a[3]=e=>Pe("/"))},{body:(0,l.k6)(()=>[(0,l.bF)(u.default,null,{default:(0,l.k6)(()=>[(0,l.bF)(c.default,{class:"card-content"},{default:(0,l.k6)(()=>[(0,l.Lk)("div",V,[(0,l.Lk)("div",{class:"option-button microsoft-entra",onClick:a[1]||(a[1]=e=>async function(){try{const e=await fetch("/admin/identity-providers-api/onboarding/init",{method:"POST"});if(!e.ok)return void We("error",String(t("Failed to initialize onboarding")));const{requestId:a}=await e.json();ke.value=a;const l=window.location.origin+"/admin/identity-providers-api/onboarding/callback",n=await fetch(`/admin/identity-providers-api/oauth/authorize/global?redirect_uri=${encodeURIComponent(l)}&state=${a}&prompt=consent`);if(n.ok){const e=await n.json();e.authorizationUrl&&(window.open(e.authorizationUrl,"wips-onboarding","width=800,height=800"),Pe(`/add/microsoft-entra/waiting/${a}`),Ge(a))}else We("error",String(t("Failed to start onboarding")))}catch{We("error",String(t("Failed to start onboarding")))}}()),role:"button",tabindex:"0"},[(0,l.Lk)("strong",null,(0,o.v_)((0,n.R1)(t)("Connect via WIPS")),1),(0,l.Lk)("p",null,(0,o.v_)((0,n.R1)(t)("Use the shared WIPS application to connect automatically. Recommended for most setups.")),1)]),(0,l.Lk)("div",{class:"option-button microsoft-entra",onClick:a[2]||(a[2]=e=>(Ie.value.type="microsoft-entra",Ie.value.config={...(0,y.Y8)("microsoft-entra"),useCustomApp:!0},Ie.value.enabled=!1,void Pe("/add/microsoft-entra/configure"))),role:"button",tabindex:"0"},[(0,l.Lk)("strong",null,(0,o.v_)((0,n.R1)(t)("Manual Setup (Custom App)")),1),(0,l.Lk)("p",null,(0,o.v_)((0,n.R1)(t)("Register your own Azure app for tighter control over permissions and audit logs. You can also generate a setup link for your Azure administrator.")),1)])])]),_:1})]),_:1})]),_:1},8,["title","back-button-label"])]),_:1})):Le.value?((0,l.uX)(),(0,l.Wv)(r.default,{key:2},{default:(0,l.k6)(()=>[(0,l.bF)(d.default,{key:"select-tenants",title:(0,n.R1)(t)("Add Provider: Select Tenants"),"back-button-label":(0,n.R1)(t)("Cancel"),disabled:j.value,"form-width":1100,onBack:a[5]||(a[5]=e=>Pe("/"))},(0,l.eX)({body:(0,l.k6)(()=>[(0,l.bF)(u.default,null,{default:(0,l.k6)(()=>[(0,l.bF)(b.default,{message:Q.value,"message-type":Z.value,"onUpdate:message":a[4]||(a[4]=e=>Q.value="")},null,8,["message","message-type"]),(0,l.bF)(c.default,{class:"card-content"},{default:(0,l.k6)(()=>[(0,l.Lk)("div",E,[me.value?((0,l.uX)(),(0,l.CE)("p",$,[(0,l.eW)((0,o.v_)((0,n.R1)(t)("Found organization:"))+" ",1),(0,l.Lk)("strong",null,(0,o.v_)(me.value),1)])):(0,l.Q3)("",!0),(0,l.Lk)("p",A,(0,o.v_)((0,n.R1)(t)("Select the Microsoft Entra tenants you want to add as identity providers:")),1),(0,l.Lk)("div",x,[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(_e.value,e=>((0,l.uX)(),(0,l.CE)("div",{key:e.id,class:(0,o.C4)(["domain-item",{selected:ge.value.includes(e.id),"already-added":e.isAdded}]),onClick:t=>!e.isAdded&&function(e){const t=ge.value.indexOf(e);-1===t?ge.value.push(e):ge.value.splice(t,1)}(e.id)},[(0,l.Lk)("div",null,[e.organizationName?((0,l.uX)(),(0,l.CE)("div",U,(0,o.v_)(e.organizationName),1)):(0,l.Q3)("",!0),(0,l.Lk)("div",B,"ID: "+(0,o.v_)(e.id),1),e.domains.length>0?((0,l.uX)(),(0,l.CE)("div",O,(0,o.v_)((0,n.R1)(t)("Verified Domains:"))+" "+(0,o.v_)(e.domains.map(e=>e.name).join(", ")),1)):(0,l.Q3)("",!0),e.isAdded?((0,l.uX)(),(0,l.CE)("div",D,(0,o.v_)((0,n.R1)(t)("Already Added")),1)):(0,l.Q3)("",!0)]),(0,l.Lk)("div",P,[ge.value.includes(e.id)?((0,l.uX)(),(0,l.CE)("span",G,"✓")):e.isAdded?((0,l.uX)(),(0,l.CE)("span",X,"🔒")):(0,l.Q3)("",!0)])],10,W))),128))])])]),_:1})]),_:1})]),_:2},[ge.value.length>0?{name:"buttons",fn:(0,l.k6)(()=>[(0,l.bF)(v.default,{type:"button",highlighted:"",disabled:j.value,label:(0,n.R1)(t)("Continue"),onClick:Me},null,8,["disabled","label"])]),key:"0"}:void 0]),1032,["title","back-button-label","disabled"])]),_:1})):we.value?((0,l.uX)(),(0,l.Wv)(r.default,{key:3},{default:(0,l.k6)(()=>[(0,l.bF)(d.default,{key:"waiting",title:Se.value,"back-button-label":(0,n.R1)(t)("Cancel"),"form-width":1100,"hide-bottom-buttons":"",onBack:a[6]||(a[6]=e=>Pe("/"))},{body:(0,l.k6)(()=>[(0,l.bF)(u.default,null,{default:(0,l.k6)(()=>[(0,l.bF)(c.default,{class:"card-content"},{default:(0,l.k6)(()=>[(0,l.Lk)("div",T,[(0,l.Lk)("p",null,(0,o.v_)((0,n.R1)(t)("A new window has been opened for authentication.")),1),(0,l.Lk)("p",null,(0,o.v_)((0,n.R1)(t)("Please follow the instructions in that window.")),1),(0,l.Lk)("p",q,(0,o.v_)((0,n.R1)(t)("This list will update automatically once you have finished.")),1)])]),_:1})]),_:1})]),_:1},8,["title","back-button-label"])]),_:1})):Re.value?((0,l.uX)(),(0,l.Wv)(r.default,{key:4},{default:(0,l.k6)(()=>
1[(0,l.bF)(d.default,{key:"configure",title:Fe.value?(0,n.R1)(t)("Edit Provider"):(0,n.R1)(t)("Add Provider"),"submit-button-label":(0,n.R1)(t)("Save"),"back-button-label":(0,n.R1)(t)("Cancel"),disabled:j.value,"form-width":1100,form:"",onSubmit:ze,onBack:a[10]||(a[10]=e=>Pe("/"))},{body:(0,l.k6)(()=>[(0,l.bF)(u.default,{class:"sections-surface"},{default:(0,l.k6)(()=>[(0,l.bF)(b.default,{message:Q.value,"message-type":Z.value,"onUpdate:message":a[7]||(a[7]=e=>Q.value="")},null,8,["message","message-type"]),(0,l.bF)(f.A,{title:(0,n.R1)(t)("Basic Information")},{default:(0,l.k6)(()=>[(0,l.bF)(g.default,{type:"text",label:(0,n.R1)(t)("Name"),modelValue:Ie.value.name,"onUpdate:modelValue":a[8]||(a[8]=e=>Ie.value.name=e),placeholder:(0,n.R1)(t)("e.g., Company Identity Provider"),required:""},null,8,["label","modelValue","placeholder"]),(0,l.bF)(g.default,{type:"checkbox",label:(0,n.R1)(t)("Enabled"),modelValue:Ie.value.enabled,"onUpdate:modelValue":a[9]||(a[9]=e=>Ie.value.enabled=e),disabled:!xe.value},null,8,["label","modelValue","disabled"]),xe.value?(0,l.Q3)("",!0):((0,l.uX)(),(0,l.CE)("p",M,(0,o.v_)((0,n.R1)(t)("Complete the provider configuration before enabling.")),1))]),_:1},8,["title"]),Be(Ie.value.type)?((0,l.uX)(),(0,l.Wv)((0,l.$y)(Be(Ie.value.type)),{key:0,config:Ie.value.config,"provider-id":Ie.value.id||void 0,"provider-enabled":Ie.value.enabled,"site-name":ne.value,"site-domain":oe.value,"system-domain":ie.value,"available-domains":ve.value,"organization-name":me.value,"pending-tenant-id":be.value,"is-syncing":Ce.value,"onUpdate:config":Ne,onStartOAuth:Qe,onSelectDomain:Ke,onTriggerSync:Ze},null,40,["config","provider-id","provider-enabled","site-name","site-domain","system-domain","available-domains","organization-name","pending-tenant-id","is-syncing"])):(0,l.Q3)("",!0)]),_:1})]),_:1},8,["title","submit-button-label","back-button-label","disabled"])]),_:1})):((0,l.uX)(),(0,l.Wv)(r.default,{key:5,"viewport-height":""},{default:(0,l.k6)(()=>[(0,l.bF)(d.default,{key:"list",class:"providers-list",title:(0,n.R1)(t)("Identity Providers"),"back-button-label":(0,n.R1)(t)("Close"),"form-width":1100,"hide-bottom-buttons":""},(0,l.eX)({body:(0,l.k6)(()=>[(0,l.bF)(u.default,null,{default:(0,l.k6)(()=>[(0,l.bF)(b.default,{message:Q.value,"message-type":Z.value,"onUpdate:message":a[12]||(a[12]=e=>Q.value="")},null,8,["message","message-type"]),(0,l.bF)(p.A,{columns:re.value,rows:de.value,loading:N.value,clickable:te.value,"empty-text":(0,n.R1)(t)("No identity providers configured."),onRowClick:fe},{"cell-status":(0,l.k6)(({row:e})=>[(0,l.Lk)("span",{class:(0,o.C4)(`status-${ce(e).level}`)},(0,o.v_)(ce(e).label),3)]),"cell-actions":(0,l.k6)(({row:e})=>[(0,l.bF)(m.A,{danger:"",label:(0,n.R1)(t)("Delete"),onClick:a=>{return l=ue(e),void(0,h.a)(t("Delete identity provider"),"",t('Are you sure you want to delete "{name}"? Users who only authenticate via this provider will be disabled.').replace("{name}",l.name),async()=>{Y.value=!0;try{const e=await fetch(`/admin/identity-providers-api/providers/${l.id}`,{method:"DELETE"});e.ok?(We("ok",String(t("Provider deleted"))),await De()):We("error",(await e.json().catch(()=>({}))).error||String(t("Failed to delete")))}catch{We("error",String(t("Failed to delete")))}finally{Y.value=!1}});var l}},null,8,["label","onClick"])]),_:1},8,["columns","rows","loading","clickable","empty-text"])]),_:1})]),_:2},[te.value?{name:"buttons",fn:(0,l.k6)(()=>[(0,l.bF)(v.default,{type:"button",highlighted:"",label:(0,n.R1)(t)("Add Provider"),onClick:a[11]||(a[11]=e=>Pe("/add/select-type"))},null,8,["label"])]),key:"0"}:void 0]),1032,["title","back-button-label"])]),_:1}))}}),K=(0,a("461bee8a7784aa7f").A)(z,[["__scopeId","data-v-994cee30"]])},d474299db57fc6fb(e,t,a){a.r(t),a.d(t,{default:()=>p});var l=a("b641633d6c906d19"),n=a("99c472be6da17922"),o=a("a54fa6d0a722ba3f"),i=a("ab5c7e913102dd40"),s=a("e90e17db7b7ac076"),r=a("388ad1c32495da5d"),d=a("10e5bc8fed45f298"),u=a("90d98d9777252e30");const c=["title"],f=(0,l.pM)({name:"FeideConfigForm",__name:"FeideConfigForm",props:{config:{},systemDomain:{}},emits:["update:config"],setup(e,{emit:t}){const{t:a}=(0,i.s)(),f=e,p=t,v=(0,o.KR)(!1),{copy:m,copied:b}
1=(0,u.C)(),g=(0,l.EW)(()=>f.systemDomain?`https://${f.systemDomain}/api/auth/feide/callback`:""),y=(0,l.EW)({get:()=>f.config.clientId||"",set:e=>L("clientId",e)}),k=(0,l.EW)({get:()=>f.config.clientSecret||"",set:e=>L("clientSecret",e)}),h=(0,l.EW)({get:()=>f.config.autoCreateUsers,set:e=>L("autoCreateUsers",e)}),C=(0,l.EW)({get:()=>f.config.allowLinking,set:e=>L("allowLinking",e)}),_=(0,l.EW)({get:()=>f.config.autoLinkByEmail,set:e=>L("autoLinkByEmail",e)}),F=(0,l.EW)({get:()=>f.config.syncGroups,set:e=>L("syncGroups",e)}),R=(0,l.EW)({get:()=>f.config.syncGroupMemberships,set:e=>L("syncGroupMemberships",e)}),w=(0,l.EW)({get:()=>f.config.requestGroupsOrg,set:e=>L("requestGroupsOrg",e)}),S=(0,l.EW)({get:()=>f.config.requestGroupsEdu,set:e=>L("requestGroupsEdu",e)});function L(e,t){p("update:config",{...f.config,[e]:t})}return(t,i)=>((0,l.uX)(),(0,l.CE)("div",{class:(0,n.C4)(t.$style.root)},[(0,l.bF)(d.A,{title:(0,o.R1)(a)("Feide Configuration")},{default:(0,l.k6)(()=>[(0,l.Lk)("div",{class:(0,n.C4)(t.$style.credentialsSection)},[(0,l.bF)(s.default,{type:"text",label:(0,o.R1)(a)("Client ID"),modelValue:y.value,"onUpdate:modelValue":i[0]||(i[0]=e=>y.value=e),autocomplete:"off"},null,8,["label","modelValue"]),(0,l.Lk)("div",{class:(0,n.C4)(t.$style.secretField)},[e.config.hasCredentials&&!v.value?((0,l.uX)(),(0,l.CE)(l.FK,{key:0},[(0,l.bF)(s.default,{type:"text",label:(0,o.R1)(a)("Client Secret"),"model-value":"********",disabled:""},null,8,["label"]),(0,l.bF)(r.default,{type:"button",label:(0,o.R1)(a)("Change"),"button-style":["text-link"],onClick:i[1]||(i[1]=e=>v.value=!0)},null,8,["label"])],64)):((0,l.uX)(),(0,l.Wv)(s.default,{key:1,type:"password",label:(0,o.R1)(a)("Client Secret"),modelValue:k.value,"onUpdate:modelValue":i[2]||(i[2]=e=>k.value=e),autocomplete:"off"},null,8,["label","modelValue"]))],2),(0,l.Lk)("div",{class:(0,n.C4)(t.$style.infoBox)},[(0,l.Lk)("p",{class:(0,n.C4)(t.$style.smallInfo)},(0,n.v_)((0,o.R1)(a)("Register your application at dashboard.dataporten.no to obtain client credentials.")),3),(0,l.Lk)("p",{class:(0,n.C4)([t.$style.smallInfo,t.$style.redirectUriInfo])},(0,n.v_)((0,o.R1)(a)("Callback URL:")),3),(0,l.Lk)("div",{class:(0,n.C4)(t.$style.uriDisplay)},[(0,l.Lk)("code",null,(0,n.v_)(g.value),1),(0,l.Lk)("button",{class:(0,n.C4)(t.$style.copyBtn),type:"button",onClick:i[3]||(i[3]=e=>(0,o.R1)(m)(g.value)),title:(0,o.R1)(a)("Copy")},(0,n.v_)((0,o.R1)(b)?"✓":"📋"),11,c)],2)],2)],2)]),_:1},8,["title"]),(0,l.bF)(d.A,{title:(0,o.R1)(a)("User Settings")},{default:(0,l.k6)(()=>[(0,l.Lk)("div",{class:(0,n.C4)(t.$style.checkboxGroup)},[(0,l.bF)(s.default,{type:"checkbox",label:(0,o.R1)(a)("Automatically create new users on login"),modelValue:h.value,"onUpdate:modelValue":i[4]||(i[4]=e=>h.value=e)},null,8,["label","modelValue"]),(0,l.bF)(s.default,{type:"checkbox",label:(0,o.R1)(a)("Allow linking to existing accounts"),modelValue:C.value,"onUpdate:modelValue":i[5]||(i[5]=e=>C.value=e)},null,8,["label","modelValue"]),e.config.allowLinking?((0,l.uX)(),(0,l.Wv)(s.default,{key:0,type:"checkbox",label:(0,o.R1)(a)("Automatically link by email address"),modelValue:_.value,"onUpdate:modelValue":i[6]||(i[6]=e=>_.value=e),class:(0,n.C4)(t.$style.dependentOption)},null,8,["label","modelValue","class"])):(0,l.Q3)("",!0)],2)]),_:1},8,["title"]),(0,l.bF)(d.A,{title:(0,o.R1)(a)("Feature Level")},{default:(0,l.k6)(()=>[(0,l.Lk)("div",{class:(0,n.C4)(t.$style.featureOptions)},[(0,l.Lk)("div",{class:(0,n.C4)([t.$style.featureOption,"sso"===e.config.featureLevel&&t.$style.selected]),onClick:i[7]||(i[7]=e=>L("featureLevel","sso"))},[(0,l.Lk)("strong",null,(0,n.v_)((0,o.R1)(a)("SSO Only")),1),(0,l.Lk)("span",{class:(0,n.C4)(t.$style.smallInfo)},(0,n.v_)((0,o.R1)(a)("Single sign-on authentication only")),3)],2),(0,l.Lk)("div",{class:(0,n.C4)([t.$style.featureOption,"sso_sync"===e.config.featureLevel&&t.$style.selected]),onClick:i[8]||(i[8]=e=>L("featureLevel","sso_sync"))},[(0,l.Lk)("strong",null,(0,n.v_)((0,o.R1)(a)("SSO + Group Sync")),1),(0,l.Lk)("span",{class:(0,n.C4)(t.$style.smallInfo)},(0,n.v_)((0,o.R1)(a)("Single sign-on plus automatic group synchronization via Feide Groups API")),3)],2)],2)
1]),_:1},8,["title"]),(0,l.bF)(d.A,{title:(0,o.R1)(a)("Group Scopes"),description:(0,o.R1)(a)("Select which Feide group types to request. These determine which groups are available for synchronization.")},{default:(0,l.k6)(()=>[(0,l.Lk)("div",{class:(0,n.C4)(t.$style.checkboxGroup)},[(0,l.bF)(s.default,{type:"checkbox",label:(0,o.R1)(a)("Organizational groups (groups-org)"),modelValue:w.value,"onUpdate:modelValue":i[9]||(i[9]=e=>w.value=e)},null,8,["label","modelValue"]),(0,l.Lk)("p",{class:(0,n.C4)([t.$style.smallInfo,t.$style.scopeDescription])},(0,n.v_)((0,o.R1)(a)("Organizations, organization units, school owners, and schools.")),3),(0,l.bF)(s.default,{type:"checkbox",label:(0,o.R1)(a)("Education groups (groups-edu)"),modelValue:S.value,"onUpdate:modelValue":i[10]||(i[10]=e=>S.value=e)},null,8,["label","modelValue"]),(0,l.Lk)("p",{class:(0,n.C4)([t.$style.smallInfo,t.$style.scopeDescription])},(0,n.v_)((0,o.R1)(a)("Courses, programs of study, cohorts, classes, teaching groups, and basis groups.")),3)],2)]),_:1},8,["title","description"]),"sso_sync"===e.config.featureLevel?((0,l.uX)(),(0,l.Wv)(d.A,{key:0,title:(0,o.R1)(a)("Group Sync"),description:(0,o.R1)(a)("Automatically sync Feide groups as CMS user groups and keep memberships in sync at login.")},{default:(0,l.k6)(()=>[(0,l.Lk)("div",{class:(0,n.C4)(t.$style.checkboxGroup)},[(0,l.bF)(s.default,{type:"checkbox",label:(0,o.R1)(a)("Enable automatic group sync"),modelValue:F.value,"onUpdate:modelValue":i[11]||(i[11]=e=>F.value=e)},null,8,["label","modelValue"]),e.config.syncGroups?((0,l.uX)(),(0,l.Wv)(s.default,{key:0,type:"checkbox",label:(0,o.R1)(a)("Sync user group memberships"),modelValue:R.value,"onUpdate:modelValue":i[12]||(i[12]=e=>R.value=e),class:(0,n.C4)(t.$style.dependentOption)},null,8,["label","modelValue","class"])):(0,l.Q3)("",!0)],2),(0,l.Lk)("div",{class:(0,n.C4)(t.$style.infoBox)},[(0,l.Lk)("strong",null,(0,n.v_)((0,o.R1)(a)("How it works")),1),(0,l.Lk)("p",{class:(0,n.C4)([t.$style.smallInfo,t.$style.howItWorksInfo])},(0,n.v_)((0,o.R1)(a)("Feide group sync happens at login time using the user's access token. Groups are fetched from the Feide Groups API and memberships are kept in sync automatically.")),3)],2)]),_:1},8,["title","description"])):(0,l.Q3)("",!0)],2))}}),p=(0,a("461bee8a7784aa7f").A)(f,[["__cssModules",{$style:{root:"FeideConfigForm__root--qVWAn",smallInfo:"FeideConfigForm__smallInfo--B2J16",redirectUriInfo:"FeideConfigForm__redirectUriInfo--Zgq8M",howItWorksInfo:"FeideConfigForm__howItWorksInfo--YY0m1",scopeDescription:"FeideConfigForm__scopeDescription--Z2yDg",checkboxGroup:"FeideConfigForm__checkboxGroup--FeTqP",dependentOption:"FeideConfigForm__dependentOption--pDt6E",infoBox:"FeideConfigForm__infoBox--jdvYr",credentialsSection:"FeideConfigForm__credentialsSection--VPcWi",secretField:"FeideConfigForm__secretField--At9rS",featureOptions:"FeideConfigForm__featureOptions--eO4JD",featureOption:"FeideConfigForm__featureOption--dz5_s",selected:"FeideConfigForm__selected--mbqZu",uriDisplay:"FeideConfigForm__uriDisplay--Pt0NC",copyBtn:"FeideConfigForm__copyBtn--KAk64"}}]])},"2840db5415c0b78b"(e,t,a){a.r(t),a.d(t,{default:()=>i});var l=a("b641633d6c906d19");const n={viewBox:"0 0 21 21",xmlns:"http://www.w3.org/2000/svg"},o=(0,l.pM)({name:"MicrosoftLogo"}),i=(0,a("461bee8a7784aa7f").A)(o,[["render",function(e,t,a,o,i,s){return(0,l.uX)(),(0,l.CE)("svg",n,[...t[0]||(t[0]=[(0,l.Lk)("rect",{x:"1",y:"1",width:"9",height:"9",fill:"#f35325"},null,-1),(0,l.Lk)("rect",{x:"11",y:"1",width:"9",height:"9",fill:"#81bc06"},null,-1),(0,l.Lk)("rect",{x:"1",y:"11",width:"9",height:"9",fill:"#05a6f0"},null,-1),(0,l.Lk)("rect",{x:"11",y:"11",width:"9",height:"9",fill:"#ffba08"},null,-1)])])}]])},"08fafc0616ba6aa5"(e,t,a){a.r(t),a.d(t,{default:()=>p});var l=a("b641633d6c906d19"),n=a("99c472be6da17922"),o=a("a54fa6d0a722ba3f"),i=a("ab5c7e913102dd40"),s=a("e90e17db7b7ac076"),r=a("388ad1c32495da5d"),d=a("10e5bc8fed45f298"),u=a("90d98d9777252e30");const c=["title"],f=(0,l.pM)({name:"VippsConfigForm",__name:"VippsConfigForm",props:{config:{},systemDomain:{}},emits:["update:config"],setup(e,{emit:t}){const{t:a}=(0,i.s)(),f=e,p=t,v=(0,o.KR)(!1),{copy:m,copied:b}
1=(0,u.C)(),g=(0,l.EW)(()=>f.systemDomain?`https://${f.systemDomain}/api/auth/vipps/callback`:""),y=(0,l.EW)({get:()=>f.config.clientId||"",set:e=>S("clientId",e)}),k=(0,l.EW)({get:()=>f.config.clientSecret||"",set:e=>S("clientSecret",e)}),h=(0,l.EW)({get:()=>f.config.autoCreateUsers,set:e=>S("autoCreateUsers",e)}),C=(0,l.EW)({get:()=>f.config.allowLinking,set:e=>S("allowLinking",e)}),_=(0,l.EW)({get:()=>f.config.autoLinkByEmail,set:e=>S("autoLinkByEmail",e)}),F=(0,l.EW)({get:()=>f.config.autoLinkByPhoneNumber,set:e=>S("autoLinkByPhoneNumber",e)}),R=(0,l.EW)({get:()=>f.config.requestAddress,set:e=>S("requestAddress",e)}),w=(0,l.EW)({get:()=>f.config.requestBirthDate,set:e=>S("requestBirthDate",e)});function S(e,t){p("update:config",{...f.config,[e]:t})}return(t,i)=>((0,l.uX)(),(0,l.CE)("div",{class:(0,n.C4)(t.$style.root)},[(0,l.bF)(d.A,{title:(0,o.R1)(a)("Vipps Login Configuration")},{default:(0,l.k6)(()=>[(0,l.Lk)("div",{class:(0,n.C4)(t.$style.credentialsSection)},[(0,l.bF)(s.default,{type:"text",label:(0,o.R1)(a)("Client ID"),modelValue:y.value,"onUpdate:modelValue":i[0]||(i[0]=e=>y.value=e),autocomplete:"off"},null,8,["label","modelValue"]),(0,l.Lk)("div",{class:(0,n.C4)(t.$style.secretField)},[e.config.hasCredentials&&!v.value?((0,l.uX)(),(0,l.CE)(l.FK,{key:0},[(0,l.bF)(s.default,{type:"text",label:(0,o.R1)(a)("Client Secret"),"model-value":"********",disabled:""},null,8,["label"]),(0,l.bF)(r.default,{type:"button",label:(0,o.R1)(a)("Change"),"button-style":["text-link"],onClick:i[1]||(i[1]=e=>v.value=!0)},null,8,["label"])],64)):((0,l.uX)(),(0,l.Wv)(s.default,{key:1,type:"password",label:(0,o.R1)(a)("Client Secret"),modelValue:k.value,"onUpdate:modelValue":i[2]||(i[2]=e=>k.value=e),autocomplete:"off"},null,8,["label","modelValue"]))],2),(0,l.Lk)("div",{class:(0,n.C4)(t.$style.infoBox)},[(0,l.Lk)("p",{class:(0,n.C4)(t.$style.smallInfo)},(0,n.v_)((0,o.R1)(a)("Register a Vipps Login merchant at portal.vipps.no and paste the client credentials here.")),3),(0,l.Lk)("p",{class:(0,n.C4)([t.$style.smallInfo,t.$style.redirectUriInfo])},(0,n.v_)((0,o.R1)(a)("Callback URL:")),3),(0,l.Lk)("div",{class:(0,n.C4)(t.$style.uriDisplay)},[(0,l.Lk)("code",null,(0,n.v_)(g.value),1),(0,l.Lk)("button",{class:(0,n.C4)(t.$style.copyBtn),type:"button",onClick:i[3]||(i[3]=e=>(0,o.R1)(m)(g.value)),title:(0,o.R1)(a)("Copy")},(0,n.v_)((0,o.R1)(b)?"✓":"📋"),11,c)],2)],2)],2)]),_:1},8,["title"]),(0,l.bF)(d.A,{title:(0,o.R1)(a)("Environment")},{default:(0,l.k6)(()=>[(0,l.Lk)("div",{class:(0,n.C4)(t.$style.featureOptions)},[(0,l.Lk)("div",{class:(0,n.C4)([t.$style.featureOption,"test"===e.config.environment&&t.$style.selected]),onClick:i[4]||(i[4]=e=>S("environment","test"))},[(0,l.Lk)("strong",null,(0,n.v_)((0,o.R1)(a)("Test")),1),(0,l.Lk)("span",{class:(0,n.C4)(t.$style.smallInfo)},(0,n.v_)((0,o.R1)(a)("apitest.vipps.no — use while you are integrating and for merchant testing.")),3)],2),(0,l.Lk)("div",{class:(0,n.C4)([t.$style.featureOption,"production"===e.config.environment&&t.$style.selected]),onClick:i[5]||(i[5]=e=>S("environment","production"))},[(0,l.Lk)("strong",null,(0,n.v_)((0,o.R1)(a)("Production")),1),(0,l.Lk)("span",{class:(0,n.C4)(t.$style.smallInfo)},(0,n.v_)((0,o.R1)(a)("api.vipps.no — real Vipps accounts, real logins.")),3)],2)],2)]),_:1},8,["title"]),(0,l.bF)(d.A,{title:(0,o.R1)(a)("User Settings")},{default:(0,l.k6)(()=>[(0,l.Lk)("div",{class:(0,n.C4)(t.$style.checkboxGroup)},[(0,l.bF)(s.default,{type:"checkbox",label:(0,o.R1)(a)("Automatically create new users on login"),modelValue:h.value,"onUpdate:modelValue":i[6]||(i[6]=e=>h.value=e)},null,8,["label","modelValue"]),(0,l.bF)(s.default,{type:"checkbox",label:(0,o.R1)(a)("Allow linking to existing accounts"),modelValue:C.value,"onUpdate:modelValue":i[7]||(i[7]=e=>C.value=e)},null,8,["label","modelValue"]),e.config.allowLinking?((0,l.uX)(),(0,l.Wv)(s.default,{key:0,type:"checkbox",label:(0,o.R1)(a)("Automatically link by phone number"),modelValue:F.value,"onUpdate:modelValue":i[8]||(i[8]=e=>F.value=e),class:(0,n.C4)(t.$style.dependentOption)},null,8,["label","modelValue","class"])):(0,l.Q3)("",!0),e.config.allowLinking?((0,l.uX)(),(0,l.Wv)(s.default,{key:1,type:"checkbox",label:(0,o.R1)(a)("Automatically link by email address"),modelValue:_.value,"onUpdate:modelValue":i[9]||(i[9]=e=>_.value=e),class:(0,n.C4)(t.$style.dependentOption)},null,8,["label","modelValue","class"])):(0,l.Q3)("",!0)],2)]),_:1},8,["title"]),(0,l.bF)(d.A,{title:(0,o.R1)(a)("Extra Scopes"),description:(0,o.R1)(a)("Request additional user information from Vipps Login. Users are shown a consent dialog listing every scope you enable.")},{default:(0,l.k6)(()=>[(0,l.Lk)("div",{class:(0,n.C4)(t.$style.checkboxGroup)},[(0,l.bF)(s.default,{type:"checkbox",label:(0,o.R1)(a)("Request postal address"),modelValue:R.value,"onUpdate:modelValue":i[10]||(i[10]=e=>R.value=e)},null,8,["label","modelValue"]),(0,l.bF)(s.default,{type:"checkbox",label:(0,o.R1)(a)("Request date of birth"),modelValue:w.value,"onUpdate:modelValue":i[11]||(i[11]=e=>w.value=e)},null,8,["label","modelValue"])],2)]),_:1},8,["title","description"])],2))}}),p=(0,a("461bee8a7784aa7f").A)(f,[["__cssModules",{$style:{root:"VippsConfigForm__root--ZdwUs",smallInfo:"VippsConfigForm__smallInfo--RDE9u",redirectUriInfo:"VippsConfigForm__redirectUriInfo--j_3N1",checkboxGroup:"VippsConfigForm__checkboxGroup--EXH8f",depen
1dentOption:"VippsConfigForm__dependentOption--RYnk8",infoBox:"VippsConfigForm__infoBox--PDDsR",credentialsSection:"VippsConfigForm__credentialsSection--ELI6B",secretField:"VippsConfigForm__secretField--YAiQg",featureOptions:"VippsConfigForm__featureOptions--YVpho",featureOption:"VippsConfigForm__featureOption--jkR8j",selected:"VippsConfigForm__selected--brGvx",uriDisplay:"VippsConfigForm__uriDisplay--dTaa9",copyBtn:"VippsConfigForm__copyBtn--ugiLM"}}]])}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.