Templating 268 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. commit eabde9fe9e0efb71fd8eb6ff1cc709743d06320d
  2. Author: Chris Ross (ASP.NET) <[email protected]>
  3. Date: Fri Dec 29 09:42:06 2017 -0800
  4. Add CookiePolicy and consent UI
  5. diff --git a/build/dependencies.props b/build/dependencies.props
  6. index dc326332868..e55a7f3dba1 100644
  7. --- a/build/dependencies.props
  8. +++ b/build/dependencies.props
  9. @@ -4,43 +4,44 @@
  10. </PropertyGroup>
  11. <PropertyGroup Label="Package Versions">
  12. <InternalAspNetCoreSdkPackageVersion>2.1.0-preview1-15652</InternalAspNetCoreSdkPackageVersion>
  13. - <MicrosoftAspNetCoreAllPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreAllPackageVersion>
  14. - <MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>
  15. - <MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion>
  16. - <MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion>
  17. - <MicrosoftAspNetCoreCertificatesGenerationSourcesPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreCertificatesGenerationSourcesPackageVersion>
  18. - <MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion>
  19. - <MicrosoftAspNetCoreHttpsPolicyPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreHttpsPolicyPackageVersion>
  20. - <MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>
  21. - <MicrosoftAspNetCoreIdentityUIPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreIdentityUIPackageVersion>
  22. - <MicrosoftAspNetCoreMvcPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreMvcPackageVersion>
  23. - <MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion>
  24. - <MicrosoftAspNetCorePackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCorePackageVersion>
  25. - <MicrosoftAspNetCoreSpaServicesExtensionsPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreSpaServicesExtensionsPackageVersion>
  26. - <MicrosoftAspNetCoreSpaServicesPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreSpaServicesPackageVersion>
  27. - <MicrosoftAspNetCoreStaticFilesPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreStaticFilesPackageVersion>
  28. - <MicrosoftAspNetCoreTestingPackageVersion>2.1.0-preview1-27928</MicrosoftAspNetCoreTestingPackageVersion>
  29. + <MicrosoftAspNetCoreAllPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreAllPackageVersion>
  30. + <MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>
  31. + <MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion>
  32. + <MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion>
  33. + <MicrosoftAspNetCoreCertificatesGenerationSourcesPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreCertificatesGenerationSourcesPackageVersion>
  34. + <MicrosoftAspNetCoreCookiePolicyPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreCookiePolicyPackageVersion>
  35. + <MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion>
  36. + <MicrosoftAspNetCoreHttpsPolicyPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreHttpsPolicyPackageVersion>
  37. + <MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>
  38. + <MicrosoftAspNetCoreIdentityUIPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreIdentityUIPackageVersion>
  39. + <MicrosoftAspNetCoreMvcPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreMvcPackageVersion>
  40. + <MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion>
  41. + <MicrosoftAspNetCorePackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCorePackageVersion>
  42. + <MicrosoftAspNetCoreSpaServicesExtensionsPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreSpaServicesExtensionsPackageVersion>
  43. + <MicrosoftAspNetCoreSpaServicesPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreSpaServicesPackageVersion>
  44. + <MicrosoftAspNetCoreStaticFilesPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreStaticFilesPackageVersion>
  45. + <MicrosoftAspNetCoreTestingPackageVersion>2.1.0-preview1-28000</MicrosoftAspNetCoreTestingPackageVersion>
  46. <MicrosoftBuildFrameworkPackageVersion>15.3.409</MicrosoftBuildFrameworkPackageVersion>
  47. <MicrosoftBuildUtilitiesCorePackageVersion>15.3.409</MicrosoftBuildUtilitiesCorePackageVersion>
  48. - <MicrosoftEntityFrameworkCoreDesignPackageVersion>2.1.0-preview1-27928</MicrosoftEntityFrameworkCoreDesignPackageVersion>
  49. - <MicrosoftEntityFrameworkCoreSqlitePackageVersion>2.1.0-preview1-27928</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
  50. - <MicrosoftEntityFrameworkCoreSqlServerPackageVersion>2.1.0-preview1-27928</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
  51. - <MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion>2.1.0-preview1-27928</MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion>
  52. - <MicrosoftEntityFrameworkCoreToolsPackageVersion>2.1.0-preview1-27928</MicrosoftEntityFrameworkCoreToolsPackageVersion>
  53. - <MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>2.1.0-preview1-27928</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
  54. - <MicrosoftExtensionsProcessSourcesPackageVersion>2.1.0-preview1-27928</MicrosoftExtensionsProcessSourcesPackageVersion>
  55. + <MicrosoftEntityFrameworkCoreDesignPackageVersion>2.1.0-preview1-28000</MicrosoftEntityFrameworkCoreDesignPackageVersion>
  56. + <MicrosoftEntityFrameworkCoreSqlitePackageVersion>2.1.0-preview1-28000</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
  57. + <MicrosoftEntityFrameworkCoreSqlServerPackageVersion>2.1.0-preview1-28000</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
  58. + <MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion>2.1.0-preview1-28000</MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion>
  59. + <MicrosoftEntityFrameworkCoreToolsPackageVersion>2.1.0-preview1-28000</MicrosoftEntityFrameworkCoreToolsPackageVersion>
  60. + <MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>2.1.0-preview1-28000</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
  61. + <MicrosoftExtensionsProcessSourcesPackageVersion>2.1.0-preview1-28000</MicrosoftExtensionsProcessSourcesPackageVersion>
  62. <MicrosoftNETCoreApp20PackageVersion>2.0.0</MicrosoftNETCoreApp20PackageVersion>
  63. - <MicrosoftNETCoreApp21PackageVersion>2.1.0-preview1-26016-05</MicrosoftNETCoreApp21PackageVersion>
  64. + <MicrosoftNETCoreApp21PackageVersion>2.1.0-preview1-26102-01</MicrosoftNETCoreApp21PackageVersion>
  65. <MicrosoftNETTestSdkPackageVersion>15.3.0</MicrosoftNETTestSdkPackageVersion>
  66. - <MicrosoftVisualStudioWebBrowserLinkPackageVersion>2.1.0-preview1-27928</MicrosoftVisualStudioWebBrowserLinkPackageVersion>
  67. - <MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion>2.1.0-preview1-27928</MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion>
  68. - <MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion>2.1.0-preview1-27928</MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion>
  69. + <MicrosoftVisualStudioWebBrowserLinkPackageVersion>2.1.0-preview1-28000</MicrosoftVisualStudioWebBrowserLinkPackageVersion>
  70. + <MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion>2.1.0-preview1-28000</MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion>
  71. + <MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion>2.1.0-preview1-28000</MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion>
  72. <NETStandardLibraryPackageVersion>2.0.0</NETStandardLibraryPackageVersion>
  73. <SeleniumFirefoxWebDriverPackageVersion>0.19.0</SeleniumFirefoxWebDriverPackageVersion>
  74. <SeleniumSupportPackageVersion>3.7.0</SeleniumSupportPackageVersion>
  75. <SeleniumWebDriverMicrosoftDriverPackageVersion>16.16299.0</SeleniumWebDriverMicrosoftDriverPackageVersion>
  76. <SeleniumWebDriverPackageVersion>3.7.0</SeleniumWebDriverPackageVersion>
  77. - <SystemSecurityPermissionsPackageVersion>4.5.0-preview1-26016-05</SystemSecurityPermissionsPackageVersion>
  78. + <SystemSecurityPermissionsPackageVersion>4.5.0-preview1-26102-01</SystemSecurityPermissionsPackageVersion>
  79. <XunitAnalyzersPackageVersion>0.8.0</XunitAnalyzersPackageVersion>
  80. <XunitPackageVersion>2.3.1</XunitPackageVersion>
  81. <XunitRunnerVisualStudioPackageVersion>2.3.1</XunitRunnerVisualStudioPackageVersion>
  82. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj b/src/Microsoft.DotNet.Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj
  83. index bf08945e5e5..b9133c5854a 100644
  84. --- a/src/Microsoft.DotNet.Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj
  85. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj
  86. @@ -17,6 +17,7 @@
  87. MicrosoftAspNetCoreAuthenticationCookiesPackageVersion=$(MicrosoftAspNetCoreAuthenticationCookiesPackageVersion);
  88. MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion=$(MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion);
  89. MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion=$(MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion);
  90. + MicrosoftAspNetCoreCookiePolicyPackageVersion=$(MicrosoftAspNetCoreCookiePolicyPackageVersion);
  91. MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion=$(MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion);
  92. MicrosoftAspNetCoreHttpsPolicyPackageVersion=$(MicrosoftAspNetCoreHttpsPolicyPackageVersion);
  93. MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion=$(MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion);
  94. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in b/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in
  95. index 1779daa81c4..979955efc84 100644
  96. --- a/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in
  97. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in
  98. @@ -25,6 +25,7 @@
  99. <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="${MicrosoftAspNetCoreAuthenticationCookiesPackageVersion}" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
  100. <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="${MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion}" Condition="'$(OrganizationalAuth)' == 'True' OR '$(IndividualB2CAuth)' == 'True'" />
  101. <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="${MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion}" Condition="'$(IndividualLocalAuth)' == 'True'" />
  102. + <PackageReference Include="Microsoft.AspNetCore.CookiePolicy" Version="${MicrosoftAspNetCoreCookiePolicyPackageVersion}" />
  103. <PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="${MicrosoftAspNetCoreHttpsPolicyPackageVersion}" />
  104. <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="${MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion}" Condition="'$(IndividualLocalAuth)' == 'True'" />
  105. <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="${MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion}" Condition="'$(IndividualLocalAuth)' == 'True'" />
  106. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in b/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in
  107. index af7e4b5d6bb..4f518056bf5 100644
  108. --- a/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in
  109. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in
  110. @@ -25,6 +25,7 @@
  111. <PackageReference Include="Microsoft.AspNetCore" Version="${MicrosoftAspNetCorePackageVersion}" />
  112. <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="${MicrosoftAspNetCoreAuthenticationCookiesPackageVersion}" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
  113. <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="${MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion}" Condition="'$(OrganizationalAuth)' == 'True' OR '$(IndividualB2CAuth)' == 'True'" />
  114. + <PackageReference Include="Microsoft.AspNetCore.CookiePolicy" Version="${MicrosoftAspNetCoreCookiePolicyPackageVersion}" />
  115. <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="${MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion}" Condition="'$(IndividualLocalAuth)' == 'True'" />
  116. <PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="${MicrosoftAspNetCoreHttpsPolicyPackageVersion}" />
  117. <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="${MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion}" Condition="'$(IndividualLocalAuth)' == 'True'" />
  118. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-FSharp.fsproj.in b/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-FSharp.fsproj.in
  119. index 400372f406c..0b7d3883189 100644
  120. --- a/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-FSharp.fsproj.in
  121. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-FSharp.fsproj.in
  122. @@ -20,6 +20,7 @@
  123. </ItemGroup>
  124. <ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
  125. <PackageReference Include="Microsoft.AspNetCore" Version="${MicrosoftAspNetCorePackageVersion}" />
  126. + <PackageReference Include="Microsoft.AspNetCore.CookiePolicy" Version="${MicrosoftAspNetCoreCookiePolicyPackageVersion}" />
  127. <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="${MicrosoftAspNetCoreMvcPackageVersion}" />
  128. <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="${MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion}" PrivateAssets="All" />
  129. <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="${MicrosoftAspNetCoreStaticFilesPackageVersion}" />
  130. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/Privacy.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/Privacy.cshtml
  131. new file mode 100644
  132. index 00000000000..f3787bacd69
  133. --- /dev/null
  134. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/Privacy.cshtml
  135. @@ -0,0 +1,8 @@
  136. +@page
  137. +@model PrivacyModel
  138. +@{
  139. + ViewData["Title"] = "Privacy Policy";
  140. +}
  141. +<h2>@ViewData["Title"]</h2>
  142. +
  143. +<p>Use this page to detail your site's privacy policy.</p>
  144. \ No newline at end of file
  145. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/Privacy.cshtml.cs b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/Privacy.cshtml.cs
  146. new file mode 100644
  147. index 00000000000..ff3db9b0671
  148. --- /dev/null
  149. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/Privacy.cshtml.cs
  150. @@ -0,0 +1,16 @@
  151. +using System;
  152. +using System.Collections.Generic;
  153. +using System.Linq;
  154. +using System.Threading.Tasks;
  155. +using Microsoft.AspNetCore.Mvc;
  156. +using Microsoft.AspNetCore.Mvc.RazorPages;
  157. +
  158. +namespace Company.WebApplication1.Pages
  159. +{
  160. + public class PrivacyModel : PageModel
  161. + {
  162. + public void OnGet()
  163. + {
  164. + }
  165. + }
  166. +}
  167. \ No newline at end of file
  168. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/_CookieConsentPartial.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/_CookieConsentPartial.cshtml
  169. new file mode 100644
  170. index 00000000000..0360a039a88
  171. --- /dev/null
  172. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/_CookieConsentPartial.cshtml
  173. @@ -0,0 +1,41 @@
  174. +@using Microsoft.AspNetCore.Http.Features
  175. +
  176. +@{
  177. + var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
  178. + var showBanner = !consentFeature?.CanTrack ?? false;
  179. + var cookieString = consentFeature?.CreateConsentCookie();
  180. +}
  181. +
  182. +@if (showBanner)
  183. +{
  184. + <nav id="cookieConsent" class="navbar navbar-default navbar-fixed-top" role="alert">
  185. + <div class="container">
  186. + <div class="navbar-header">
  187. + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#cookieConsent .navbar-collapse">
  188. + <span class="sr-only">Toggle cookie consent banner</span>
  189. + <span class="icon-bar"></span>
  190. + <span class="icon-bar"></span>
  191. + <span class="icon-bar"></span>
  192. + </button>
  193. + <span class="navbar-brand"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span></span>
  194. + </div>
  195. + <div class="collapse navbar-collapse">
  196. + <p class="navbar-text">
  197. + Use this space to summarize your privacy and cookie use policy.
  198. + </p>
  199. + <div class="navbar-right">
  200. + <a asp-page="/Privacy" class="btn btn-info navbar-btn">Learn More</a>
  201. + <button type="button" class="btn btn-default navbar-btn" data-cookie-string="@cookieString">Accept</button>
  202. + </div>
  203. + </div>
  204. + </div>
  205. + </nav>
  206. + <script>
  207. + (function () {
  208. + document.querySelector("#cookieConsent button[data-cookie-string]").addEventListener("click", function (el) {
  209. + document.cookie = el.target.dataset.cookieString;
  210. + document.querySelector("#cookieConsent").classList.add("hidden");
  211. + }, false);
  212. + })();
  213. + </script>
  214. +}
  215. \ No newline at end of file
  216. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/_Layout.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/_Layout.cshtml
  217. index fbfdb5f76db..013f31d959d 100644
  218. --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/_Layout.cshtml
  219. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Pages/_Layout.cshtml
  220. @@ -42,6 +42,9 @@
  221. </div>
  222. </div>
  223. </nav>
  224. +
  225. + <partial name="_CookieConsentPartial" />
  226. +
  227. <div class="container body-content">
  228. @RenderBody()
  229. <hr />
  230. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Startup.cs b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Startup.cs
  231. index 2c9977411cb..0becc0c2f24 100644
  232. --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Startup.cs
  233. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Startup.cs
  234. @@ -49,6 +49,12 @@ namespace Company.WebApplication1
  235. // This method gets called by the runtime. Use this method to add services to the container.
  236. public void ConfigureServices(IServiceCollection services)
  237. {
  238. + services.Configure<CookiePolicyOptions>(options =>
  239. + {
  240. + // This lambda determines whether user consent for non-essential cookies is needed for a given request.
  241. + options.CheckConsentNeeded = context => true;
  242. + });
  243. +
  244. #if (IndividualLocalAuth)
  245. services.AddDbContext<IdentityDbContext>(options =>
  246. #if (UseLocalDB)
  247. @@ -127,6 +133,7 @@ namespace Company.WebApplication1
  248. app.UseHttpsRedirection();
  249. app.UseStaticFiles();
  250. + app.UseCookiePolicy();
  251. #if (OrganizationalAuth || IndividualAuth)
  252. app.UseAuthentication();
  253. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Controllers/HomeController.cs b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Controllers/HomeController.cs
  254. index f04cdbaa552..87e88e9bd2c 100644
  255. --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Controllers/HomeController.cs
  256. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Controllers/HomeController.cs
  257. @@ -35,6 +35,11 @@ namespace Company.WebApplication1.Controllers
  258. return View();
  259. }
  260. + public IActionResult Privacy()
  261. + {
  262. + return View();
  263. + }
  264. +
  265. #if (OrganizationalAuth)
  266. [AllowAnonymous]
  267. #endif
  268. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Startup.cs b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Startup.cs
  269. index fcf944f02be..1d169663c5b 100644
  270. --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Startup.cs
  271. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Startup.cs
  272. @@ -72,6 +72,12 @@ namespace Company.WebApplication1
  273. .AddCookie();
  274. #endif
  275. + services.Configure<CookiePolicyOptions>(options =>
  276. + {
  277. + // This lambda determines whether user consent for non-essential cookies is needed for a given request.
  278. + options.CheckConsentNeeded = context => true;
  279. + });
  280. +
  281. services.AddMvc();
  282. }
  283. @@ -96,6 +102,7 @@ namespace Company.WebApplication1
  284. app.UseHttpsRedirection();
  285. app.UseStaticFiles();
  286. + app.UseCookiePolicy();
  287. #if (OrganizationalAuth || IndividualAuth)
  288. app.UseAuthentication();
  289. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Home/Privacy.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Home/Privacy.cshtml
  290. new file mode 100644
  291. index 00000000000..7bd38619c6f
  292. --- /dev/null
  293. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Home/Privacy.cshtml
  294. @@ -0,0 +1,6 @@
  295. +@{
  296. + ViewData["Title"] = "Privacy Policy";
  297. +}
  298. +<h2>@ViewData["Title"]</h2>
  299. +
  300. +<p>Use this page to detail your site's privacy policy.</p>
  301. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/_CookieConsentPartial.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/_CookieConsentPartial.cshtml
  302. new file mode 100644
  303. index 00000000000..bbfbb09acb6
  304. --- /dev/null
  305. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/_CookieConsentPartial.cshtml
  306. @@ -0,0 +1,41 @@
  307. +@using Microsoft.AspNetCore.Http.Features
  308. +
  309. +@{
  310. + var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
  311. + var showBanner = !consentFeature?.CanTrack ?? false;
  312. + var cookieString = consentFeature?.CreateConsentCookie();
  313. +}
  314. +
  315. +@if (showBanner)
  316. +{
  317. + <nav id="cookieConsent" class="navbar navbar-default navbar-fixed-top" role="alert">
  318. + <div class="container">
  319. + <div class="navbar-header">
  320. + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#cookieConsent .navbar-collapse">
  321. + <span class="sr-only">Toggle cookie consent banner</span>
  322. + <span class="icon-bar"></span>
  323. + <span class="icon-bar"></span>
  324. + <span class="icon-bar"></span>
  325. + </button>
  326. + <span class="navbar-brand"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span></span>
  327. + </div>
  328. + <div class="collapse navbar-collapse">
  329. + <p class="navbar-text">
  330. + Use this space to summarize your privacy and cookie use policy.
  331. + </p>
  332. + <div class="navbar-right">
  333. + <a asp-controller="Home" asp-action="Privacy" class="btn btn-info navbar-btn">Learn More</a>
  334. + <button type="button" class="btn btn-default navbar-btn" data-cookie-string="@cookieString">Accept</button>
  335. + </div>
  336. + </div>
  337. + </div>
  338. + </nav>
  339. + <script>
  340. + (function () {
  341. + document.querySelector("#cookieConsent button[data-cookie-string]").addEventListener("click", function (el) {
  342. + document.cookie = el.target.dataset.cookieString;
  343. + document.querySelector("#cookieConsent").classList.add("hidden");
  344. + }, false);
  345. + })();
  346. + </script>
  347. +}
  348. \ No newline at end of file
  349. diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/_Layout.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/_Layout.cshtml
  350. index 1e1b736e1e6..f445c6fd025 100644
  351. --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/_Layout.cshtml
  352. +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/_Layout.cshtml
  353. @@ -42,6 +42,9 @@
  354. </div>
  355. </div>
  356. </nav>
  357. +
  358. + <partial name="_CookieConsentPartial" />
  359. +
  360. <div class="container body-content">
  361. @RenderBody()
  362. <hr />