Error executing template "Designs/Swift/UserManagement/Login/Login.cshtml"
System.UriFormatException: Invalid URI: The URI is empty.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind, UriCreationOptions& creationOptions)
at System.Uri..ctor(String uriString)
at CompiledRazorTemplates.Dynamic.RazorEngine_0e858709de1d47aa9b161473f6918c1c.ExecuteAsync()
at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
2 @using Dynamicweb
3 @using Dynamicweb.Environment
4 @using System.Globalization
5 @using Microsoft.AspNetCore.WebUtilities
6
7 @{
8 string pageTitle = Pageview.Page.GetDisplayName();
9 string pageId = GetGlobalValue("Global:Page.ID");
10 int signInProfilePageId = Pageview.Page.ID;
11 string currentUserId = GetGlobalValue("Global:Extranet.UserID");
12 string goBackToPage = Dynamicweb.Context.Current.Request.GetString("GoBackToPage"); //parameter from anonymous checkout
13 string absoluteUri = Dynamicweb.Context.Current?.Request?.UrlReferrer?.AbsoluteUri != null ? Dynamicweb.Context.Current.Request.UrlReferrer.AbsoluteUri : "";
14
15 // Custom: Logik som fjerner CurrencyCode fra action i form
16 var uri = new Uri(absoluteUri);
17 // 1) Sti uden query
18 var basePath = uri.GetLeftPart(UriPartial.Path);
19 // 2) Parse query-parametre
20 var parameters = QueryHelpers.ParseQuery(uri.Query);
21 // 3) Fjern CurrencyCode
22 parameters.Remove("CurrencyCode");
23 // 4) Genopbyg query-streng
24 string newQuery = string.Join("&",
25 parameters.SelectMany(kvp => kvp.Value, (kvp, value) =>
26 $"{Uri.EscapeDataString(kvp.Key)}={Uri.EscapeDataString(value)}"
27 )
28 );
29 // 5) Sammensæt ny URL
30 string cleanedUrl = string.IsNullOrEmpty(newQuery)
31 ? basePath
32 : $"{basePath}?{newQuery}";
33 absoluteUri = cleanedUrl;
34
35 string redirectPage = !string.IsNullOrEmpty(goBackToPage) ? "Default.aspx?Id=" + goBackToPage : absoluteUri;
36 redirectPage = string.IsNullOrEmpty(goBackToPage) && !string.IsNullOrEmpty(GetString("UserManagement:User.Login.SuccessRedirectToPage")) ? GetString("UserManagement:User.Login.SuccessRedirectToPage") : redirectPage;
37
38 string createAccountPageLink = Pageview.CurrentParagraph.Item["CreateAccountPage"] != null ? Pageview.CurrentParagraph.Item["CreateAccountPage"].ToString() : "";
39
40 string contentPadding = Pageview.CurrentParagraph.Item["ContentPadding"] != null ? Pageview.CurrentParagraph.Item["ContentPadding"].ToString() : "";
41 contentPadding = contentPadding == "none" ? "px-0" : contentPadding;
42 contentPadding = contentPadding == "small" ? "p-2 p-md-3" : contentPadding;
43 contentPadding = contentPadding == "large" ? "p-4 p-md-5" : contentPadding;
44 var themeRaw = Pageview.CurrentParagraph.Item["Theme"]?.ToString();
45 string theme = !string.IsNullOrEmpty(themeRaw) ? " theme " + themeRaw.Replace(" ", "").Trim().ToLower() : " theme light";
46
47 var loginProvider = GetLoop("DWExtranetExternalLoginProviders");
48 }
49
50 <div class="@(contentPadding)">
51
52 @if (Pageview.Area.CultureInfo.TwoLetterISOLanguageName == "da" && !string.IsNullOrEmpty(GetString($"DW_extranet_error_dk")))
53 {
54 <div class="alert alert-danger" role="alert">
55 @GetString($"DW_extranet_error_dk")
56 </div>
57 }
58 else if (!string.IsNullOrEmpty(GetString("DW_extranet_error_uk")))
59 {
60 <div class="alert alert-danger" role="alert">
61 @GetString($"DW_extranet_error_uk")
62 </div>
63 }
64
65 <div class="card border-0@(theme) mx-auto" style="max-width: 30rem;">
66
67 <div class="card-header text-center p-4 border-bottom">
68 <h4 class="display-6 m-0">@pageTitle</h4>
69 @if (!string.IsNullOrEmpty(createAccountPageLink))
70 {
71 <p class="card-text mt-2">@Translate("Don't have an account yet?") <a href="@createAccountPageLink">@Translate("Create account here")</a></p>
72 }
73 </div>
74
75 <div class="card-body p-4">
76 <form class="grid grid-1 gap-4" method="post">
77 <input type="hidden" name="ID" value="@pageId">
78 <input type="hidden" name="DWExtranetUsernameRemember" value="True">
79 <input type="hidden" name="DWExtranetPasswordRemember" value="True">
80 <input type="hidden" name="GoBackToPage" value="@goBackToPage">
81 <input type="hidden" name="LoginAction" value="Login">
82
83 @if (!Convert.ToBoolean(Pageview.CurrentParagraph.Item["EnableUserStartPageRedirect"])) {
84 <input type="hidden" name="redirect" value="@redirectPage">
85 }
86
87 @foreach(LoopItem provider in loginProvider)
88 {
89 string iconPath = "/Files/IconsLoginProviders/";
90 string providerName = provider.GetString("ProviderName").ToLower();
91 string providerIcon = string.Empty;
92
93 if(providerName.Contains("azure"))
94 {
95 providerIcon = "azure";
96 }
97 if(providerName.Contains("google"))
98 {
99 providerIcon = "google";
100 }
101
102 <div class="d-grid">
103 <a class="btn btn-primary-outline btn-lg" href="/Admin/Public/Social/ExternalLogin.aspx?action=login&providerID=@provider.GetValue("ProviderID")">
104 <span class="d-flex justify-content-center align-items-center">
105 <span class="icon-3 me-2">
106 @ReadFile(iconPath + providerIcon + ".svg")
107 </span>
108 <span>@Translate("Sign in with") @provider.GetString("ProviderName")</span>
109 </span>
110 </a>
111 </div>
112
113 <div class="d-flex align-items-center gap-3">
114 <span class="border-top flex-fill"></span>
115 <span class="text-uppercase">@Translate("or")</span>
116 <span class="border-top flex-fill"></span>
117 </div>
118 }
119
120 <div>
121 <div class="form-label fs-7 mb-0 opacity-75">@Translate("Your email")</div>
122 <div class="form-floating">
123 <input type="text" class="form-control" id="login-username" name="username" placeholder="@Translate("Email")" required>
124 <label for="login-username">@Translate("Email")</label>
125 </div>
126
127 </div>
128
129 <div>
130 <div class="d-flex justify-content-between align-items-center">
131 <div class="form-label fs-7 mb-0 opacity-75">@Translate("Your password")</div>
132 <a tabindex="-1" class="form-label-link" href="/Default.aspx?id=@(signInProfilePageId)&LoginAction=Recovery" id="ForgotPasswordButton">@Translate("Forgot password?")</a>
133 </div>
134
135 <div class="form-floating">
136 <input type="password" class="form-control" id="LoginPassword" name="password" placeholder="@Translate("Password")" required>
137 <label for="LoginPassword">@Translate("Password")</label>
138 </div>
139 </div>
140
141 <div class="form-check">
142 <input class="form-check-input" type="checkbox" value="True" name="Autologin" id="RememberMe">
143 <label class="form-check-label" for="RememberMe">@Translate("Keep me signed in")</label>
144 </div>
145
146 <div class="d-grid">
147 <button type="submit" class="btn btn-primary btn-lg" id="SignInButton">@Translate("Sign in")</button>
148 </div>
149 </form>
150 </div>
151 </div>
152 </div>
153
154