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_201231b9b4064250888c0956452a9bee.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
17 var uri = new Uri(absoluteUri);
18
19 // 1) Sti uden query
20 var basePath = uri.GetLeftPart(UriPartial.Path);
21
22 // 2) Parse query-parametre
23 var parameters = QueryHelpers.ParseQuery(uri.Query);
24
25 // 3) Fjern CurrencyCode
26 parameters.Remove("CurrencyCode");
27
28 // 4) Genopbyg query-streng
29 string newQuery = string.Join("&",
30 parameters.SelectMany(kvp => kvp.Value, (kvp, value) =>
31 $"{Uri.EscapeDataString(kvp.Key)}={Uri.EscapeDataString(value)}"
32 )
33 );
34
35 // 5) Sammensæt ny URL
36 string cleanedUrl = string.IsNullOrEmpty(newQuery)
37 ? basePath
38 : $"{basePath}?{newQuery}";
39
40 absoluteUri = cleanedUrl;
41
42 string redirectPage = !string.IsNullOrEmpty(goBackToPage) ? "Default.aspx?Id=" + goBackToPage : absoluteUri;
43 redirectPage = string.IsNullOrEmpty(goBackToPage) && !string.IsNullOrEmpty(GetString("UserManagement:User.Login.SuccessRedirectToPage")) ? GetString("UserManagement:User.Login.SuccessRedirectToPage") : redirectPage;
44
45 string createAccountPageLink = Pageview.CurrentParagraph.Item["CreateAccountPage"] != null ? Pageview.CurrentParagraph.Item["CreateAccountPage"].ToString() : "";
46
47 string contentPadding = Pageview.CurrentParagraph.Item["ContentPadding"] != null ? Pageview.CurrentParagraph.Item["ContentPadding"].ToString() : "";
48 contentPadding = contentPadding == "none" ? "px-0" : contentPadding;
49 contentPadding = contentPadding == "small" ? "p-2 p-md-3" : contentPadding;
50 contentPadding = contentPadding == "large" ? "p-4 p-md-5" : contentPadding;
51 var themeRaw = Pageview.CurrentParagraph.Item["Theme"]?.ToString();
52 string theme = !string.IsNullOrEmpty(themeRaw) ? " theme " + themeRaw.Replace(" ", "").Trim().ToLower() : " theme light";
53
54 var loginProvider = GetLoop("DWExtranetExternalLoginProviders");
55 }
56
57 <div class="@(contentPadding)">
58
59 @if (Pageview.Area.CultureInfo.TwoLetterISOLanguageName == "da" && !string.IsNullOrEmpty(GetString($"DW_extranet_error_dk")))
60 {
61 <div class="alert alert-danger" role="alert">
62 @GetString($"DW_extranet_error_dk")
63 </div>
64 }
65 else if (!string.IsNullOrEmpty(GetString("DW_extranet_error_uk")))
66 {
67 <div class="alert alert-danger" role="alert">
68 @GetString($"DW_extranet_error_uk")
69 </div>
70 }
71
72 <div class="card border-0@(theme) mx-auto" style="max-width: 30rem;">
73
74 <div class="card-header text-center p-4 border-bottom">
75 <h4 class="display-6 m-0">@pageTitle</h4>
76 @if (!string.IsNullOrEmpty(createAccountPageLink))
77 {
78 <p class="card-text mt-2">@Translate("Don't have an account yet?") <a href="@createAccountPageLink">@Translate("Create account here")</a></p>
79 }
80 </div>
81
82 <div class="card-body p-4">
83 <form class="grid grid-1 gap-4" method="post">
84 <input type="hidden" name="ID" value="@pageId">
85 <input type="hidden" name="DWExtranetUsernameRemember" value="True">
86 <input type="hidden" name="DWExtranetPasswordRemember" value="True">
87 <input type="hidden" name="GoBackToPage" value="@goBackToPage">
88 <input type="hidden" name="LoginAction" value="Login">
89
90 @if (!Convert.ToBoolean(Pageview.CurrentParagraph.Item["EnableUserStartPageRedirect"])) {
91 <input type="hidden" name="redirect" value="@redirectPage">
92 }
93
94 @foreach(LoopItem provider in loginProvider)
95 {
96 string iconPath = "/Files/IconsLoginProviders/";
97 string providerName = provider.GetString("ProviderName").ToLower();
98 string providerIcon = string.Empty;
99
100 if(providerName.Contains("azure"))
101 {
102 providerIcon = "azure";
103 }
104 if(providerName.Contains("google"))
105 {
106 providerIcon = "google";
107 }
108
109 <div class="d-grid">
110 <a class="btn btn-primary-outline btn-lg" href="/Admin/Public/Social/ExternalLogin.aspx?action=login&providerID=@provider.GetValue("ProviderID")">
111 <span class="d-flex justify-content-center align-items-center">
112 <span class="icon-3 me-2">
113 @ReadFile(iconPath + providerIcon + ".svg")
114 </span>
115 <span>@Translate("Sign in with") @provider.GetString("ProviderName")</span>
116 </span>
117 </a>
118 </div>
119
120 <div class="d-flex align-items-center gap-3">
121 <span class="border-top flex-fill"></span>
122 <span class="text-uppercase">@Translate("or")</span>
123 <span class="border-top flex-fill"></span>
124 </div>
125 }
126
127 <div>
128 <div class="form-label fs-7 mb-0 opacity-75">@Translate("Your email")</div>
129 <div class="form-floating">
130 <input type="text" class="form-control" id="login-username" name="username" placeholder="@Translate("Email")" required>
131 <label for="login-username">@Translate("Email")</label>
132 </div>
133
134 </div>
135
136 <div>
137 <div class="d-flex justify-content-between align-items-center">
138 <div class="form-label fs-7 mb-0 opacity-75">@Translate("Your password")</div>
139 <a tabindex="-1" class="form-label-link" href="/Default.aspx?id=@(signInProfilePageId)&LoginAction=Recovery" id="ForgotPasswordButton">@Translate("Forgot password?")</a>
140 </div>
141
142 <div class="form-floating">
143 <input type="password" class="form-control" id="LoginPassword" name="password" placeholder="@Translate("Password")" required>
144 <label for="LoginPassword">@Translate("Password")</label>
145 </div>
146 </div>
147
148 <div class="form-check">
149 <input class="form-check-input" type="checkbox" value="True" name="Autologin" id="RememberMe">
150 <label class="form-check-label" for="RememberMe">@Translate("Keep me signed in")</label>
151 </div>
152
153 <div class="d-grid">
154 <button type="submit" class="btn btn-primary btn-lg" id="SignInButton">@Translate("Sign in")</button>
155 </div>
156 </form>
157 </div>
158 </div>
159 </div>
160
161