├── AspNetIdentityWithoutADatabase.Solution.sln ├── AspNetIdentityWithoutADatabase.WebApplication ├── App_Start │ ├── BundleConfig.cs │ ├── FilterConfig.cs │ ├── RouteConfig.cs │ └── Startup.Auth.cs ├── AspNetIdentityWithoutADatabase.WebApplication.csproj ├── AspNetIdentityWithoutADatabase.WebApplication.csproj.user ├── Content │ ├── Site.css │ ├── bootstrap.css │ └── bootstrap.min.css ├── Controllers │ ├── AccountController.cs │ └── HomeController.cs ├── Global.asax ├── Global.asax.cs ├── Models │ ├── AccountViewModels.cs │ ├── ApplicationUser.cs │ ├── CustomUserManager.cs │ └── CustomUserStore.cs ├── Project_Readme.html ├── Properties │ └── AssemblyInfo.cs ├── Scripts │ ├── _references.js │ ├── bootstrap.js │ ├── bootstrap.min.js │ ├── jquery-1.10.2.intellisense.js │ ├── jquery-1.10.2.js │ ├── jquery-1.10.2.min.js │ ├── jquery-1.10.2.min.map │ ├── jquery.validate-vsdoc.js │ ├── jquery.validate.js │ ├── jquery.validate.min.js │ ├── jquery.validate.unobtrusive.js │ ├── jquery.validate.unobtrusive.min.js │ ├── modernizr-2.6.2.js │ ├── respond.js │ └── respond.min.js ├── Startup.cs ├── Views │ ├── Account │ │ └── Login.cshtml │ ├── Home │ │ ├── About.cshtml │ │ ├── Contact.cshtml │ │ └── Index.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ ├── _Layout.cshtml │ │ └── _LoginPartial.cshtml │ ├── Web.config │ └── _ViewStart.cshtml ├── Web.Debug.config ├── Web.Release.config ├── Web.config ├── WebApplication1.sln ├── WebApplication1.v12.suo ├── bin │ ├── Antlr3.Runtime.dll │ ├── Antlr3.Runtime.pdb │ ├── AspNetIdentityWithoutADatabase.WebApplication.dll │ ├── AspNetIdentityWithoutADatabase.WebApplication.dll.config │ ├── AspNetIdentityWithoutADatabase.WebApplication.pdb │ ├── Microsoft.AspNet.Identity.Core.dll │ ├── Microsoft.AspNet.Identity.Core.xml │ ├── Microsoft.Owin.Host.SystemWeb.dll │ ├── Microsoft.Owin.Host.SystemWeb.xml │ ├── Microsoft.Owin.Security.Cookies.dll │ ├── Microsoft.Owin.Security.Cookies.xml │ ├── Microsoft.Owin.Security.OAuth.dll │ ├── Microsoft.Owin.Security.OAuth.xml │ ├── Microsoft.Owin.Security.dll │ ├── Microsoft.Owin.Security.xml │ ├── Microsoft.Owin.dll │ ├── Microsoft.Owin.xml │ ├── Microsoft.Web.Infrastructure.dll │ ├── Newtonsoft.Json.dll │ ├── Owin.dll │ ├── System.Web.Helpers.dll │ ├── System.Web.Helpers.xml │ ├── System.Web.Mvc.dll │ ├── System.Web.Mvc.xml │ ├── System.Web.Optimization.dll │ ├── System.Web.Optimization.xml │ ├── System.Web.Razor.dll │ ├── System.Web.Razor.xml │ ├── System.Web.WebPages.Deployment.dll │ ├── System.Web.WebPages.Deployment.xml │ ├── System.Web.WebPages.Razor.dll │ ├── System.Web.WebPages.Razor.xml │ ├── System.Web.WebPages.dll │ ├── System.Web.WebPages.xml │ └── WebGrease.dll ├── favicon.ico ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff ├── obj │ └── Debug │ │ ├── AspNetIdentityWithoutADatabase.WebApplication.csproj.FileListAbsolute.txt │ │ ├── AspNetIdentityWithoutADatabase.WebApplication.csprojResolveAssemblyReference.cache │ │ ├── AspNetIdentityWithoutADatabase.WebApplication.dll │ │ ├── AspNetIdentityWithoutADatabase.WebApplication.pdb │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ ├── SampleAspNetIdentity.csproj.FileListAbsolute.txt │ │ ├── SampleAspNetIdentity.csprojResolveAssemblyReference.cache │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ ├── WebApplication1.dll │ │ └── WebApplication1.pdb └── packages.config ├── LICENSE ├── README.md └── packages ├── Antlr.3.4.1.9004 ├── Antlr.3.4.1.9004.nupkg └── lib │ ├── Antlr3.Runtime.dll │ └── Antlr3.Runtime.pdb ├── Microsoft.AspNet.Identity.Core.1.0.0 ├── Microsoft.AspNet.Identity.Core.1.0.0.nupkg └── lib │ └── net45 │ ├── Microsoft.AspNet.Identity.Core.dll │ └── Microsoft.AspNet.Identity.Core.xml ├── Microsoft.AspNet.Identity.Owin.1.0.0 ├── Microsoft.AspNet.Identity.Owin.1.0.0.nupkg └── lib │ └── net45 │ ├── Microsoft.AspNet.Identity.Owin.dll │ └── Microsoft.AspNet.Identity.Owin.xml ├── Microsoft.AspNet.Mvc.5.0.0 ├── Microsoft.AspNet.Mvc.5.0.0.nupkg └── lib │ └── net45 │ ├── System.Web.Mvc.dll │ └── System.Web.Mvc.xml ├── Microsoft.AspNet.Razor.3.0.0 ├── Microsoft.AspNet.Razor.3.0.0.nupkg └── lib │ └── net45 │ ├── System.Web.Razor.dll │ └── System.Web.Razor.xml ├── Microsoft.AspNet.Web.Optimization.1.1.1 ├── Microsoft.AspNet.Web.Optimization.1.1.1.nupkg └── lib │ └── net40 │ ├── System.Web.Optimization.dll │ └── system.web.optimization.xml ├── Microsoft.AspNet.WebPages.3.0.0 ├── Microsoft.AspNet.WebPages.3.0.0.nupkg └── lib │ └── net45 │ ├── System.Web.Helpers.dll │ ├── System.Web.Helpers.xml │ ├── System.Web.WebPages.Deployment.dll │ ├── System.Web.WebPages.Deployment.xml │ ├── System.Web.WebPages.Razor.dll │ ├── System.Web.WebPages.Razor.xml │ ├── System.Web.WebPages.dll │ └── System.Web.WebPages.xml ├── Microsoft.Owin.3.0.0 ├── Microsoft.Owin.3.0.0.nupkg └── lib │ └── net45 │ ├── Microsoft.Owin.XML │ └── Microsoft.Owin.dll ├── Microsoft.Owin.Host.SystemWeb.3.0.0 ├── Microsoft.Owin.Host.SystemWeb.3.0.0.nupkg └── lib │ └── net45 │ ├── Microsoft.Owin.Host.SystemWeb.dll │ └── Microsoft.Owin.Host.SystemWeb.xml ├── Microsoft.Owin.Security.2.0.0 ├── Microsoft.Owin.Security.2.0.0.nupkg └── lib │ └── net45 │ ├── Microsoft.Owin.Security.XML │ └── Microsoft.Owin.Security.dll ├── Microsoft.Owin.Security.Cookies.2.0.0 ├── Microsoft.Owin.Security.Cookies.2.0.0.nupkg └── lib │ └── net45 │ ├── Microsoft.Owin.Security.Cookies.dll │ └── Microsoft.Owin.Security.Cookies.xml ├── Microsoft.Owin.Security.OAuth.2.0.0 ├── Microsoft.Owin.Security.OAuth.2.0.0.nupkg └── lib │ └── net45 │ ├── Microsoft.Owin.Security.OAuth.XML │ └── Microsoft.Owin.Security.OAuth.dll ├── Microsoft.Web.Infrastructure.1.0.0.0 ├── Microsoft.Web.Infrastructure.1.0.0.0.nupkg └── lib │ └── net40 │ └── Microsoft.Web.Infrastructure.dll ├── Microsoft.jQuery.Unobtrusive.Validation.3.0.0 ├── Content │ └── Scripts │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js └── Microsoft.jQuery.Unobtrusive.Validation.3.0.0.nupkg ├── Modernizr.2.6.2 ├── Content │ └── Scripts │ │ └── modernizr-2.6.2.js ├── Modernizr.2.6.2.nupkg └── Tools │ ├── common.ps1 │ ├── install.ps1 │ └── uninstall.ps1 ├── Owin.1.0 ├── Owin.1.0.nupkg └── lib │ └── net40 │ └── Owin.dll ├── Respond.1.2.0 ├── Respond.1.2.0.nupkg └── content │ └── Scripts │ ├── respond.js │ └── respond.min.js ├── WebGrease.1.5.2 ├── WebGrease.1.5.2.nupkg ├── lib │ └── WebGrease.dll └── tools │ ├── WG.exe │ ├── install.ps1 │ └── uninstall.ps1 ├── bootstrap.3.0.0 ├── Content │ ├── Content │ │ ├── bootstrap-theme.css │ │ ├── bootstrap-theme.min.css │ │ ├── bootstrap.css │ │ └── bootstrap.min.css │ ├── Scripts │ │ ├── bootstrap.js │ │ └── bootstrap.min.js │ └── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff └── bootstrap.3.0.0.nupkg ├── jQuery.1.10.2 ├── Content │ └── Scripts │ │ ├── jquery-1.10.2-vsdoc.js │ │ ├── jquery-1.10.2.js │ │ ├── jquery-1.10.2.min.js │ │ └── jquery-1.10.2.min.map ├── Tools │ ├── common.ps1 │ ├── install.ps1 │ ├── jquery-1.10.2.intellisense.js │ └── uninstall.ps1 └── jQuery.1.10.2.nupkg ├── jQuery.Validation.1.11.1 ├── Content │ └── Scripts │ │ ├── jquery.validate-vsdoc.js │ │ ├── jquery.validate.js │ │ └── jquery.validate.min.js └── jQuery.Validation.1.11.1.nupkg └── repositories.config /AspNetIdentityWithoutADatabase.Solution.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2013 for Web 4 | VisualStudioVersion = 12.0.30501.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AspNetIdentityWithoutADatabase.WebApplication", "AspNetIdentityWithoutADatabase.WebApplication\AspNetIdentityWithoutADatabase.WebApplication.csproj", "{ECCCD176-49F7-4DA9-B69B-15E3328E2289}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {ECCCD176-49F7-4DA9-B69B-15E3328E2289}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {ECCCD176-49F7-4DA9-B69B-15E3328E2289}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {ECCCD176-49F7-4DA9-B69B-15E3328E2289}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {ECCCD176-49F7-4DA9-B69B-15E3328E2289}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/App_Start/BundleConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Optimization; 3 | 4 | namespace AspNetIdentityWithoutADatabase.WebApplication 5 | { 6 | public class BundleConfig 7 | { 8 | // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862 9 | public static void RegisterBundles(BundleCollection bundles) 10 | { 11 | bundles.Add(new ScriptBundle("~/bundles/jquery").Include( 12 | "~/Scripts/jquery-{version}.js")); 13 | 14 | bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( 15 | "~/Scripts/jquery.validate*")); 16 | 17 | // Use the development version of Modernizr to develop with and learn from. Then, when you're 18 | // ready for production, use the build tool at http://modernizr.com to pick only the tests you need. 19 | bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( 20 | "~/Scripts/modernizr-*")); 21 | 22 | bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( 23 | "~/Scripts/bootstrap.js", 24 | "~/Scripts/respond.js")); 25 | 26 | bundles.Add(new StyleBundle("~/Content/css").Include( 27 | "~/Content/bootstrap.css", 28 | "~/Content/site.css")); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/App_Start/FilterConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Mvc; 3 | 4 | namespace AspNetIdentityWithoutADatabase.WebApplication 5 | { 6 | public class FilterConfig 7 | { 8 | public static void RegisterGlobalFilters(GlobalFilterCollection filters) 9 | { 10 | filters.Add(new HandleErrorAttribute()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/App_Start/RouteConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | using System.Web.Routing; 7 | 8 | namespace AspNetIdentityWithoutADatabase.WebApplication 9 | { 10 | public class RouteConfig 11 | { 12 | public static void RegisterRoutes(RouteCollection routes) 13 | { 14 | routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 15 | 16 | routes.MapRoute( 17 | name: "Default", 18 | url: "{controller}/{action}/{id}", 19 | defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 20 | ); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/App_Start/Startup.Auth.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNet.Identity; 2 | using Microsoft.Owin; 3 | using Microsoft.Owin.Security.Cookies; 4 | using Owin; 5 | 6 | namespace AspNetIdentityWithoutADatabase.WebApplication 7 | { 8 | public partial class Startup 9 | { 10 | // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 11 | public void ConfigureAuth(IAppBuilder app) 12 | { 13 | // Enable the application to use a cookie to store information for the signed in user 14 | app.UseCookieAuthentication(new CookieAuthenticationOptions 15 | { 16 | AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 17 | LoginPath = new PathString("/Account/Login") 18 | }); 19 | // Use a cookie to temporarily store information about a user logging in with a third party login provider 20 | // app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 21 | 22 | // Uncomment the following lines to enable logging in with third party login providers 23 | //app.UseMicrosoftAccountAuthentication( 24 | // clientId: "", 25 | // clientSecret: ""); 26 | 27 | //app.UseTwitterAuthentication( 28 | // consumerKey: "", 29 | // consumerSecret: ""); 30 | 31 | //app.UseFacebookAuthentication( 32 | // appId: "", 33 | // appSecret: ""); 34 | 35 | //app.UseGoogleAuthentication(); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/AspNetIdentityWithoutADatabase.WebApplication.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | 8 | 9 | 2.0 10 | {ECCCD176-49F7-4DA9-B69B-15E3328E2289} 11 | {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} 12 | Library 13 | Properties 14 | AspNetIdentityWithoutADatabase.WebApplication 15 | AspNetIdentityWithoutADatabase.WebApplication 16 | v4.5 17 | false 18 | true 19 | 20 | 21 | 22 | 23 | 24 | 25 | true 26 | full 27 | false 28 | bin\ 29 | DEBUG;TRACE 30 | prompt 31 | 4 32 | 33 | 34 | pdbonly 35 | true 36 | bin\ 37 | TRACE 38 | prompt 39 | 4 40 | 41 | 42 | 43 | 44 | False 45 | ..\packages\Microsoft.Owin.3.0.0\lib\net45\Microsoft.Owin.dll 46 | 47 | 48 | ..\packages\Microsoft.Owin.Host.SystemWeb.3.0.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | True 70 | ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll 71 | 72 | 73 | 74 | 75 | 76 | 77 | True 78 | ..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.Helpers.dll 79 | 80 | 81 | True 82 | ..\packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll 83 | 84 | 85 | ..\packages\Microsoft.AspNet.Web.Optimization.1.1.1\lib\net40\System.Web.Optimization.dll 86 | 87 | 88 | True 89 | ..\packages\Microsoft.AspNet.Razor.3.0.0\lib\net45\System.Web.Razor.dll 90 | 91 | 92 | True 93 | ..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.WebPages.dll 94 | 95 | 96 | True 97 | ..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.WebPages.Deployment.dll 98 | 99 | 100 | True 101 | ..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.WebPages.Razor.dll 102 | 103 | 104 | True 105 | ..\packages\WebGrease.1.5.2\lib\WebGrease.dll 106 | 107 | 108 | True 109 | ..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll 110 | 111 | 112 | 113 | 114 | ..\packages\Microsoft.AspNet.Identity.Core.1.0.0\lib\net45\Microsoft.AspNet.Identity.Core.dll 115 | 116 | 117 | ..\packages\Owin.1.0\lib\net40\Owin.dll 118 | 119 | 120 | ..\packages\Microsoft.Owin.Security.2.0.0\lib\net45\Microsoft.Owin.Security.dll 121 | 122 | 123 | ..\packages\Microsoft.Owin.Security.Cookies.2.0.0\lib\net45\Microsoft.Owin.Security.Cookies.dll 124 | 125 | 126 | ..\packages\Microsoft.Owin.Security.OAuth.2.0.0\lib\net45\Microsoft.Owin.Security.OAuth.dll 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | Global.asax 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | Web.config 170 | 171 | 172 | Web.config 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 10.0 195 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | True 208 | True 209 | 62207 210 | / 211 | http://localhost:62207/ 212 | False 213 | False 214 | 215 | 216 | False 217 | 218 | 219 | 220 | 221 | 227 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/AspNetIdentityWithoutADatabase.WebApplication.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | CurrentPage 10 | True 11 | False 12 | False 13 | False 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | True 23 | True 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Content/Site.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 50px; 3 | padding-bottom: 20px; 4 | } 5 | 6 | /* Set padding to keep content from hitting the edges */ 7 | .body-content { 8 | padding-left: 15px; 9 | padding-right: 15px; 10 | } 11 | 12 | /* Set width on the form input elements since they're 100% wide by default */ 13 | input, 14 | select, 15 | textarea { 16 | max-width: 280px; 17 | } 18 | 19 | /* styles for validation helpers */ 20 | .field-validation-error { 21 | color: #b94a48; 22 | } 23 | 24 | .field-validation-valid { 25 | display: none; 26 | } 27 | 28 | input.input-validation-error { 29 | border: 1px solid #b94a48; 30 | } 31 | 32 | input[type="checkbox"].input-validation-error { 33 | border: 0 none; 34 | } 35 | 36 | .validation-summary-errors { 37 | color: #b94a48; 38 | } 39 | 40 | .validation-summary-valid { 41 | display: none; 42 | } -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Controllers/AccountController.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using System.Web; 3 | using System.Web.Mvc; 4 | using Microsoft.AspNet.Identity; 5 | 6 | using Microsoft.Owin.Security; 7 | using AspNetIdentityWithoutADatabase.WebApplication.Models; 8 | 9 | namespace AspNetIdentityWithoutADatabase.WebApplication.Controllers 10 | { 11 | [Authorize] 12 | public class AccountController : Controller 13 | { 14 | private CustomUserManager CustomUserManager { get; set; } 15 | 16 | public AccountController() 17 | : this(new CustomUserManager()) 18 | { 19 | } 20 | 21 | public AccountController(CustomUserManager customUserManager) 22 | { 23 | CustomUserManager = customUserManager; 24 | } 25 | 26 | // 27 | // GET: /Account/Login 28 | [AllowAnonymous] 29 | public ActionResult Login(string returnUrl) 30 | { 31 | ViewBag.ReturnUrl = returnUrl; 32 | return View(); 33 | } 34 | 35 | // 36 | // POST: /Account/Login 37 | [HttpPost] 38 | [AllowAnonymous] 39 | [ValidateAntiForgeryToken] 40 | public async Task Login(LoginViewModel model, string returnUrl) 41 | { 42 | if (ModelState.IsValid) 43 | { 44 | var user = await CustomUserManager.FindAsync(model.UserName, model.Password); 45 | if (user != null) 46 | { 47 | await SignInAsync(user, model.RememberMe); 48 | return RedirectToLocal(returnUrl); 49 | } 50 | else 51 | { 52 | ModelState.AddModelError("", "Invalid username or password."); 53 | } 54 | } 55 | 56 | // If we got this far, something failed, redisplay form 57 | return View(model); 58 | } 59 | 60 | // POST: /Account/LogOff 61 | [HttpPost] 62 | [ValidateAntiForgeryToken] 63 | public ActionResult LogOff() 64 | { 65 | AuthenticationManager.SignOut(); 66 | return RedirectToAction("Index", "Home"); 67 | } 68 | 69 | protected override void Dispose(bool disposing) 70 | { 71 | if (disposing && CustomUserManager != null) 72 | { 73 | CustomUserManager.Dispose(); 74 | CustomUserManager = null; 75 | } 76 | base.Dispose(disposing); 77 | } 78 | 79 | #region Helpers 80 | 81 | private IAuthenticationManager AuthenticationManager 82 | { 83 | get 84 | { 85 | return HttpContext.GetOwinContext().Authentication; 86 | } 87 | } 88 | 89 | private async Task SignInAsync(ApplicationUser user, bool isPersistent) 90 | { 91 | AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); 92 | 93 | var identity = await CustomUserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); 94 | 95 | AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity); 96 | } 97 | 98 | private void AddErrors(IdentityResult result) 99 | { 100 | foreach (var error in result.Errors) 101 | { 102 | ModelState.AddModelError("", error); 103 | } 104 | } 105 | 106 | private ActionResult RedirectToLocal(string returnUrl) 107 | { 108 | if (Url.IsLocalUrl(returnUrl)) 109 | { 110 | return Redirect(returnUrl); 111 | } 112 | else 113 | { 114 | return RedirectToAction("Index", "Home"); 115 | } 116 | } 117 | 118 | #endregion 119 | } 120 | } -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | 7 | namespace AspNetIdentityWithoutADatabase.WebApplication.Controllers 8 | { 9 | public class HomeController : Controller 10 | { 11 | public ActionResult Index() 12 | { 13 | return View(); 14 | } 15 | 16 | public ActionResult About() 17 | { 18 | ViewBag.Message = "Your application description page."; 19 | 20 | return View(); 21 | } 22 | 23 | public ActionResult Contact() 24 | { 25 | ViewBag.Message = "Your contact page."; 26 | 27 | return View(); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="AspNetIdentityWithoutADatabase.WebApplication.MvcApplication" Language="C#" %> 2 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Global.asax.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | using System.Web.Optimization; 7 | using System.Web.Routing; 8 | 9 | namespace AspNetIdentityWithoutADatabase.WebApplication 10 | { 11 | public class MvcApplication : System.Web.HttpApplication 12 | { 13 | protected void Application_Start() 14 | { 15 | AreaRegistration.RegisterAllAreas(); 16 | FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 17 | RouteConfig.RegisterRoutes(RouteTable.Routes); 18 | BundleConfig.RegisterBundles(BundleTable.Bundles); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Models/AccountViewModels.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace AspNetIdentityWithoutADatabase.WebApplication.Models 5 | { 6 | public class ExternalLoginConfirmationViewModel 7 | { 8 | [Required] 9 | [Display(Name = "User name")] 10 | public string UserName { get; set; } 11 | } 12 | 13 | public class ManageUserViewModel 14 | { 15 | [Required] 16 | [DataType(DataType.Password)] 17 | [Display(Name = "Current password")] 18 | public string OldPassword { get; set; } 19 | 20 | [Required] 21 | [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 22 | [DataType(DataType.Password)] 23 | [Display(Name = "New password")] 24 | public string NewPassword { get; set; } 25 | 26 | [DataType(DataType.Password)] 27 | [Display(Name = "Confirm new password")] 28 | [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] 29 | public string ConfirmPassword { get; set; } 30 | } 31 | 32 | public class LoginViewModel 33 | { 34 | [Required] 35 | [Display(Name = "User name")] 36 | public string UserName { get; set; } 37 | 38 | [Required] 39 | [DataType(DataType.Password)] 40 | [Display(Name = "Password")] 41 | public string Password { get; set; } 42 | 43 | [Display(Name = "Remember me?")] 44 | public bool RememberMe { get; set; } 45 | } 46 | 47 | public class RegisterViewModel 48 | { 49 | [Required] 50 | [Display(Name = "User name")] 51 | public string UserName { get; set; } 52 | 53 | [Required] 54 | [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 55 | [DataType(DataType.Password)] 56 | [Display(Name = "Password")] 57 | public string Password { get; set; } 58 | 59 | [DataType(DataType.Password)] 60 | [Display(Name = "Confirm password")] 61 | [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 62 | public string ConfirmPassword { get; set; } 63 | 64 | [Display(Name = "Birthdate")] 65 | public DateTime BirthDate { get; set; } 66 | 67 | [Display(Name = "CreateDate")] 68 | public DateTime CreateDate { get; set; } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Models/ApplicationUser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.AspNet.Identity; 3 | 4 | namespace AspNetIdentityWithoutADatabase.WebApplication.Models 5 | { 6 | public class ApplicationUser : IUser 7 | { 8 | public string Id { get; set; } 9 | public string UserName { get; set; } 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Models/CustomUserManager.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNet.Identity; 2 | using System.Threading.Tasks; 3 | 4 | namespace AspNetIdentityWithoutADatabase.WebApplication.Models 5 | { 6 | public class CustomUserManager : UserManager 7 | { 8 | public CustomUserManager() 9 | : base(new CustomUserSore()) 10 | { 11 | 12 | } 13 | 14 | public override Task FindAsync(string userName, string password) 15 | { 16 | var taskInvoke = Task.Factory.StartNew(() => 17 | { 18 | if (userName == "username" && password == "password") 19 | { 20 | return new ApplicationUser { Id="NeedsAnId", UserName = "UsernameHere" }; 21 | } 22 | return null; 23 | }); 24 | 25 | return taskInvoke; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Models/CustomUserStore.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.AspNet.Identity; 3 | 4 | namespace AspNetIdentityWithoutADatabase.WebApplication.Models 5 | { 6 | public class CustomUserSore : IUserStore where T : ApplicationUser 7 | { 8 | 9 | System.Threading.Tasks.Task IUserStore.CreateAsync(T user) 10 | { 11 | //Create /Register New User 12 | throw new NotImplementedException(); 13 | } 14 | 15 | System.Threading.Tasks.Task IUserStore.DeleteAsync(T user) 16 | { 17 | //Delete User 18 | throw new NotImplementedException(); 19 | } 20 | 21 | System.Threading.Tasks.Task IUserStore.FindByIdAsync(string userId) 22 | { 23 | throw new NotImplementedException(); 24 | } 25 | 26 | System.Threading.Tasks.Task IUserStore.FindByNameAsync(string userName) 27 | { 28 | throw new NotImplementedException(); 29 | } 30 | 31 | System.Threading.Tasks.Task IUserStore.UpdateAsync(T user) 32 | { 33 | //Update User Profile 34 | throw new NotImplementedException(); 35 | } 36 | 37 | void IDisposable.Dispose() 38 | { 39 | // throw new NotImplementedException(); 40 | 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Project_Readme.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Your ASP.NET application 6 | 95 | 96 | 97 | 98 | 102 | 103 |
104 |
105 |

This application consists of:

106 |
    107 |
  • Sample pages showing basic nav between Home, About, and Contact
  • 108 |
  • Theming using Bootstrap
  • 109 |
  • Authentication, if selected, shows how to register and sign in
  • 110 |
  • ASP.NET features managed using NuGet
  • 111 |
112 |
113 | 114 | 131 | 132 |
133 |

Deploy

134 | 139 |
140 | 141 |
142 |

Get help

143 | 147 |
148 |
149 | 150 | 151 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("AspNetIdentityWithoutADatabase.WebApplication")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("AspNetIdentityWithoutADatabase.WebApplication")] 13 | [assembly: AssemblyCopyright("Copyright © 2013")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("b793f19e-8b9d-49a3-ae75-d3a468527a9d")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Scripts/_references.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/Scripts/_references.js -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Scripts/jquery.validate.unobtrusive.js: -------------------------------------------------------------------------------- 1 | /* NUGET: BEGIN LICENSE TEXT 2 | * 3 | * Microsoft grants you the right to use these script files for the sole 4 | * purpose of either: (i) interacting through your browser with the Microsoft 5 | * website or online service, subject to the applicable licensing or use 6 | * terms; or (ii) using the files as included with a Microsoft product subject 7 | * to that product's license terms. Microsoft reserves all other rights to the 8 | * files not expressly granted by Microsoft, whether by implication, estoppel 9 | * or otherwise. Insofar as a script file is dual licensed under GPL, 10 | * Microsoft neither took the code under GPL nor distributes it thereunder but 11 | * under the terms set out in this paragraph. All notices and licenses 12 | * below are for informational purposes only. 13 | * 14 | * NUGET: END LICENSE TEXT */ 15 | /*! 16 | ** Unobtrusive validation support library for jQuery and jQuery Validate 17 | ** Copyright (C) Microsoft Corporation. All rights reserved. 18 | */ 19 | /*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */ 20 | /*global document: false, jQuery: false */ 21 | (function ($) { 22 | var $jQval = $.validator, 23 | adapters, 24 | data_validation = "unobtrusiveValidation"; 25 | function setValidationValues(options, ruleName, value) { 26 | options.rules[ruleName] = value; 27 | if (options.message) { 28 | options.messages[ruleName] = options.message; 29 | } 30 | } 31 | function splitAndTrim(value) { 32 | return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g); 33 | } 34 | function escapeAttributeValue(value) { 35 | // As mentioned on http://api.jquery.com/category/selectors/ 36 | return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1"); 37 | } 38 | function getModelPrefix(fieldName) { 39 | return fieldName.substr(0, fieldName.lastIndexOf(".") + 1); 40 | } 41 | function appendModelPrefix(value, prefix) { 42 | if (value.indexOf("*.") === 0) { 43 | value = value.replace("*.", prefix); 44 | } 45 | return value; 46 | } 47 | function onError(error, inputElement) { // 'this' is the form element 48 | var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"), 49 | replaceAttrValue = container.attr("data-valmsg-replace"), 50 | replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null; 51 | container.removeClass("field-validation-valid").addClass("field-validation-error"); 52 | error.data("unobtrusiveContainer", container); 53 | if (replace) { 54 | container.empty(); 55 | error.removeClass("input-validation-error").appendTo(container); 56 | } 57 | else { 58 | error.hide(); 59 | } 60 | } 61 | function onErrors(event, validator) { // 'this' is the form element 62 | var container = $(this).find("[data-valmsg-summary=true]"), 63 | list = container.find("ul"); 64 | if (list && list.length && validator.errorList.length) { 65 | list.empty(); 66 | container.addClass("validation-summary-errors").removeClass("validation-summary-valid"); 67 | $.each(validator.errorList, function () { 68 | $("
  • ").html(this.message).appendTo(list); 69 | }); 70 | } 71 | } 72 | function onSuccess(error) { // 'this' is the form element 73 | var container = error.data("unobtrusiveContainer"), 74 | replaceAttrValue = container.attr("data-valmsg-replace"), 75 | replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null; 76 | if (container) { 77 | container.addClass("field-validation-valid").removeClass("field-validation-error"); 78 | error.removeData("unobtrusiveContainer"); 79 | if (replace) { 80 | container.empty(); 81 | } 82 | } 83 | } 84 | function onReset(event) { // 'this' is the form element 85 | var $form = $(this); 86 | $form.data("validator").resetForm(); 87 | $form.find(".validation-summary-errors") 88 | .addClass("validation-summary-valid") 89 | .removeClass("validation-summary-errors"); 90 | $form.find(".field-validation-error") 91 | .addClass("field-validation-valid") 92 | .removeClass("field-validation-error") 93 | .removeData("unobtrusiveContainer") 94 | .find(">*") // If we were using valmsg-replace, get the underlying error 95 | .removeData("unobtrusiveContainer"); 96 | } 97 | function validationInfo(form) { 98 | var $form = $(form), 99 | result = $form.data(data_validation), 100 | onResetProxy = $.proxy(onReset, form); 101 | if (!result) { 102 | result = { 103 | options: { // options structure passed to jQuery Validate's validate() method 104 | errorClass: "input-validation-error", 105 | errorElement: "span", 106 | errorPlacement: $.proxy(onError, form), 107 | invalidHandler: $.proxy(onErrors, form), 108 | messages: {}, 109 | rules: {}, 110 | success: $.proxy(onSuccess, form) 111 | }, 112 | attachValidation: function () { 113 | $form 114 | .unbind("reset." + data_validation, onResetProxy) 115 | .bind("reset." + data_validation, onResetProxy) 116 | .validate(this.options); 117 | }, 118 | validate: function () { // a validation function that is called by unobtrusive Ajax 119 | $form.validate(); 120 | return $form.valid(); 121 | } 122 | }; 123 | $form.data(data_validation, result); 124 | } 125 | return result; 126 | } 127 | $jQval.unobtrusive = { 128 | adapters: [], 129 | parseElement: function (element, skipAttach) { 130 | /// 131 | /// Parses a single HTML element for unobtrusive validation attributes. 132 | /// 133 | /// The HTML element to be parsed. 134 | /// [Optional] true to skip attaching the 135 | /// validation to the form. If parsing just this single element, you should specify true. 136 | /// If parsing several elements, you should specify false, and manually attach the validation 137 | /// to the form when you are finished. The default is false. 138 | var $element = $(element), 139 | form = $element.parents("form")[0], 140 | valInfo, rules, messages; 141 | if (!form) { // Cannot do client-side validation without a form 142 | return; 143 | } 144 | valInfo = validationInfo(form); 145 | valInfo.options.rules[element.name] = rules = {}; 146 | valInfo.options.messages[element.name] = messages = {}; 147 | $.each(this.adapters, function () { 148 | var prefix = "data-val-" + this.name, 149 | message = $element.attr(prefix), 150 | paramValues = {}; 151 | if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy) 152 | prefix += "-"; 153 | $.each(this.params, function () { 154 | paramValues[this] = $element.attr(prefix + this); 155 | }); 156 | this.adapt({ 157 | element: element, 158 | form: form, 159 | message: message, 160 | params: paramValues, 161 | rules: rules, 162 | messages: messages 163 | }); 164 | } 165 | }); 166 | $.extend(rules, { "__dummy__": true }); 167 | if (!skipAttach) { 168 | valInfo.attachValidation(); 169 | } 170 | }, 171 | parse: function (selector) { 172 | /// 173 | /// Parses all the HTML elements in the specified selector. It looks for input elements decorated 174 | /// with the [data-val=true] attribute value and enables validation according to the data-val-* 175 | /// attribute values. 176 | /// 177 | /// Any valid jQuery selector. 178 | var $forms = $(selector) 179 | .parents("form") 180 | .andSelf() 181 | .add($(selector).find("form")) 182 | .filter("form"); 183 | // :input is a psuedoselector provided by jQuery which selects input and input-like elements 184 | // combining :input with other selectors significantly decreases performance. 185 | $(selector).find(":input").filter("[data-val=true]").each(function () { 186 | $jQval.unobtrusive.parseElement(this, true); 187 | }); 188 | $forms.each(function () { 189 | var info = validationInfo(this); 190 | if (info) { 191 | info.attachValidation(); 192 | } 193 | }); 194 | } 195 | }; 196 | adapters = $jQval.unobtrusive.adapters; 197 | adapters.add = function (adapterName, params, fn) { 198 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation. 199 | /// The name of the adapter to be added. This matches the name used 200 | /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). 201 | /// [Optional] An array of parameter names (strings) that will 202 | /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and 203 | /// mmmm is the parameter name). 204 | /// The function to call, which adapts the values from the HTML 205 | /// attributes into jQuery Validate rules and/or messages. 206 | /// 207 | if (!fn) { // Called with no params, just a function 208 | fn = params; 209 | params = []; 210 | } 211 | this.push({ name: adapterName, params: params, adapt: fn }); 212 | return this; 213 | }; 214 | adapters.addBool = function (adapterName, ruleName) { 215 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where 216 | /// the jQuery Validate validation rule has no parameter values. 217 | /// The name of the adapter to be added. This matches the name used 218 | /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). 219 | /// [Optional] The name of the jQuery Validate rule. If not provided, the value 220 | /// of adapterName will be used instead. 221 | /// 222 | return this.add(adapterName, function (options) { 223 | setValidationValues(options, ruleName || adapterName, true); 224 | }); 225 | }; 226 | adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) { 227 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where 228 | /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and 229 | /// one for min-and-max). The HTML parameters are expected to be named -min and -max. 230 | /// The name of the adapter to be added. This matches the name used 231 | /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). 232 | /// The name of the jQuery Validate rule to be used when you only 233 | /// have a minimum value. 234 | /// The name of the jQuery Validate rule to be used when you only 235 | /// have a maximum value. 236 | /// The name of the jQuery Validate rule to be used when you 237 | /// have both a minimum and maximum value. 238 | /// [Optional] The name of the HTML attribute that 239 | /// contains the minimum value. The default is "min". 240 | /// [Optional] The name of the HTML attribute that 241 | /// contains the maximum value. The default is "max". 242 | /// 243 | return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) { 244 | var min = options.params.min, 245 | max = options.params.max; 246 | if (min && max) { 247 | setValidationValues(options, minMaxRuleName, [min, max]); 248 | } 249 | else if (min) { 250 | setValidationValues(options, minRuleName, min); 251 | } 252 | else if (max) { 253 | setValidationValues(options, maxRuleName, max); 254 | } 255 | }); 256 | }; 257 | adapters.addSingleVal = function (adapterName, attribute, ruleName) { 258 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where 259 | /// the jQuery Validate validation rule has a single value. 260 | /// The name of the adapter to be added. This matches the name used 261 | /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name). 262 | /// [Optional] The name of the HTML attribute that contains the value. 263 | /// The default is "val". 264 | /// [Optional] The name of the jQuery Validate rule. If not provided, the value 265 | /// of adapterName will be used instead. 266 | /// 267 | return this.add(adapterName, [attribute || "val"], function (options) { 268 | setValidationValues(options, ruleName || adapterName, options.params[attribute]); 269 | }); 270 | }; 271 | $jQval.addMethod("__dummy__", function (value, element, params) { 272 | return true; 273 | }); 274 | $jQval.addMethod("regex", function (value, element, params) { 275 | var match; 276 | if (this.optional(element)) { 277 | return true; 278 | } 279 | match = new RegExp(params).exec(value); 280 | return (match && (match.index === 0) && (match[0].length === value.length)); 281 | }); 282 | $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) { 283 | var match; 284 | if (nonalphamin) { 285 | match = value.match(/\W/g); 286 | match = match && match.length >= nonalphamin; 287 | } 288 | return match; 289 | }); 290 | if ($jQval.methods.extension) { 291 | adapters.addSingleVal("accept", "mimtype"); 292 | adapters.addSingleVal("extension", "extension"); 293 | } else { 294 | // for backward compatibility, when the 'extension' validation method does not exist, such as with versions 295 | // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for 296 | // validating the extension, and ignore mime-type validations as they are not supported. 297 | adapters.addSingleVal("extension", "extension", "accept"); 298 | } 299 | adapters.addSingleVal("regex", "pattern"); 300 | adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"); 301 | adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range"); 302 | adapters.add("equalto", ["other"], function (options) { 303 | var prefix = getModelPrefix(options.element.name), 304 | other = options.params.other, 305 | fullOtherName = appendModelPrefix(other, prefix), 306 | element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0]; 307 | setValidationValues(options, "equalTo", element); 308 | }); 309 | adapters.add("required", function (options) { 310 | // jQuery Validate equates "required" with "mandatory" for checkbox elements 311 | if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") { 312 | setValidationValues(options, "required", true); 313 | } 314 | }); 315 | adapters.add("remote", ["url", "type", "additionalfields"], function (options) { 316 | var value = { 317 | url: options.params.url, 318 | type: options.params.type || "GET", 319 | data: {} 320 | }, 321 | prefix = getModelPrefix(options.element.name); 322 | $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) { 323 | var paramName = appendModelPrefix(fieldName, prefix); 324 | value.data[paramName] = function () { 325 | return $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']").val(); 326 | }; 327 | }); 328 | setValidationValues(options, "remote", value); 329 | }); 330 | adapters.add("password", ["min", "nonalphamin", "regex"], function (options) { 331 | if (options.params.min) { 332 | setValidationValues(options, "minlength", options.params.min); 333 | } 334 | if (options.params.nonalphamin) { 335 | setValidationValues(options, "nonalphamin", options.params.nonalphamin); 336 | } 337 | if (options.params.regex) { 338 | setValidationValues(options, "regex", options.params.regex); 339 | } 340 | }); 341 | $(function () { 342 | $jQval.unobtrusive.parse(document); 343 | }); 344 | }(jQuery)); 345 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Scripts/jquery.validate.unobtrusive.min.js: -------------------------------------------------------------------------------- 1 | /* NUGET: BEGIN LICENSE TEXT 2 | * 3 | * Microsoft grants you the right to use these script files for the sole 4 | * purpose of either: (i) interacting through your browser with the Microsoft 5 | * website or online service, subject to the applicable licensing or use 6 | * terms; or (ii) using the files as included with a Microsoft product subject 7 | * to that product's license terms. Microsoft reserves all other rights to the 8 | * files not expressly granted by Microsoft, whether by implication, estoppel 9 | * or otherwise. Insofar as a script file is dual licensed under GPL, 10 | * Microsoft neither took the code under GPL nor distributes it thereunder but 11 | * under the terms set out in this paragraph. All notices and licenses 12 | * below are for informational purposes only. 13 | * 14 | * NUGET: END LICENSE TEXT */ 15 | /* 16 | ** Unobtrusive validation support library for jQuery and jQuery Validate 17 | ** Copyright (C) Microsoft Corporation. All rights reserved. 18 | */ 19 | (function(a){var d=a.validator,b,e="unobtrusiveValidation";function c(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message}function j(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function f(a){return a.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function h(a){return a.substr(0,a.lastIndexOf(".")+1)}function g(a,b){if(a.indexOf("*.")===0)a=a.replace("*.",b);return a}function m(c,e){var b=a(this).find("[data-valmsg-for='"+f(e[0].name)+"']"),d=b.attr("data-valmsg-replace"),g=d?a.parseJSON(d)!==false:null;b.removeClass("field-validation-valid").addClass("field-validation-error");c.data("unobtrusiveContainer",b);if(g){b.empty();c.removeClass("input-validation-error").appendTo(b)}else c.hide()}function l(e,d){var c=a(this).find("[data-valmsg-summary=true]"),b=c.find("ul");if(b&&b.length&&d.errorList.length){b.empty();c.addClass("validation-summary-errors").removeClass("validation-summary-valid");a.each(d.errorList,function(){a("
  • ").html(this.message).appendTo(b)})}}function k(d){var b=d.data("unobtrusiveContainer"),c=b.attr("data-valmsg-replace"),e=c?a.parseJSON(c):null;if(b){b.addClass("field-validation-valid").removeClass("field-validation-error");d.removeData("unobtrusiveContainer");e&&b.empty()}}function n(){var b=a(this);b.data("validator").resetForm();b.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors");b.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}function i(c){var b=a(c),d=b.data(e),f=a.proxy(n,c);if(!d){d={options:{errorClass:"input-validation-error",errorElement:"span",errorPlacement:a.proxy(m,c),invalidHandler:a.proxy(l,c),messages:{},rules:{},success:a.proxy(k,c)},attachValidation:function(){b.unbind("reset."+e,f).bind("reset."+e,f).validate(this.options)},validate:function(){b.validate();return b.valid()}};b.data(e,d)}return d}d.unobtrusive={adapters:[],parseElement:function(b,h){var d=a(b),f=d.parents("form")[0],c,e,g;if(!f)return;c=i(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c="data-val-"+this.name,i=d.attr(c),h={};if(i!==undefined){c+="-";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});a.extend(e,{__dummy__:true});!h&&c.attachValidation()},parse:function(b){var c=a(b).parents("form").andSelf().add(a(b).find("form")).filter("form");a(b).find(":input").filter("[data-val=true]").each(function(){d.unobtrusive.parseElement(this,true)});c.each(function(){var a=i(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||"min",b||"max"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||"val"],function(e){c(e,d||a,e.params[b])})};d.addMethod("__dummy__",function(){return true});d.addMethod("regex",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});d.addMethod("nonalphamin",function(c,d,b){var a;if(b){a=c.match(/\W/g);a=a&&a.length>=b}return a});if(d.methods.extension){b.addSingleVal("accept","mimtype");b.addSingleVal("extension","extension")}else b.addSingleVal("extension","extension","accept");b.addSingleVal("regex","pattern");b.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");b.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range");b.add("equalto",["other"],function(b){var i=h(b.element.name),j=b.params.other,d=g(j,i),e=a(b.form).find(":input").filter("[name='"+f(d)+"']")[0];c(b,"equalTo",e)});b.add("required",function(a){(a.element.tagName.toUpperCase()!=="INPUT"||a.element.type.toUpperCase()!=="CHECKBOX")&&c(a,"required",true)});b.add("remote",["url","type","additionalfields"],function(b){var d={url:b.params.url,type:b.params.type||"GET",data:{}},e=h(b.element.name);a.each(j(b.params.additionalfields||b.element.name),function(i,h){var c=g(h,e);d.data[c]=function(){return a(b.form).find(":input").filter("[name='"+f(c)+"']").val()}});c(b,"remote",d)});b.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&c(a,"minlength",a.params.min);a.params.nonalphamin&&c(a,"nonalphamin",a.params.nonalphamin);a.params.regex&&c(a,"regex",a.params.regex)});a(function(){d.unobtrusive.parse(document)})})(jQuery); 20 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Scripts/respond.js: -------------------------------------------------------------------------------- 1 | /* NUGET: BEGIN LICENSE TEXT 2 | * 3 | * Microsoft grants you the right to use these script files for the sole 4 | * purpose of either: (i) interacting through your browser with the Microsoft 5 | * website or online service, subject to the applicable licensing or use 6 | * terms; or (ii) using the files as included with a Microsoft product subject 7 | * to that product's license terms. Microsoft reserves all other rights to the 8 | * files not expressly granted by Microsoft, whether by implication, estoppel 9 | * or otherwise. Insofar as a script file is dual licensed under GPL, 10 | * Microsoft neither took the code under GPL nor distributes it thereunder but 11 | * under the terms set out in this paragraph. All notices and licenses 12 | * below are for informational purposes only. 13 | * 14 | * NUGET: END LICENSE TEXT */ 15 | /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ 16 | /*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ 17 | window.matchMedia = window.matchMedia || (function(doc, undefined){ 18 | 19 | var bool, 20 | docElem = doc.documentElement, 21 | refNode = docElem.firstElementChild || docElem.firstChild, 22 | // fakeBody required for 23 | fakeBody = doc.createElement('body'), 24 | div = doc.createElement('div'); 25 | 26 | div.id = 'mq-test-1'; 27 | div.style.cssText = "position:absolute;top:-100em"; 28 | fakeBody.style.background = "none"; 29 | fakeBody.appendChild(div); 30 | 31 | return function(q){ 32 | 33 | div.innerHTML = '­'; 34 | 35 | docElem.insertBefore(fakeBody, refNode); 36 | bool = div.offsetWidth == 42; 37 | docElem.removeChild(fakeBody); 38 | 39 | return { matches: bool, media: q }; 40 | }; 41 | 42 | })(document); 43 | 44 | 45 | 46 | 47 | /*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ 48 | (function( win ){ 49 | //exposed namespace 50 | win.respond = {}; 51 | 52 | //define update even in native-mq-supporting browsers, to avoid errors 53 | respond.update = function(){}; 54 | 55 | //expose media query support flag for external use 56 | respond.mediaQueriesSupported = win.matchMedia && win.matchMedia( "only all" ).matches; 57 | 58 | //if media queries are supported, exit here 59 | if( respond.mediaQueriesSupported ){ return; } 60 | 61 | //define vars 62 | var doc = win.document, 63 | docElem = doc.documentElement, 64 | mediastyles = [], 65 | rules = [], 66 | appendedEls = [], 67 | parsedSheets = {}, 68 | resizeThrottle = 30, 69 | head = doc.getElementsByTagName( "head" )[0] || docElem, 70 | base = doc.getElementsByTagName( "base" )[0], 71 | links = head.getElementsByTagName( "link" ), 72 | requestQueue = [], 73 | 74 | //loop stylesheets, send text content to translate 75 | ripCSS = function(){ 76 | var sheets = links, 77 | sl = sheets.length, 78 | i = 0, 79 | //vars for loop: 80 | sheet, href, media, isCSS; 81 | 82 | for( ; i < sl; i++ ){ 83 | sheet = sheets[ i ], 84 | href = sheet.href, 85 | media = sheet.media, 86 | isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet"; 87 | 88 | //only links plz and prevent re-parsing 89 | if( !!href && isCSS && !parsedSheets[ href ] ){ 90 | // selectivizr exposes css through the rawCssText expando 91 | if (sheet.styleSheet && sheet.styleSheet.rawCssText) { 92 | translate( sheet.styleSheet.rawCssText, href, media ); 93 | parsedSheets[ href ] = true; 94 | } else { 95 | if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base) 96 | || href.replace( RegExp.$1, "" ).split( "/" )[0] === win.location.host ){ 97 | requestQueue.push( { 98 | href: href, 99 | media: media 100 | } ); 101 | } 102 | } 103 | } 104 | } 105 | makeRequests(); 106 | }, 107 | 108 | //recurse through request queue, get css text 109 | makeRequests = function(){ 110 | if( requestQueue.length ){ 111 | var thisRequest = requestQueue.shift(); 112 | 113 | ajax( thisRequest.href, function( styles ){ 114 | translate( styles, thisRequest.href, thisRequest.media ); 115 | parsedSheets[ thisRequest.href ] = true; 116 | makeRequests(); 117 | } ); 118 | } 119 | }, 120 | 121 | //find media blocks in css text, convert to style blocks 122 | translate = function( styles, href, media ){ 123 | var qs = styles.match( /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi ), 124 | ql = qs && qs.length || 0, 125 | //try to get CSS path 126 | href = href.substring( 0, href.lastIndexOf( "/" )), 127 | repUrls = function( css ){ 128 | return css.replace( /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, "$1" + href + "$2$3" ); 129 | }, 130 | useMedia = !ql && media, 131 | //vars used in loop 132 | i = 0, 133 | j, fullq, thisq, eachq, eql; 134 | 135 | //if path exists, tack on trailing slash 136 | if( href.length ){ href += "/"; } 137 | 138 | //if no internal queries exist, but media attr does, use that 139 | //note: this currently lacks support for situations where a media attr is specified on a link AND 140 | //its associated stylesheet has internal CSS media queries. 141 | //In those cases, the media attribute will currently be ignored. 142 | if( useMedia ){ 143 | ql = 1; 144 | } 145 | 146 | 147 | for( ; i < ql; i++ ){ 148 | j = 0; 149 | 150 | //media attr 151 | if( useMedia ){ 152 | fullq = media; 153 | rules.push( repUrls( styles ) ); 154 | } 155 | //parse for styles 156 | else{ 157 | fullq = qs[ i ].match( /@media *([^\{]+)\{([\S\s]+?)$/ ) && RegExp.$1; 158 | rules.push( RegExp.$2 && repUrls( RegExp.$2 ) ); 159 | } 160 | 161 | eachq = fullq.split( "," ); 162 | eql = eachq.length; 163 | 164 | for( ; j < eql; j++ ){ 165 | thisq = eachq[ j ]; 166 | mediastyles.push( { 167 | media : thisq.split( "(" )[ 0 ].match( /(only\s+)?([a-zA-Z]+)\s?/ ) && RegExp.$2 || "all", 168 | rules : rules.length - 1, 169 | hasquery: thisq.indexOf("(") > -1, 170 | minw : thisq.match( /\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ), 171 | maxw : thisq.match( /\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ) 172 | } ); 173 | } 174 | } 175 | 176 | applyMedia(); 177 | }, 178 | 179 | lastCall, 180 | 181 | resizeDefer, 182 | 183 | // returns the value of 1em in pixels 184 | getEmValue = function() { 185 | var ret, 186 | div = doc.createElement('div'), 187 | body = doc.body, 188 | fakeUsed = false; 189 | 190 | div.style.cssText = "position:absolute;font-size:1em;width:1em"; 191 | 192 | if( !body ){ 193 | body = fakeUsed = doc.createElement( "body" ); 194 | body.style.background = "none"; 195 | } 196 | 197 | body.appendChild( div ); 198 | 199 | docElem.insertBefore( body, docElem.firstChild ); 200 | 201 | ret = div.offsetWidth; 202 | 203 | if( fakeUsed ){ 204 | docElem.removeChild( body ); 205 | } 206 | else { 207 | body.removeChild( div ); 208 | } 209 | 210 | //also update eminpx before returning 211 | ret = eminpx = parseFloat(ret); 212 | 213 | return ret; 214 | }, 215 | 216 | //cached container for 1em value, populated the first time it's needed 217 | eminpx, 218 | 219 | //enable/disable styles 220 | applyMedia = function( fromResize ){ 221 | var name = "clientWidth", 222 | docElemProp = docElem[ name ], 223 | currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp, 224 | styleBlocks = {}, 225 | lastLink = links[ links.length-1 ], 226 | now = (new Date()).getTime(); 227 | 228 | //throttle resize calls 229 | if( fromResize && lastCall && now - lastCall < resizeThrottle ){ 230 | clearTimeout( resizeDefer ); 231 | resizeDefer = setTimeout( applyMedia, resizeThrottle ); 232 | return; 233 | } 234 | else { 235 | lastCall = now; 236 | } 237 | 238 | for( var i in mediastyles ){ 239 | var thisstyle = mediastyles[ i ], 240 | min = thisstyle.minw, 241 | max = thisstyle.maxw, 242 | minnull = min === null, 243 | maxnull = max === null, 244 | em = "em"; 245 | 246 | if( !!min ){ 247 | min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); 248 | } 249 | if( !!max ){ 250 | max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); 251 | } 252 | 253 | // if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true 254 | if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){ 255 | if( !styleBlocks[ thisstyle.media ] ){ 256 | styleBlocks[ thisstyle.media ] = []; 257 | } 258 | styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] ); 259 | } 260 | } 261 | 262 | //remove any existing respond style element(s) 263 | for( var i in appendedEls ){ 264 | if( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){ 265 | head.removeChild( appendedEls[ i ] ); 266 | } 267 | } 268 | 269 | //inject active styles, grouped by media type 270 | for( var i in styleBlocks ){ 271 | var ss = doc.createElement( "style" ), 272 | css = styleBlocks[ i ].join( "\n" ); 273 | 274 | ss.type = "text/css"; 275 | ss.media = i; 276 | 277 | //originally, ss was appended to a documentFragment and sheets were appended in bulk. 278 | //this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one! 279 | head.insertBefore( ss, lastLink.nextSibling ); 280 | 281 | if ( ss.styleSheet ){ 282 | ss.styleSheet.cssText = css; 283 | } 284 | else { 285 | ss.appendChild( doc.createTextNode( css ) ); 286 | } 287 | 288 | //push to appendedEls to track for later removal 289 | appendedEls.push( ss ); 290 | } 291 | }, 292 | //tweaked Ajax functions from Quirksmode 293 | ajax = function( url, callback ) { 294 | var req = xmlHttp(); 295 | if (!req){ 296 | return; 297 | } 298 | req.open( "GET", url, true ); 299 | req.onreadystatechange = function () { 300 | if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){ 301 | return; 302 | } 303 | callback( req.responseText ); 304 | } 305 | if ( req.readyState == 4 ){ 306 | return; 307 | } 308 | req.send( null ); 309 | }, 310 | //define ajax obj 311 | xmlHttp = (function() { 312 | var xmlhttpmethod = false; 313 | try { 314 | xmlhttpmethod = new XMLHttpRequest(); 315 | } 316 | catch( e ){ 317 | xmlhttpmethod = new ActiveXObject( "Microsoft.XMLHTTP" ); 318 | } 319 | return function(){ 320 | return xmlhttpmethod; 321 | }; 322 | })(); 323 | 324 | //translate CSS 325 | ripCSS(); 326 | 327 | //expose update for re-running respond later on 328 | respond.update = ripCSS; 329 | 330 | //adjust on resize 331 | function callMedia(){ 332 | applyMedia( true ); 333 | } 334 | if( win.addEventListener ){ 335 | win.addEventListener( "resize", callMedia, false ); 336 | } 337 | else if( win.attachEvent ){ 338 | win.attachEvent( "onresize", callMedia ); 339 | } 340 | })(this); 341 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Scripts/respond.min.js: -------------------------------------------------------------------------------- 1 | /* NUGET: BEGIN LICENSE TEXT 2 | * 3 | * Microsoft grants you the right to use these script files for the sole 4 | * purpose of either: (i) interacting through your browser with the Microsoft 5 | * website or online service, subject to the applicable licensing or use 6 | * terms; or (ii) using the files as included with a Microsoft product subject 7 | * to that product's license terms. Microsoft reserves all other rights to the 8 | * files not expressly granted by Microsoft, whether by implication, estoppel 9 | * or otherwise. Insofar as a script file is dual licensed under GPL, 10 | * Microsoft neither took the code under GPL nor distributes it thereunder but 11 | * under the terms set out in this paragraph. All notices and licenses 12 | * below are for informational purposes only. 13 | * 14 | * NUGET: END LICENSE TEXT */ 15 | /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ 16 | /*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ 17 | window.matchMedia=window.matchMedia||(function(e,f){var c,a=e.documentElement,b=a.firstElementChild||a.firstChild,d=e.createElement("body"),g=e.createElement("div");g.id="mq-test-1";g.style.cssText="position:absolute;top:-100em";d.style.background="none";d.appendChild(g);return function(h){g.innerHTML='­';a.insertBefore(d,b);c=g.offsetWidth==42;a.removeChild(d);return{matches:c,media:h}}})(document); 18 | 19 | /*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ 20 | (function(e){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=e.matchMedia&&e.matchMedia("only all").matches;if(respond.mediaQueriesSupported){return}var w=e.document,s=w.documentElement,i=[],k=[],q=[],o={},h=30,f=w.getElementsByTagName("head")[0]||s,g=w.getElementsByTagName("base")[0],b=f.getElementsByTagName("link"),d=[],a=function(){var D=b,y=D.length,B=0,A,z,C,x;for(;B-1,minw:F.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:F.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}}j()},l,r,v=function(){var z,A=w.createElement("div"),x=w.body,y=false;A.style.cssText="position:absolute;font-size:1em;width:1em";if(!x){x=y=w.createElement("body");x.style.background="none"}x.appendChild(A);s.insertBefore(x,s.firstChild);z=A.offsetWidth;if(y){s.removeChild(x)}else{x.removeChild(A)}z=p=parseFloat(z);return z},p,j=function(I){var x="clientWidth",B=s[x],H=w.compatMode==="CSS1Compat"&&B||w.body[x]||B,D={},G=b[b.length-1],z=(new Date()).getTime();if(I&&l&&z-l-1?(p||v()):1)}if(!!J){J=parseFloat(J)*(J.indexOf(y)>-1?(p||v()):1)}if(!K.hasquery||(!A||!L)&&(A||H>=C)&&(L||H<=J)){if(!D[K.media]){D[K.media]=[]}D[K.media].push(k[K.rules])}}for(var E in q){if(q[E]&&q[E].parentNode===f){f.removeChild(q[E])}}for(var E in D){var M=w.createElement("style"),F=D[E].join("\n");M.type="text/css";M.media=E;f.insertBefore(M,G.nextSibling);if(M.styleSheet){M.styleSheet.cssText=F}else{M.appendChild(w.createTextNode(F))}q.push(M)}},n=function(x,z){var y=c();if(!y){return}y.open("GET",x,true);y.onreadystatechange=function(){if(y.readyState!=4||y.status!=200&&y.status!=304){return}z(y.responseText)};if(y.readyState==4){return}y.send(null)},c=(function(){var x=false;try{x=new XMLHttpRequest()}catch(y){x=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return x}})();a();respond.update=a;function t(){j(true)}if(e.addEventListener){e.addEventListener("resize",t,false)}else{if(e.attachEvent){e.attachEvent("onresize",t)}}})(this); -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Startup.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Owin; 2 | using Owin; 3 | 4 | [assembly: OwinStartupAttribute(typeof(AspNetIdentityWithoutADatabase.WebApplication.Startup))] 5 | namespace AspNetIdentityWithoutADatabase.WebApplication 6 | { 7 | public partial class Startup 8 | { 9 | public void Configuration(IAppBuilder app) 10 | { 11 | ConfigureAuth(app); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Views/Account/Login.cshtml: -------------------------------------------------------------------------------- 1 | @model AspNetIdentityWithoutADatabase.WebApplication.Models.LoginViewModel 2 | 3 | @{ 4 | ViewBag.Title = "Log in"; 5 | } 6 | 7 |

    @ViewBag.Title.

    8 |
    9 |
    10 |
    11 | @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 12 | { 13 | @Html.AntiForgeryToken() 14 |

    Use a local account to log in.

    15 |
    16 | @Html.ValidationSummary(true) 17 |
    18 | @Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" }) 19 |
    20 | @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" }) 21 | @Html.ValidationMessageFor(m => m.UserName) 22 |
    23 |
    24 |
    25 | @Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" }) 26 |
    27 | @Html.PasswordFor(m => m.Password, new { @class = "form-control" }) 28 | @Html.ValidationMessageFor(m => m.Password) 29 |
    30 |
    31 |
    32 |
    33 |
    34 | @Html.CheckBoxFor(m => m.RememberMe) 35 | @Html.LabelFor(m => m.RememberMe) 36 |
    37 |
    38 |
    39 |
    40 |
    41 | 42 |
    43 |
    44 |

    45 | @Html.ActionLink("Register", "Register") if you don't have a local account. 46 |

    47 | } 48 |
    49 |
    50 | @*
    51 |
    52 | @Html.Partial("_ExternalLoginsListPartial", new { Action = "ExternalLogin", ReturnUrl = ViewBag.ReturnUrl }) 53 |
    54 |
    *@ 55 |
    56 | @section Scripts { 57 | @Scripts.Render("~/bundles/jqueryval") 58 | } -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Views/Home/About.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "About"; 3 | } 4 |

    @ViewBag.Title.

    5 |

    @ViewBag.Message

    6 | 7 |

    Use this area to provide additional information.

    8 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Views/Home/Contact.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "Contact"; 3 | } 4 |

    @ViewBag.Title.

    5 |

    @ViewBag.Message

    6 | 7 |
    8 | One Microsoft Way
    9 | Redmond, WA 98052-6399
    10 | P: 11 | 425.555.0100 12 |
    13 | 14 |
    15 | Support: Support@example.com
    16 | Marketing: Marketing@example.com 17 |
    -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "Home Page"; 3 | } 4 | 5 |
    6 |

    ASP.NET

    7 |

    ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.

    8 |

    Learn more »

    9 |
    10 | 11 |
    12 |
    13 |

    Getting started

    14 |

    15 | ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that 16 | enables a clean separation of concerns and gives you full control over markup 17 | for enjoyable, agile development. 18 |

    19 |

    Learn more »

    20 |
    21 |
    22 |

    Get more libraries

    23 |

    NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.

    24 |

    Learn more »

    25 |
    26 |
    27 |

    Web Hosting

    28 |

    You can easily find a web hosting company that offers the right mix of features and price for your applications.

    29 |

    Learn more »

    30 |
    31 |
    -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @model System.Web.Mvc.HandleErrorInfo 2 | 3 | @{ 4 | ViewBag.Title = "Error"; 5 | } 6 | 7 |

    Error.

    8 |

    An error occurred while processing your request.

    9 | 10 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | @ViewBag.Title - My ASP.NET Application 7 | @Styles.Render("~/Content/css") 8 | @Scripts.Render("~/bundles/modernizr") 9 | 10 | 11 | 12 | 32 |
    33 | @RenderBody() 34 |
    35 |
    36 |

    © @DateTime.Now.Year - My ASP.NET Application

    37 |
    38 |
    39 | 40 | @Scripts.Render("~/bundles/jquery") 41 | @Scripts.Render("~/bundles/bootstrap") 42 | @RenderSection("scripts", required: false) 43 | 44 | 45 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Views/Shared/_LoginPartial.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNet.Identity 2 | @if (Request.IsAuthenticated) 3 | { 4 | using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" })) 5 | { 6 | @Html.AntiForgeryToken() 7 | 8 | 14 | } 15 | } 16 | else 17 | { 18 | 22 | } 23 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Views/Web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 |
    7 |
    8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_Layout.cshtml"; 3 | } 4 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Web.Debug.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Web.Release.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 17 | 18 | 19 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/Web.config: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 62 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/WebApplication1.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.21005.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleAspNetIdentity", "WebApplication1\SampleAspNetIdentity.csproj", "{ECCCD176-49F7-4DA9-B69B-15E3328E2289}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {ECCCD176-49F7-4DA9-B69B-15E3328E2289}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {ECCCD176-49F7-4DA9-B69B-15E3328E2289}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {ECCCD176-49F7-4DA9-B69B-15E3328E2289}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {ECCCD176-49F7-4DA9-B69B-15E3328E2289}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/WebApplication1.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/WebApplication1.v12.suo -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Antlr3.Runtime.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Antlr3.Runtime.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Antlr3.Runtime.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Antlr3.Runtime.pdb -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/AspNetIdentityWithoutADatabase.WebApplication.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/AspNetIdentityWithoutADatabase.WebApplication.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/AspNetIdentityWithoutADatabase.WebApplication.dll.config: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 62 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/AspNetIdentityWithoutADatabase.WebApplication.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/AspNetIdentityWithoutADatabase.WebApplication.pdb -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.AspNet.Identity.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.AspNet.Identity.Core.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Owin.Host.SystemWeb.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Owin.Host.SystemWeb.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Owin.Security.Cookies.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Owin.Security.Cookies.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Owin.Security.OAuth.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Owin.Security.OAuth.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Owin.Security.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Owin.Security.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Owin.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Owin.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Web.Infrastructure.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Microsoft.Web.Infrastructure.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/Owin.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/Owin.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.Helpers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.Helpers.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.Mvc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.Mvc.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.Optimization.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.Optimization.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.Razor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.Razor.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.WebPages.Deployment.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.WebPages.Deployment.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.WebPages.Deployment.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | System.Web.WebPages.Deployment 5 | 6 | 7 | 8 | Provides a registration point for pre-application start code for Web Pages deployment. 9 | 10 | 11 | Registers pre-application start code for Web Pages deployment. 12 | 13 | 14 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Provides methods that are used to get deployment information about the Web application. 15 | 16 | 17 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Gets the assembly path for the Web Pages deployment. 18 | The assembly path for the Web Pages deployment. 19 | The Web Pages version. 20 | 21 | 22 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Gets the Web Pages version from the given binary path. 23 | The Web Pages version. 24 | The binary path for the Web Pages. 25 | 26 | 27 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Gets the assembly references from the given path regardless of the Web Pages version. 28 | The dictionary containing the assembly references of the Web Pages and its version. 29 | The path to the Web Pages application. 30 | 31 | 32 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Gets the maximum version of the Web Pages loaded assemblies. 33 | The maximum version of the Web Pages loaded assemblies. 34 | 35 | 36 | Gets the Web Pages version from the given path. 37 | The Web Pages version. 38 | The path of the root directory for the application. 39 | 40 | 41 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Gets the Web Pages version using the configuration settings with the specified path. 42 | The Web Pages version. 43 | The path to the application settings. 44 | 45 | 46 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Returns the assemblies for this Web Pages deployment. 47 | A list containing the assemblies for this Web Pages deployment. 48 | 49 | 50 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Indicates whether the Web Pages deployment is enabled. 51 | true if the Web Pages deployment is enabled; otherwise, false. 52 | The path to the Web Pages deployment. 53 | 54 | 55 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Indicates whether the Web Pages deployment is explicitly disabled. 56 | true if the Web Pages deployment is explicitly disabled; otherwise, false. 57 | The path to the Web Pages deployment. 58 | 59 | 60 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.WebPages.Razor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.WebPages.Razor.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.WebPages.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/System.Web.WebPages.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/bin/WebGrease.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/bin/WebGrease.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/favicon.ico -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/AspNetIdentityWithoutADatabase.WebApplication.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Antlr3.Runtime.dll 2 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.AspNet.Identity.Core.dll 3 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Owin.dll 4 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Owin.Host.SystemWeb.dll 5 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Owin.Security.Cookies.dll 6 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Owin.Security.dll 7 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Owin.Security.OAuth.dll 8 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Web.Infrastructure.dll 9 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Owin.dll 10 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.Helpers.dll 11 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.Mvc.dll 12 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.Optimization.dll 13 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.Razor.dll 14 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.WebPages.Deployment.dll 15 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.WebPages.dll 16 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.WebPages.Razor.dll 17 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\WebGrease.dll 18 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Newtonsoft.Json.dll 19 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Owin.xml 20 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Owin.Host.SystemWeb.xml 21 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.Helpers.xml 22 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.Mvc.xml 23 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.Optimization.xml 24 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.Razor.xml 25 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.WebPages.xml 26 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.WebPages.Deployment.xml 27 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\System.Web.WebPages.Razor.xml 28 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Antlr3.Runtime.pdb 29 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.AspNet.Identity.Core.xml 30 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Owin.Security.xml 31 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Owin.Security.Cookies.xml 32 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\Microsoft.Owin.Security.OAuth.xml 33 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\obj\Debug\AspNetIdentityWithoutADatabase.WebApplication.dll 34 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\obj\Debug\AspNetIdentityWithoutADatabase.WebApplication.pdb 35 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\AspNetIdentityWithoutADatabase.WebApplication.dll.config 36 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\AspNetIdentityWithoutADatabase.WebApplication.dll 37 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\bin\AspNetIdentityWithoutADatabase.WebApplication.pdb 38 | C:\development\ASP.NET-Identity-Without-a-Database\AspNetIdentityWithoutADatabase.WebApplication\obj\Debug\AspNetIdentityWithoutADatabase.WebApplication.csprojResolveAssemblyReference.cache 39 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/AspNetIdentityWithoutADatabase.WebApplication.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/AspNetIdentityWithoutADatabase.WebApplication.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/AspNetIdentityWithoutADatabase.WebApplication.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/AspNetIdentityWithoutADatabase.WebApplication.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/AspNetIdentityWithoutADatabase.WebApplication.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/AspNetIdentityWithoutADatabase.WebApplication.pdb -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/SampleAspNetIdentity.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\obj\Debug\SampleAspNetIdentity.csprojResolveAssemblyReference.cache 2 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\WebApplication1.dll.config 3 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\WebApplication1.dll 4 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\WebApplication1.pdb 5 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Antlr3.Runtime.dll 6 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.AspNet.Identity.Core.dll 7 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Owin.dll 8 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Owin.Host.SystemWeb.dll 9 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Owin.Security.Cookies.dll 10 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Owin.Security.dll 11 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Owin.Security.OAuth.dll 12 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Web.Infrastructure.dll 13 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Owin.dll 14 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.Helpers.dll 15 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.Mvc.dll 16 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.Optimization.dll 17 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.Razor.dll 18 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.WebPages.Deployment.dll 19 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.WebPages.dll 20 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.WebPages.Razor.dll 21 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\WebGrease.dll 22 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Newtonsoft.Json.dll 23 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Owin.xml 24 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Owin.Host.SystemWeb.xml 25 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.Helpers.xml 26 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.Mvc.xml 27 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.Optimization.xml 28 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.Razor.xml 29 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.WebPages.xml 30 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.WebPages.Deployment.xml 31 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\System.Web.WebPages.Razor.xml 32 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Antlr3.Runtime.pdb 33 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.AspNet.Identity.Core.xml 34 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Owin.Security.xml 35 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Owin.Security.Cookies.xml 36 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\bin\Microsoft.Owin.Security.OAuth.xml 37 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\obj\Debug\WebApplication1.dll 38 | C:\Users\lee.englestone\Downloads\Simple Asp.net Identity Core Without Entity Framework\C#\WebApplication1\obj\Debug\WebApplication1.pdb 39 | -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/SampleAspNetIdentity.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/SampleAspNetIdentity.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/WebApplication1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/WebApplication1.dll -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/WebApplication1.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/AspNetIdentityWithoutADatabase.WebApplication/obj/Debug/WebApplication1.pdb -------------------------------------------------------------------------------- /AspNetIdentityWithoutADatabase.WebApplication/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Lee Englestone 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ASP.NET-Identity-Without-a-Database 2 | =================================== 3 | 4 | An example of how to use the new ASP.NET Identity authentication without a database 5 | -------------------------------------------------------------------------------- /packages/Antlr.3.4.1.9004/Antlr.3.4.1.9004.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Antlr.3.4.1.9004/Antlr.3.4.1.9004.nupkg -------------------------------------------------------------------------------- /packages/Antlr.3.4.1.9004/lib/Antlr3.Runtime.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Antlr.3.4.1.9004/lib/Antlr3.Runtime.dll -------------------------------------------------------------------------------- /packages/Antlr.3.4.1.9004/lib/Antlr3.Runtime.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Antlr.3.4.1.9004/lib/Antlr3.Runtime.pdb -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Identity.Core.1.0.0/Microsoft.AspNet.Identity.Core.1.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.Identity.Core.1.0.0/Microsoft.AspNet.Identity.Core.1.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Identity.Core.1.0.0/lib/net45/Microsoft.AspNet.Identity.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.Identity.Core.1.0.0/lib/net45/Microsoft.AspNet.Identity.Core.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Identity.Owin.1.0.0/Microsoft.AspNet.Identity.Owin.1.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.Identity.Owin.1.0.0/Microsoft.AspNet.Identity.Owin.1.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Identity.Owin.1.0.0/lib/net45/Microsoft.AspNet.Identity.Owin.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.Identity.Owin.1.0.0/lib/net45/Microsoft.AspNet.Identity.Owin.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Mvc.5.0.0/Microsoft.AspNet.Mvc.5.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.Mvc.5.0.0/Microsoft.AspNet.Mvc.5.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Mvc.5.0.0/lib/net45/System.Web.Mvc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.Mvc.5.0.0/lib/net45/System.Web.Mvc.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Razor.3.0.0/Microsoft.AspNet.Razor.3.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.Razor.3.0.0/Microsoft.AspNet.Razor.3.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Razor.3.0.0/lib/net45/System.Web.Razor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.Razor.3.0.0/lib/net45/System.Web.Razor.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Web.Optimization.1.1.1/Microsoft.AspNet.Web.Optimization.1.1.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.Web.Optimization.1.1.1/Microsoft.AspNet.Web.Optimization.1.1.1.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Web.Optimization.1.1.1/lib/net40/System.Web.Optimization.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.Web.Optimization.1.1.1/lib/net40/System.Web.Optimization.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.3.0.0/Microsoft.AspNet.WebPages.3.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.WebPages.3.0.0/Microsoft.AspNet.WebPages.3.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.3.0.0/lib/net45/System.Web.Helpers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.WebPages.3.0.0/lib/net45/System.Web.Helpers.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.3.0.0/lib/net45/System.Web.WebPages.Deployment.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.WebPages.3.0.0/lib/net45/System.Web.WebPages.Deployment.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.3.0.0/lib/net45/System.Web.WebPages.Deployment.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | System.Web.WebPages.Deployment 5 | 6 | 7 | 8 | Provides a registration point for pre-application start code for Web Pages deployment. 9 | 10 | 11 | Registers pre-application start code for Web Pages deployment. 12 | 13 | 14 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Provides methods that are used to get deployment information about the Web application. 15 | 16 | 17 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Gets the assembly path for the Web Pages deployment. 18 | The assembly path for the Web Pages deployment. 19 | The Web Pages version. 20 | 21 | 22 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Gets the Web Pages version from the given binary path. 23 | The Web Pages version. 24 | The binary path for the Web Pages. 25 | 26 | 27 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Gets the assembly references from the given path regardless of the Web Pages version. 28 | The dictionary containing the assembly references of the Web Pages and its version. 29 | The path to the Web Pages application. 30 | 31 | 32 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Gets the maximum version of the Web Pages loaded assemblies. 33 | The maximum version of the Web Pages loaded assemblies. 34 | 35 | 36 | Gets the Web Pages version from the given path. 37 | The Web Pages version. 38 | The path of the root directory for the application. 39 | 40 | 41 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Gets the Web Pages version using the configuration settings with the specified path. 42 | The Web Pages version. 43 | The path to the application settings. 44 | 45 | 46 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Returns the assemblies for this Web Pages deployment. 47 | A list containing the assemblies for this Web Pages deployment. 48 | 49 | 50 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Indicates whether the Web Pages deployment is enabled. 51 | true if the Web Pages deployment is enabled; otherwise, false. 52 | The path to the Web Pages deployment. 53 | 54 | 55 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.Indicates whether the Web Pages deployment is explicitly disabled. 56 | true if the Web Pages deployment is explicitly disabled; otherwise, false. 57 | The path to the Web Pages deployment. 58 | 59 | 60 | -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.3.0.0/lib/net45/System.Web.WebPages.Razor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.WebPages.3.0.0/lib/net45/System.Web.WebPages.Razor.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.3.0.0/lib/net45/System.Web.WebPages.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.AspNet.WebPages.3.0.0/lib/net45/System.Web.WebPages.dll -------------------------------------------------------------------------------- /packages/Microsoft.Owin.3.0.0/Microsoft.Owin.3.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Owin.3.0.0/Microsoft.Owin.3.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.Owin.3.0.0/lib/net45/Microsoft.Owin.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Owin.3.0.0/lib/net45/Microsoft.Owin.dll -------------------------------------------------------------------------------- /packages/Microsoft.Owin.Host.SystemWeb.3.0.0/Microsoft.Owin.Host.SystemWeb.3.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Owin.Host.SystemWeb.3.0.0/Microsoft.Owin.Host.SystemWeb.3.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.Owin.Host.SystemWeb.3.0.0/lib/net45/Microsoft.Owin.Host.SystemWeb.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Owin.Host.SystemWeb.3.0.0/lib/net45/Microsoft.Owin.Host.SystemWeb.dll -------------------------------------------------------------------------------- /packages/Microsoft.Owin.Security.2.0.0/Microsoft.Owin.Security.2.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Owin.Security.2.0.0/Microsoft.Owin.Security.2.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.Owin.Security.2.0.0/lib/net45/Microsoft.Owin.Security.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Owin.Security.2.0.0/lib/net45/Microsoft.Owin.Security.dll -------------------------------------------------------------------------------- /packages/Microsoft.Owin.Security.Cookies.2.0.0/Microsoft.Owin.Security.Cookies.2.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Owin.Security.Cookies.2.0.0/Microsoft.Owin.Security.Cookies.2.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.Owin.Security.Cookies.2.0.0/lib/net45/Microsoft.Owin.Security.Cookies.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Owin.Security.Cookies.2.0.0/lib/net45/Microsoft.Owin.Security.Cookies.dll -------------------------------------------------------------------------------- /packages/Microsoft.Owin.Security.OAuth.2.0.0/Microsoft.Owin.Security.OAuth.2.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Owin.Security.OAuth.2.0.0/Microsoft.Owin.Security.OAuth.2.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.Owin.Security.OAuth.2.0.0/lib/net45/Microsoft.Owin.Security.OAuth.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Owin.Security.OAuth.2.0.0/lib/net45/Microsoft.Owin.Security.OAuth.dll -------------------------------------------------------------------------------- /packages/Microsoft.Web.Infrastructure.1.0.0.0/Microsoft.Web.Infrastructure.1.0.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Web.Infrastructure.1.0.0.0/Microsoft.Web.Infrastructure.1.0.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.Web.Infrastructure.1.0.0.0/lib/net40/Microsoft.Web.Infrastructure.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.Web.Infrastructure.1.0.0.0/lib/net40/Microsoft.Web.Infrastructure.dll -------------------------------------------------------------------------------- /packages/Microsoft.jQuery.Unobtrusive.Validation.3.0.0/Content/Scripts/jquery.validate.unobtrusive.js: -------------------------------------------------------------------------------- 1 | /* NUGET: BEGIN LICENSE TEXT 2 | * 3 | * Microsoft grants you the right to use these script files for the sole 4 | * purpose of either: (i) interacting through your browser with the Microsoft 5 | * website or online service, subject to the applicable licensing or use 6 | * terms; or (ii) using the files as included with a Microsoft product subject 7 | * to that product's license terms. Microsoft reserves all other rights to the 8 | * files not expressly granted by Microsoft, whether by implication, estoppel 9 | * or otherwise. Insofar as a script file is dual licensed under GPL, 10 | * Microsoft neither took the code under GPL nor distributes it thereunder but 11 | * under the terms set out in this paragraph. All notices and licenses 12 | * below are for informational purposes only. 13 | * 14 | * NUGET: END LICENSE TEXT */ 15 | /*! 16 | ** Unobtrusive validation support library for jQuery and jQuery Validate 17 | ** Copyright (C) Microsoft Corporation. All rights reserved. 18 | */ 19 | /*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */ 20 | /*global document: false, jQuery: false */ 21 | (function ($) { 22 | var $jQval = $.validator, 23 | adapters, 24 | data_validation = "unobtrusiveValidation"; 25 | function setValidationValues(options, ruleName, value) { 26 | options.rules[ruleName] = value; 27 | if (options.message) { 28 | options.messages[ruleName] = options.message; 29 | } 30 | } 31 | function splitAndTrim(value) { 32 | return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g); 33 | } 34 | function escapeAttributeValue(value) { 35 | // As mentioned on http://api.jquery.com/category/selectors/ 36 | return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1"); 37 | } 38 | function getModelPrefix(fieldName) { 39 | return fieldName.substr(0, fieldName.lastIndexOf(".") + 1); 40 | } 41 | function appendModelPrefix(value, prefix) { 42 | if (value.indexOf("*.") === 0) { 43 | value = value.replace("*.", prefix); 44 | } 45 | return value; 46 | } 47 | function onError(error, inputElement) { // 'this' is the form element 48 | var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"), 49 | replaceAttrValue = container.attr("data-valmsg-replace"), 50 | replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null; 51 | container.removeClass("field-validation-valid").addClass("field-validation-error"); 52 | error.data("unobtrusiveContainer", container); 53 | if (replace) { 54 | container.empty(); 55 | error.removeClass("input-validation-error").appendTo(container); 56 | } 57 | else { 58 | error.hide(); 59 | } 60 | } 61 | function onErrors(event, validator) { // 'this' is the form element 62 | var container = $(this).find("[data-valmsg-summary=true]"), 63 | list = container.find("ul"); 64 | if (list && list.length && validator.errorList.length) { 65 | list.empty(); 66 | container.addClass("validation-summary-errors").removeClass("validation-summary-valid"); 67 | $.each(validator.errorList, function () { 68 | $("
  • ").html(this.message).appendTo(list); 69 | }); 70 | } 71 | } 72 | function onSuccess(error) { // 'this' is the form element 73 | var container = error.data("unobtrusiveContainer"), 74 | replaceAttrValue = container.attr("data-valmsg-replace"), 75 | replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null; 76 | if (container) { 77 | container.addClass("field-validation-valid").removeClass("field-validation-error"); 78 | error.removeData("unobtrusiveContainer"); 79 | if (replace) { 80 | container.empty(); 81 | } 82 | } 83 | } 84 | function onReset(event) { // 'this' is the form element 85 | var $form = $(this); 86 | $form.data("validator").resetForm(); 87 | $form.find(".validation-summary-errors") 88 | .addClass("validation-summary-valid") 89 | .removeClass("validation-summary-errors"); 90 | $form.find(".field-validation-error") 91 | .addClass("field-validation-valid") 92 | .removeClass("field-validation-error") 93 | .removeData("unobtrusiveContainer") 94 | .find(">*") // If we were using valmsg-replace, get the underlying error 95 | .removeData("unobtrusiveContainer"); 96 | } 97 | function validationInfo(form) { 98 | var $form = $(form), 99 | result = $form.data(data_validation), 100 | onResetProxy = $.proxy(onReset, form); 101 | if (!result) { 102 | result = { 103 | options: { // options structure passed to jQuery Validate's validate() method 104 | errorClass: "input-validation-error", 105 | errorElement: "span", 106 | errorPlacement: $.proxy(onError, form), 107 | invalidHandler: $.proxy(onErrors, form), 108 | messages: {}, 109 | rules: {}, 110 | success: $.proxy(onSuccess, form) 111 | }, 112 | attachValidation: function () { 113 | $form 114 | .unbind("reset." + data_validation, onResetProxy) 115 | .bind("reset." + data_validation, onResetProxy) 116 | .validate(this.options); 117 | }, 118 | validate: function () { // a validation function that is called by unobtrusive Ajax 119 | $form.validate(); 120 | return $form.valid(); 121 | } 122 | }; 123 | $form.data(data_validation, result); 124 | } 125 | return result; 126 | } 127 | $jQval.unobtrusive = { 128 | adapters: [], 129 | parseElement: function (element, skipAttach) { 130 | /// 131 | /// Parses a single HTML element for unobtrusive validation attributes. 132 | /// 133 | /// The HTML element to be parsed. 134 | /// [Optional] true to skip attaching the 135 | /// validation to the form. If parsing just this single element, you should specify true. 136 | /// If parsing several elements, you should specify false, and manually attach the validation 137 | /// to the form when you are finished. The default is false. 138 | var $element = $(element), 139 | form = $element.parents("form")[0], 140 | valInfo, rules, messages; 141 | if (!form) { // Cannot do client-side validation without a form 142 | return; 143 | } 144 | valInfo = validationInfo(form); 145 | valInfo.options.rules[element.name] = rules = {}; 146 | valInfo.options.messages[element.name] = messages = {}; 147 | $.each(this.adapters, function () { 148 | var prefix = "data-val-" + this.name, 149 | message = $element.attr(prefix), 150 | paramValues = {}; 151 | if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy) 152 | prefix += "-"; 153 | $.each(this.params, function () { 154 | paramValues[this] = $element.attr(prefix + this); 155 | }); 156 | this.adapt({ 157 | element: element, 158 | form: form, 159 | message: message, 160 | params: paramValues, 161 | rules: rules, 162 | messages: messages 163 | }); 164 | } 165 | }); 166 | $.extend(rules, { "__dummy__": true }); 167 | if (!skipAttach) { 168 | valInfo.attachValidation(); 169 | } 170 | }, 171 | parse: function (selector) { 172 | /// 173 | /// Parses all the HTML elements in the specified selector. It looks for input elements decorated 174 | /// with the [data-val=true] attribute value and enables validation according to the data-val-* 175 | /// attribute values. 176 | /// 177 | /// Any valid jQuery selector. 178 | var $forms = $(selector) 179 | .parents("form") 180 | .andSelf() 181 | .add($(selector).find("form")) 182 | .filter("form"); 183 | // :input is a psuedoselector provided by jQuery which selects input and input-like elements 184 | // combining :input with other selectors significantly decreases performance. 185 | $(selector).find(":input").filter("[data-val=true]").each(function () { 186 | $jQval.unobtrusive.parseElement(this, true); 187 | }); 188 | $forms.each(function () { 189 | var info = validationInfo(this); 190 | if (info) { 191 | info.attachValidation(); 192 | } 193 | }); 194 | } 195 | }; 196 | adapters = $jQval.unobtrusive.adapters; 197 | adapters.add = function (adapterName, params, fn) { 198 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation. 199 | /// The name of the adapter to be added. This matches the name used 200 | /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). 201 | /// [Optional] An array of parameter names (strings) that will 202 | /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and 203 | /// mmmm is the parameter name). 204 | /// The function to call, which adapts the values from the HTML 205 | /// attributes into jQuery Validate rules and/or messages. 206 | /// 207 | if (!fn) { // Called with no params, just a function 208 | fn = params; 209 | params = []; 210 | } 211 | this.push({ name: adapterName, params: params, adapt: fn }); 212 | return this; 213 | }; 214 | adapters.addBool = function (adapterName, ruleName) { 215 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where 216 | /// the jQuery Validate validation rule has no parameter values. 217 | /// The name of the adapter to be added. This matches the name used 218 | /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). 219 | /// [Optional] The name of the jQuery Validate rule. If not provided, the value 220 | /// of adapterName will be used instead. 221 | /// 222 | return this.add(adapterName, function (options) { 223 | setValidationValues(options, ruleName || adapterName, true); 224 | }); 225 | }; 226 | adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) { 227 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where 228 | /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and 229 | /// one for min-and-max). The HTML parameters are expected to be named -min and -max. 230 | /// The name of the adapter to be added. This matches the name used 231 | /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). 232 | /// The name of the jQuery Validate rule to be used when you only 233 | /// have a minimum value. 234 | /// The name of the jQuery Validate rule to be used when you only 235 | /// have a maximum value. 236 | /// The name of the jQuery Validate rule to be used when you 237 | /// have both a minimum and maximum value. 238 | /// [Optional] The name of the HTML attribute that 239 | /// contains the minimum value. The default is "min". 240 | /// [Optional] The name of the HTML attribute that 241 | /// contains the maximum value. The default is "max". 242 | /// 243 | return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) { 244 | var min = options.params.min, 245 | max = options.params.max; 246 | if (min && max) { 247 | setValidationValues(options, minMaxRuleName, [min, max]); 248 | } 249 | else if (min) { 250 | setValidationValues(options, minRuleName, min); 251 | } 252 | else if (max) { 253 | setValidationValues(options, maxRuleName, max); 254 | } 255 | }); 256 | }; 257 | adapters.addSingleVal = function (adapterName, attribute, ruleName) { 258 | /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where 259 | /// the jQuery Validate validation rule has a single value. 260 | /// The name of the adapter to be added. This matches the name used 261 | /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name). 262 | /// [Optional] The name of the HTML attribute that contains the value. 263 | /// The default is "val". 264 | /// [Optional] The name of the jQuery Validate rule. If not provided, the value 265 | /// of adapterName will be used instead. 266 | /// 267 | return this.add(adapterName, [attribute || "val"], function (options) { 268 | setValidationValues(options, ruleName || adapterName, options.params[attribute]); 269 | }); 270 | }; 271 | $jQval.addMethod("__dummy__", function (value, element, params) { 272 | return true; 273 | }); 274 | $jQval.addMethod("regex", function (value, element, params) { 275 | var match; 276 | if (this.optional(element)) { 277 | return true; 278 | } 279 | match = new RegExp(params).exec(value); 280 | return (match && (match.index === 0) && (match[0].length === value.length)); 281 | }); 282 | $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) { 283 | var match; 284 | if (nonalphamin) { 285 | match = value.match(/\W/g); 286 | match = match && match.length >= nonalphamin; 287 | } 288 | return match; 289 | }); 290 | if ($jQval.methods.extension) { 291 | adapters.addSingleVal("accept", "mimtype"); 292 | adapters.addSingleVal("extension", "extension"); 293 | } else { 294 | // for backward compatibility, when the 'extension' validation method does not exist, such as with versions 295 | // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for 296 | // validating the extension, and ignore mime-type validations as they are not supported. 297 | adapters.addSingleVal("extension", "extension", "accept"); 298 | } 299 | adapters.addSingleVal("regex", "pattern"); 300 | adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"); 301 | adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range"); 302 | adapters.add("equalto", ["other"], function (options) { 303 | var prefix = getModelPrefix(options.element.name), 304 | other = options.params.other, 305 | fullOtherName = appendModelPrefix(other, prefix), 306 | element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0]; 307 | setValidationValues(options, "equalTo", element); 308 | }); 309 | adapters.add("required", function (options) { 310 | // jQuery Validate equates "required" with "mandatory" for checkbox elements 311 | if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") { 312 | setValidationValues(options, "required", true); 313 | } 314 | }); 315 | adapters.add("remote", ["url", "type", "additionalfields"], function (options) { 316 | var value = { 317 | url: options.params.url, 318 | type: options.params.type || "GET", 319 | data: {} 320 | }, 321 | prefix = getModelPrefix(options.element.name); 322 | $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) { 323 | var paramName = appendModelPrefix(fieldName, prefix); 324 | value.data[paramName] = function () { 325 | return $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']").val(); 326 | }; 327 | }); 328 | setValidationValues(options, "remote", value); 329 | }); 330 | adapters.add("password", ["min", "nonalphamin", "regex"], function (options) { 331 | if (options.params.min) { 332 | setValidationValues(options, "minlength", options.params.min); 333 | } 334 | if (options.params.nonalphamin) { 335 | setValidationValues(options, "nonalphamin", options.params.nonalphamin); 336 | } 337 | if (options.params.regex) { 338 | setValidationValues(options, "regex", options.params.regex); 339 | } 340 | }); 341 | $(function () { 342 | $jQval.unobtrusive.parse(document); 343 | }); 344 | }(jQuery)); 345 | -------------------------------------------------------------------------------- /packages/Microsoft.jQuery.Unobtrusive.Validation.3.0.0/Content/Scripts/jquery.validate.unobtrusive.min.js: -------------------------------------------------------------------------------- 1 | /* NUGET: BEGIN LICENSE TEXT 2 | * 3 | * Microsoft grants you the right to use these script files for the sole 4 | * purpose of either: (i) interacting through your browser with the Microsoft 5 | * website or online service, subject to the applicable licensing or use 6 | * terms; or (ii) using the files as included with a Microsoft product subject 7 | * to that product's license terms. Microsoft reserves all other rights to the 8 | * files not expressly granted by Microsoft, whether by implication, estoppel 9 | * or otherwise. Insofar as a script file is dual licensed under GPL, 10 | * Microsoft neither took the code under GPL nor distributes it thereunder but 11 | * under the terms set out in this paragraph. All notices and licenses 12 | * below are for informational purposes only. 13 | * 14 | * NUGET: END LICENSE TEXT */ 15 | /* 16 | ** Unobtrusive validation support library for jQuery and jQuery Validate 17 | ** Copyright (C) Microsoft Corporation. All rights reserved. 18 | */ 19 | (function(a){var d=a.validator,b,e="unobtrusiveValidation";function c(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message}function j(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function f(a){return a.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function h(a){return a.substr(0,a.lastIndexOf(".")+1)}function g(a,b){if(a.indexOf("*.")===0)a=a.replace("*.",b);return a}function m(c,e){var b=a(this).find("[data-valmsg-for='"+f(e[0].name)+"']"),d=b.attr("data-valmsg-replace"),g=d?a.parseJSON(d)!==false:null;b.removeClass("field-validation-valid").addClass("field-validation-error");c.data("unobtrusiveContainer",b);if(g){b.empty();c.removeClass("input-validation-error").appendTo(b)}else c.hide()}function l(e,d){var c=a(this).find("[data-valmsg-summary=true]"),b=c.find("ul");if(b&&b.length&&d.errorList.length){b.empty();c.addClass("validation-summary-errors").removeClass("validation-summary-valid");a.each(d.errorList,function(){a("
  • ").html(this.message).appendTo(b)})}}function k(d){var b=d.data("unobtrusiveContainer"),c=b.attr("data-valmsg-replace"),e=c?a.parseJSON(c):null;if(b){b.addClass("field-validation-valid").removeClass("field-validation-error");d.removeData("unobtrusiveContainer");e&&b.empty()}}function n(){var b=a(this);b.data("validator").resetForm();b.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors");b.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}function i(c){var b=a(c),d=b.data(e),f=a.proxy(n,c);if(!d){d={options:{errorClass:"input-validation-error",errorElement:"span",errorPlacement:a.proxy(m,c),invalidHandler:a.proxy(l,c),messages:{},rules:{},success:a.proxy(k,c)},attachValidation:function(){b.unbind("reset."+e,f).bind("reset."+e,f).validate(this.options)},validate:function(){b.validate();return b.valid()}};b.data(e,d)}return d}d.unobtrusive={adapters:[],parseElement:function(b,h){var d=a(b),f=d.parents("form")[0],c,e,g;if(!f)return;c=i(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c="data-val-"+this.name,i=d.attr(c),h={};if(i!==undefined){c+="-";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});a.extend(e,{__dummy__:true});!h&&c.attachValidation()},parse:function(b){var c=a(b).parents("form").andSelf().add(a(b).find("form")).filter("form");a(b).find(":input").filter("[data-val=true]").each(function(){d.unobtrusive.parseElement(this,true)});c.each(function(){var a=i(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||"min",b||"max"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||"val"],function(e){c(e,d||a,e.params[b])})};d.addMethod("__dummy__",function(){return true});d.addMethod("regex",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});d.addMethod("nonalphamin",function(c,d,b){var a;if(b){a=c.match(/\W/g);a=a&&a.length>=b}return a});if(d.methods.extension){b.addSingleVal("accept","mimtype");b.addSingleVal("extension","extension")}else b.addSingleVal("extension","extension","accept");b.addSingleVal("regex","pattern");b.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");b.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range");b.add("equalto",["other"],function(b){var i=h(b.element.name),j=b.params.other,d=g(j,i),e=a(b.form).find(":input").filter("[name='"+f(d)+"']")[0];c(b,"equalTo",e)});b.add("required",function(a){(a.element.tagName.toUpperCase()!=="INPUT"||a.element.type.toUpperCase()!=="CHECKBOX")&&c(a,"required",true)});b.add("remote",["url","type","additionalfields"],function(b){var d={url:b.params.url,type:b.params.type||"GET",data:{}},e=h(b.element.name);a.each(j(b.params.additionalfields||b.element.name),function(i,h){var c=g(h,e);d.data[c]=function(){return a(b.form).find(":input").filter("[name='"+f(c)+"']").val()}});c(b,"remote",d)});b.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&c(a,"minlength",a.params.min);a.params.nonalphamin&&c(a,"nonalphamin",a.params.nonalphamin);a.params.regex&&c(a,"regex",a.params.regex)});a(function(){d.unobtrusive.parse(document)})})(jQuery); 20 | -------------------------------------------------------------------------------- /packages/Microsoft.jQuery.Unobtrusive.Validation.3.0.0/Microsoft.jQuery.Unobtrusive.Validation.3.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Microsoft.jQuery.Unobtrusive.Validation.3.0.0/Microsoft.jQuery.Unobtrusive.Validation.3.0.0.nupkg -------------------------------------------------------------------------------- /packages/Modernizr.2.6.2/Modernizr.2.6.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Modernizr.2.6.2/Modernizr.2.6.2.nupkg -------------------------------------------------------------------------------- /packages/Modernizr.2.6.2/Tools/common.ps1: -------------------------------------------------------------------------------- 1 | function AddOrUpdate-Reference($scriptsFolderProjectItem, $fileNamePattern, $newFileName) { 2 | try { 3 | $referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js") 4 | } 5 | catch { 6 | # _references.js file not found 7 | return 8 | } 9 | 10 | if ($referencesFileProjectItem -eq $null) { 11 | # _references.js file not found 12 | return 13 | } 14 | 15 | $referencesFilePath = $referencesFileProjectItem.FileNames(1) 16 | $referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js" 17 | 18 | if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 0) { 19 | # File has no existing matching reference line 20 | # Add the full reference line to the beginning of the file 21 | "/// " | Add-Content $referencesTempFilePath -Encoding UTF8 22 | Get-Content $referencesFilePath | Add-Content $referencesTempFilePath 23 | } 24 | else { 25 | # Loop through file and replace old file name with new file name 26 | Get-Content $referencesFilePath | ForEach-Object { $_ -replace $fileNamePattern, $newFileName } > $referencesTempFilePath 27 | } 28 | 29 | # Copy over the new _references.js file 30 | Copy-Item $referencesTempFilePath $referencesFilePath -Force 31 | Remove-Item $referencesTempFilePath -Force 32 | } 33 | 34 | function Remove-Reference($scriptsFolderProjectItem, $fileNamePattern) { 35 | try { 36 | $referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js") 37 | } 38 | catch { 39 | # _references.js file not found 40 | return 41 | } 42 | 43 | if ($referencesFileProjectItem -eq $null) { 44 | return 45 | } 46 | 47 | $referencesFilePath = $referencesFileProjectItem.FileNames(1) 48 | $referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js" 49 | 50 | if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 1) { 51 | # Delete the line referencing the file 52 | Get-Content $referencesFilePath | ForEach-Object { if (-not ($_ -match $fileNamePattern)) { $_ } } > $referencesTempFilePath 53 | 54 | # Copy over the new _references.js file 55 | Copy-Item $referencesTempFilePath $referencesFilePath -Force 56 | Remove-Item $referencesTempFilePath -Force 57 | } 58 | } 59 | 60 | # Extract the version number from the file in the package's content\scripts folder 61 | $packageScriptsFolder = Join-Path $installPath Content\Scripts 62 | $modernizrFileName = Join-Path $packageScriptsFolder "modernizr-*.js" | Get-ChildItem -Exclude "*.min.js","*-vsdoc.js" | Split-Path -Leaf 63 | $modernizrFileNameRegEx = "modernizr-((?:\d+\.)?(?:\d+\.)?(?:\d+\.)?(?:\d+)).js" 64 | $modernizrFileName -match $modernizrFileNameRegEx 65 | $ver = $matches[1] 66 | 67 | # Get the project item for the scripts folder 68 | try { 69 | $scriptsFolderProjectItem = $project.ProjectItems.Item("Scripts") 70 | $projectScriptsFolderPath = $scriptsFolderProjectItem.FileNames(1) 71 | } 72 | catch { 73 | # No Scripts folder 74 | Write-Host "No scripts folder found" 75 | } -------------------------------------------------------------------------------- /packages/Modernizr.2.6.2/Tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | if ($scriptsFolderProjectItem -eq $null) { 6 | # No Scripts folder 7 | Write-Host "No Scripts folder found" 8 | exit 9 | } 10 | 11 | # Update the _references.js file 12 | AddOrUpdate-Reference $scriptsFolderProjectItem $modernizrFileNameRegEx $modernizrFileName -------------------------------------------------------------------------------- /packages/Modernizr.2.6.2/Tools/uninstall.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | # Update the _references.js file 6 | Remove-Reference $scriptsFolderProjectItem $modernizrFileNameRegEx -------------------------------------------------------------------------------- /packages/Owin.1.0/Owin.1.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Owin.1.0/Owin.1.0.nupkg -------------------------------------------------------------------------------- /packages/Owin.1.0/lib/net40/Owin.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Owin.1.0/lib/net40/Owin.dll -------------------------------------------------------------------------------- /packages/Respond.1.2.0/Respond.1.2.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/Respond.1.2.0/Respond.1.2.0.nupkg -------------------------------------------------------------------------------- /packages/Respond.1.2.0/content/Scripts/respond.js: -------------------------------------------------------------------------------- 1 | /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ 2 | /*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ 3 | window.matchMedia = window.matchMedia || (function(doc, undefined){ 4 | 5 | var bool, 6 | docElem = doc.documentElement, 7 | refNode = docElem.firstElementChild || docElem.firstChild, 8 | // fakeBody required for 9 | fakeBody = doc.createElement('body'), 10 | div = doc.createElement('div'); 11 | 12 | div.id = 'mq-test-1'; 13 | div.style.cssText = "position:absolute;top:-100em"; 14 | fakeBody.style.background = "none"; 15 | fakeBody.appendChild(div); 16 | 17 | return function(q){ 18 | 19 | div.innerHTML = '­'; 20 | 21 | docElem.insertBefore(fakeBody, refNode); 22 | bool = div.offsetWidth == 42; 23 | docElem.removeChild(fakeBody); 24 | 25 | return { matches: bool, media: q }; 26 | }; 27 | 28 | })(document); 29 | 30 | 31 | 32 | 33 | /*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ 34 | (function( win ){ 35 | //exposed namespace 36 | win.respond = {}; 37 | 38 | //define update even in native-mq-supporting browsers, to avoid errors 39 | respond.update = function(){}; 40 | 41 | //expose media query support flag for external use 42 | respond.mediaQueriesSupported = win.matchMedia && win.matchMedia( "only all" ).matches; 43 | 44 | //if media queries are supported, exit here 45 | if( respond.mediaQueriesSupported ){ return; } 46 | 47 | //define vars 48 | var doc = win.document, 49 | docElem = doc.documentElement, 50 | mediastyles = [], 51 | rules = [], 52 | appendedEls = [], 53 | parsedSheets = {}, 54 | resizeThrottle = 30, 55 | head = doc.getElementsByTagName( "head" )[0] || docElem, 56 | base = doc.getElementsByTagName( "base" )[0], 57 | links = head.getElementsByTagName( "link" ), 58 | requestQueue = [], 59 | 60 | //loop stylesheets, send text content to translate 61 | ripCSS = function(){ 62 | var sheets = links, 63 | sl = sheets.length, 64 | i = 0, 65 | //vars for loop: 66 | sheet, href, media, isCSS; 67 | 68 | for( ; i < sl; i++ ){ 69 | sheet = sheets[ i ], 70 | href = sheet.href, 71 | media = sheet.media, 72 | isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet"; 73 | 74 | //only links plz and prevent re-parsing 75 | if( !!href && isCSS && !parsedSheets[ href ] ){ 76 | // selectivizr exposes css through the rawCssText expando 77 | if (sheet.styleSheet && sheet.styleSheet.rawCssText) { 78 | translate( sheet.styleSheet.rawCssText, href, media ); 79 | parsedSheets[ href ] = true; 80 | } else { 81 | if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base) 82 | || href.replace( RegExp.$1, "" ).split( "/" )[0] === win.location.host ){ 83 | requestQueue.push( { 84 | href: href, 85 | media: media 86 | } ); 87 | } 88 | } 89 | } 90 | } 91 | makeRequests(); 92 | }, 93 | 94 | //recurse through request queue, get css text 95 | makeRequests = function(){ 96 | if( requestQueue.length ){ 97 | var thisRequest = requestQueue.shift(); 98 | 99 | ajax( thisRequest.href, function( styles ){ 100 | translate( styles, thisRequest.href, thisRequest.media ); 101 | parsedSheets[ thisRequest.href ] = true; 102 | makeRequests(); 103 | } ); 104 | } 105 | }, 106 | 107 | //find media blocks in css text, convert to style blocks 108 | translate = function( styles, href, media ){ 109 | var qs = styles.match( /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi ), 110 | ql = qs && qs.length || 0, 111 | //try to get CSS path 112 | href = href.substring( 0, href.lastIndexOf( "/" )), 113 | repUrls = function( css ){ 114 | return css.replace( /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, "$1" + href + "$2$3" ); 115 | }, 116 | useMedia = !ql && media, 117 | //vars used in loop 118 | i = 0, 119 | j, fullq, thisq, eachq, eql; 120 | 121 | //if path exists, tack on trailing slash 122 | if( href.length ){ href += "/"; } 123 | 124 | //if no internal queries exist, but media attr does, use that 125 | //note: this currently lacks support for situations where a media attr is specified on a link AND 126 | //its associated stylesheet has internal CSS media queries. 127 | //In those cases, the media attribute will currently be ignored. 128 | if( useMedia ){ 129 | ql = 1; 130 | } 131 | 132 | 133 | for( ; i < ql; i++ ){ 134 | j = 0; 135 | 136 | //media attr 137 | if( useMedia ){ 138 | fullq = media; 139 | rules.push( repUrls( styles ) ); 140 | } 141 | //parse for styles 142 | else{ 143 | fullq = qs[ i ].match( /@media *([^\{]+)\{([\S\s]+?)$/ ) && RegExp.$1; 144 | rules.push( RegExp.$2 && repUrls( RegExp.$2 ) ); 145 | } 146 | 147 | eachq = fullq.split( "," ); 148 | eql = eachq.length; 149 | 150 | for( ; j < eql; j++ ){ 151 | thisq = eachq[ j ]; 152 | mediastyles.push( { 153 | media : thisq.split( "(" )[ 0 ].match( /(only\s+)?([a-zA-Z]+)\s?/ ) && RegExp.$2 || "all", 154 | rules : rules.length - 1, 155 | hasquery: thisq.indexOf("(") > -1, 156 | minw : thisq.match( /\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ), 157 | maxw : thisq.match( /\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ) 158 | } ); 159 | } 160 | } 161 | 162 | applyMedia(); 163 | }, 164 | 165 | lastCall, 166 | 167 | resizeDefer, 168 | 169 | // returns the value of 1em in pixels 170 | getEmValue = function() { 171 | var ret, 172 | div = doc.createElement('div'), 173 | body = doc.body, 174 | fakeUsed = false; 175 | 176 | div.style.cssText = "position:absolute;font-size:1em;width:1em"; 177 | 178 | if( !body ){ 179 | body = fakeUsed = doc.createElement( "body" ); 180 | body.style.background = "none"; 181 | } 182 | 183 | body.appendChild( div ); 184 | 185 | docElem.insertBefore( body, docElem.firstChild ); 186 | 187 | ret = div.offsetWidth; 188 | 189 | if( fakeUsed ){ 190 | docElem.removeChild( body ); 191 | } 192 | else { 193 | body.removeChild( div ); 194 | } 195 | 196 | //also update eminpx before returning 197 | ret = eminpx = parseFloat(ret); 198 | 199 | return ret; 200 | }, 201 | 202 | //cached container for 1em value, populated the first time it's needed 203 | eminpx, 204 | 205 | //enable/disable styles 206 | applyMedia = function( fromResize ){ 207 | var name = "clientWidth", 208 | docElemProp = docElem[ name ], 209 | currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp, 210 | styleBlocks = {}, 211 | lastLink = links[ links.length-1 ], 212 | now = (new Date()).getTime(); 213 | 214 | //throttle resize calls 215 | if( fromResize && lastCall && now - lastCall < resizeThrottle ){ 216 | clearTimeout( resizeDefer ); 217 | resizeDefer = setTimeout( applyMedia, resizeThrottle ); 218 | return; 219 | } 220 | else { 221 | lastCall = now; 222 | } 223 | 224 | for( var i in mediastyles ){ 225 | var thisstyle = mediastyles[ i ], 226 | min = thisstyle.minw, 227 | max = thisstyle.maxw, 228 | minnull = min === null, 229 | maxnull = max === null, 230 | em = "em"; 231 | 232 | if( !!min ){ 233 | min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); 234 | } 235 | if( !!max ){ 236 | max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); 237 | } 238 | 239 | // if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true 240 | if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){ 241 | if( !styleBlocks[ thisstyle.media ] ){ 242 | styleBlocks[ thisstyle.media ] = []; 243 | } 244 | styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] ); 245 | } 246 | } 247 | 248 | //remove any existing respond style element(s) 249 | for( var i in appendedEls ){ 250 | if( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){ 251 | head.removeChild( appendedEls[ i ] ); 252 | } 253 | } 254 | 255 | //inject active styles, grouped by media type 256 | for( var i in styleBlocks ){ 257 | var ss = doc.createElement( "style" ), 258 | css = styleBlocks[ i ].join( "\n" ); 259 | 260 | ss.type = "text/css"; 261 | ss.media = i; 262 | 263 | //originally, ss was appended to a documentFragment and sheets were appended in bulk. 264 | //this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one! 265 | head.insertBefore( ss, lastLink.nextSibling ); 266 | 267 | if ( ss.styleSheet ){ 268 | ss.styleSheet.cssText = css; 269 | } 270 | else { 271 | ss.appendChild( doc.createTextNode( css ) ); 272 | } 273 | 274 | //push to appendedEls to track for later removal 275 | appendedEls.push( ss ); 276 | } 277 | }, 278 | //tweaked Ajax functions from Quirksmode 279 | ajax = function( url, callback ) { 280 | var req = xmlHttp(); 281 | if (!req){ 282 | return; 283 | } 284 | req.open( "GET", url, true ); 285 | req.onreadystatechange = function () { 286 | if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){ 287 | return; 288 | } 289 | callback( req.responseText ); 290 | } 291 | if ( req.readyState == 4 ){ 292 | return; 293 | } 294 | req.send( null ); 295 | }, 296 | //define ajax obj 297 | xmlHttp = (function() { 298 | var xmlhttpmethod = false; 299 | try { 300 | xmlhttpmethod = new XMLHttpRequest(); 301 | } 302 | catch( e ){ 303 | xmlhttpmethod = new ActiveXObject( "Microsoft.XMLHTTP" ); 304 | } 305 | return function(){ 306 | return xmlhttpmethod; 307 | }; 308 | })(); 309 | 310 | //translate CSS 311 | ripCSS(); 312 | 313 | //expose update for re-running respond later on 314 | respond.update = ripCSS; 315 | 316 | //adjust on resize 317 | function callMedia(){ 318 | applyMedia( true ); 319 | } 320 | if( win.addEventListener ){ 321 | win.addEventListener( "resize", callMedia, false ); 322 | } 323 | else if( win.attachEvent ){ 324 | win.attachEvent( "onresize", callMedia ); 325 | } 326 | })(this); 327 | -------------------------------------------------------------------------------- /packages/Respond.1.2.0/content/Scripts/respond.min.js: -------------------------------------------------------------------------------- 1 | /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ 2 | /*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ 3 | window.matchMedia=window.matchMedia||(function(e,f){var c,a=e.documentElement,b=a.firstElementChild||a.firstChild,d=e.createElement("body"),g=e.createElement("div");g.id="mq-test-1";g.style.cssText="position:absolute;top:-100em";d.style.background="none";d.appendChild(g);return function(h){g.innerHTML='­';a.insertBefore(d,b);c=g.offsetWidth==42;a.removeChild(d);return{matches:c,media:h}}})(document); 4 | 5 | /*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ 6 | (function(e){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=e.matchMedia&&e.matchMedia("only all").matches;if(respond.mediaQueriesSupported){return}var w=e.document,s=w.documentElement,i=[],k=[],q=[],o={},h=30,f=w.getElementsByTagName("head")[0]||s,g=w.getElementsByTagName("base")[0],b=f.getElementsByTagName("link"),d=[],a=function(){var D=b,y=D.length,B=0,A,z,C,x;for(;B-1,minw:F.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:F.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}}j()},l,r,v=function(){var z,A=w.createElement("div"),x=w.body,y=false;A.style.cssText="position:absolute;font-size:1em;width:1em";if(!x){x=y=w.createElement("body");x.style.background="none"}x.appendChild(A);s.insertBefore(x,s.firstChild);z=A.offsetWidth;if(y){s.removeChild(x)}else{x.removeChild(A)}z=p=parseFloat(z);return z},p,j=function(I){var x="clientWidth",B=s[x],H=w.compatMode==="CSS1Compat"&&B||w.body[x]||B,D={},G=b[b.length-1],z=(new Date()).getTime();if(I&&l&&z-l-1?(p||v()):1)}if(!!J){J=parseFloat(J)*(J.indexOf(y)>-1?(p||v()):1)}if(!K.hasquery||(!A||!L)&&(A||H>=C)&&(L||H<=J)){if(!D[K.media]){D[K.media]=[]}D[K.media].push(k[K.rules])}}for(var E in q){if(q[E]&&q[E].parentNode===f){f.removeChild(q[E])}}for(var E in D){var M=w.createElement("style"),F=D[E].join("\n");M.type="text/css";M.media=E;f.insertBefore(M,G.nextSibling);if(M.styleSheet){M.styleSheet.cssText=F}else{M.appendChild(w.createTextNode(F))}q.push(M)}},n=function(x,z){var y=c();if(!y){return}y.open("GET",x,true);y.onreadystatechange=function(){if(y.readyState!=4||y.status!=200&&y.status!=304){return}z(y.responseText)};if(y.readyState==4){return}y.send(null)},c=(function(){var x=false;try{x=new XMLHttpRequest()}catch(y){x=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return x}})();a();respond.update=a;function t(){j(true)}if(e.addEventListener){e.addEventListener("resize",t,false)}else{if(e.attachEvent){e.attachEvent("onresize",t)}}})(this); -------------------------------------------------------------------------------- /packages/WebGrease.1.5.2/WebGrease.1.5.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/WebGrease.1.5.2/WebGrease.1.5.2.nupkg -------------------------------------------------------------------------------- /packages/WebGrease.1.5.2/lib/WebGrease.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/WebGrease.1.5.2/lib/WebGrease.dll -------------------------------------------------------------------------------- /packages/WebGrease.1.5.2/tools/WG.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/WebGrease.1.5.2/tools/WG.exe -------------------------------------------------------------------------------- /packages/WebGrease.1.5.2/tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | # Return a relative path with reference to root as Uri object 4 | # $rootPath - root path 5 | # $relativePath - relative path 6 | # $appendToRelativePath - Optional parameter. If provided will be appended to relative Path using Path.Combine() 7 | Function GetRelativeUri($rootPath, $relativePath, $appendToRelativePath) 8 | { 9 | if($rootPath -eq $null) 10 | { 11 | return $null 12 | } 13 | 14 | if($relativePath -eq $null) 15 | { 16 | return $null 17 | } 18 | 19 | $rootUri = new-object system.Uri($rootPath) 20 | $targetPath = $relativePath 21 | 22 | # If appendToRelativePath is provided then use it 23 | if($appendToRelativePath -ne $null) 24 | { 25 | $targetPath = [io.path]::Combine($relativePath, $appendToRelativePath) 26 | } 27 | 28 | $targetUri = new-object system.Uri($targetPath) 29 | $relativeUri = $rootUri.MakeRelativeUri($targetUri) 30 | 31 | return $relativeUri 32 | } 33 | 34 | # Visual Studio execution done via NuGet Package Manager 35 | Function VSExecution($installPath, $package, $project) 36 | { 37 | #$project.DTE.ExecuteCommand("File.SaveAll", [system.string]::Empty) 38 | 39 | # Get the msbuild version of the project and add the import 40 | $msbuild = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1 41 | 42 | # add a property for us to be able to reference the path where the package was installed 43 | $relativePackageUri = GetRelativeUri $project.FullName $installPath"\lib" 44 | 45 | $msbuild.Xml.AddProperty("WebGreaseLibPath", $relativePackageUri.ToString().Replace([System.IO.Path]::AltDirectorySeparatorChar, [System.IO.Path]::DirectorySeparatorChar)) 46 | 47 | # save the project 48 | $project.Save() 49 | } 50 | 51 | # Command line execution done by any external tool (For example, NuGetUpdater) 52 | # $package - package id 53 | # $project - parameter value is path to Project file in this case. 54 | Function CommandLineExecution($installPath, $package, $project) 55 | { 56 | [Reflection.Assembly]::LoadWithPartialName("Microsoft.Build") 57 | [Reflection.Assembly]::LoadWithPartialName("System.Xml") 58 | [Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq") 59 | 60 | # Get the msbuild version of the project and add the import 61 | $projXDoc = [System.Xml.Linq.XDocument]::Load($project) 62 | 63 | $defaultNameSpace = $projXDoc.Root.GetDefaultNamespace() 64 | 65 | $propertyGroup = [System.Xml.Linq.XName]::Get("PropertyGroup", $defaultNameSpace.NamespaceName) 66 | $webGreaseBuildLocation = [System.Xml.Linq.XName]::Get("WebGreaseLibPath", $defaultNameSpace.NamespaceName) 67 | 68 | # add a property for us to be able to reference the path where the package was installed 69 | $relativePackageUri = GetRelativeUri $project.FullName $installPath"\lib" 70 | 71 | $propGroupElement = $projXDoc.Root.Elements($propertyGroup) | Select-Object -First 1 72 | IF ($propGroupElement -ne $null) 73 | { 74 | $newElement = new-object System.Xml.Linq.XElement($webGreaseBuildLocation, $relativePackageUri.ToString().Replace([System.IO.Path]::AltDirectorySeparatorChar, [System.IO.Path]::DirectorySeparatorChar)) 75 | $propGroupElement.Add($newElement) 76 | } 77 | 78 | # save the project 79 | $projXDoc.Save($project) 80 | } 81 | 82 | 83 | IF ($project -is [system.string]) 84 | { 85 | CommandLineExecution $installPath $package $project 86 | } 87 | ELSE 88 | { 89 | VSExecution $installPath $package $project 90 | } 91 | -------------------------------------------------------------------------------- /packages/WebGrease.1.5.2/tools/uninstall.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | # Visual Studio execution done via NuGet Package Manager 4 | Function VSExecution($toolsPath, $project) 5 | { 6 | 7 | 8 | $project.DTE.ExecuteCommand("File.SaveAll", [system.string]::Empty) 9 | 10 | # Get the msbuild version of the project and add the import 11 | $msbuild = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1 12 | 13 | # now remove our property that points to this package path, "WebGreaseLibPath" 14 | foreach ($property in $msbuild.Properties) 15 | { 16 | if ($property.Name -eq "WebGreaseLibPath") 17 | { 18 | $propertyToRemove = $property 19 | } 20 | } 21 | 22 | if ($propertyToRemove -ne $null) 23 | { 24 | $propertyToRemove.Project.RemoveProperty($propertyToRemove) 25 | $project.Save() 26 | } 27 | 28 | $project.DTE.ExecuteCommand("File.SaveAll", [system.string]::Empty) 29 | } 30 | 31 | # Command line execution done by any external tool (For example, NuGetUpdater) 32 | # $project - parameter value is path to Project file in this case. 33 | Function CommandLineExecution($toolsPath, $project) 34 | { 35 | [Reflection.Assembly]::LoadWithPartialName("System.Xml") 36 | [Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq") 37 | 38 | 39 | 40 | $projXDoc = [System.Xml.Linq.XDocument]::Load($project) 41 | $defaultNameSpace = $projXDoc.Root.GetDefaultNamespace() 42 | $xmlReader = $projXDoc.CreateReader() 43 | $namespaceManager = new-object System.Xml.XmlNamespaceManager($xmlReader.NameTable) 44 | $namespaceManager.AddNamespace("my", $defaultNameSpace.NamespaceName) 45 | 46 | $msnRfPackageElement = [System.Xml.XPath.Extensions]::XPathSelectElement($projXDoc.Root, "//my:WebGreaseLibPath", $namespaceManager) 47 | if($msnRfPackageElement -ne $null) 48 | { 49 | $msnRfPackageElement.Remove() 50 | } 51 | 52 | # save the project 53 | $projXDoc.Save($project) 54 | } 55 | 56 | IF ($project -is [system.string]) 57 | { 58 | CommandLineExecution $toolsPath $project 59 | } 60 | ELSE 61 | { 62 | VSExecution $toolsPath $project 63 | } 64 | -------------------------------------------------------------------------------- /packages/bootstrap.3.0.0/Content/Content/bootstrap-theme.min.css: -------------------------------------------------------------------------------- 1 | .btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,0%,#e6e6e6,100%);background-image:-moz-linear-gradient(top,#fff 0,#e6e6e6 100%);background-image:linear-gradient(to bottom,#fff 0,#e6e6e6 100%);background-repeat:repeat-x;border-color:#e0e0e0;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0)}.btn-default:active,.btn-default.active{background-color:#e6e6e6;border-color:#e0e0e0}.btn-primary{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;border-color:#2d6ca2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.btn-primary:active,.btn-primary.active{background-color:#3071a9;border-color:#2d6ca2}.btn-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;border-color:#419641;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.btn-success:active,.btn-success.active{background-color:#449d44;border-color:#419641}.btn-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;border-color:#eb9316;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.btn-warning:active,.btn-warning.active{background-color:#ec971f;border-color:#eb9316}.btn-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;border-color:#c12e2a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.btn-danger:active,.btn-danger.active{background-color:#c9302c;border-color:#c12e2a}.btn-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;border-color:#2aabd2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.btn-info:active,.btn-info.active{background-color:#31b0d5;border-color:#2aabd2}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#f8f8f8));background-image:-webkit-linear-gradient(top,#fff,0%,#f8f8f8,100%);background-image:-moz-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar .navbar-nav>.active>a{background-color:#f8f8f8}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-gradient(linear,left 0,left 100%,from(#3c3c3c),to(#222));background-image:-webkit-linear-gradient(top,#3c3c3c,0%,#222,100%);background-image:-moz-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0)}.navbar-inverse .navbar-nav>.active>a{background-color:#222}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#c8e5bc));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#c8e5bc,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#b9def0));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#b9def0,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#f8efc0));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#f8efc0,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#e7c3c3));background-image:-webkit-linear-gradient(top,#f2dede,0%,#e7c3c3,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-gradient(linear,left 0,left 100%,from(#ebebeb),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#ebebeb,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3278b3));background-image:-webkit-linear-gradient(top,#428bca,0%,#3278b3,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f5f5f5),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#f5f5f5,0%,#e8e8e8,100%);background-image:-moz-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#d0e9c6));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#d0e9c6,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#c4e3f3));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#c4e3f3,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#faf2cc));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#faf2cc,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#ebcccc));background-image:-webkit-linear-gradient(top,#f2dede,0%,#ebcccc,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-gradient(linear,left 0,left 100%,from(#e8e8e8),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#e8e8e8,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)} -------------------------------------------------------------------------------- /packages/bootstrap.3.0.0/Content/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/bootstrap.3.0.0/Content/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /packages/bootstrap.3.0.0/Content/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/bootstrap.3.0.0/Content/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /packages/bootstrap.3.0.0/Content/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/bootstrap.3.0.0/Content/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /packages/bootstrap.3.0.0/bootstrap.3.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/bootstrap.3.0.0/bootstrap.3.0.0.nupkg -------------------------------------------------------------------------------- /packages/jQuery.1.10.2/Tools/common.ps1: -------------------------------------------------------------------------------- 1 | function Get-Checksum($file) { 2 | $cryptoProvider = New-Object "System.Security.Cryptography.MD5CryptoServiceProvider" 3 | 4 | $fileInfo = Get-Item $file 5 | trap { ; 6 | continue } $stream = $fileInfo.OpenRead() 7 | if ($? -eq $false) { 8 | # Couldn't open file for reading 9 | return $null 10 | } 11 | 12 | $bytes = $cryptoProvider.ComputeHash($stream) 13 | $checksum = '' 14 | foreach ($byte in $bytes) { 15 | $checksum += $byte.ToString('x2') 16 | } 17 | 18 | $stream.Close() | Out-Null 19 | 20 | return $checksum 21 | } 22 | 23 | function AddOrUpdate-Reference($scriptsFolderProjectItem, $fileNamePattern, $newFileName) { 24 | try { 25 | $referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js") 26 | } 27 | catch { 28 | # _references.js file not found 29 | return 30 | } 31 | 32 | if ($referencesFileProjectItem -eq $null) { 33 | # _references.js file not found 34 | return 35 | } 36 | 37 | $referencesFilePath = $referencesFileProjectItem.FileNames(1) 38 | $referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js" 39 | 40 | if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 0) { 41 | # File has no existing matching reference line 42 | # Add the full reference line to the beginning of the file 43 | "/// " | Add-Content $referencesTempFilePath -Encoding UTF8 44 | Get-Content $referencesFilePath | Add-Content $referencesTempFilePath 45 | } 46 | else { 47 | # Loop through file and replace old file name with new file name 48 | Get-Content $referencesFilePath | ForEach-Object { $_ -replace $fileNamePattern, $newFileName } > $referencesTempFilePath 49 | } 50 | 51 | # Copy over the new _references.js file 52 | Copy-Item $referencesTempFilePath $referencesFilePath -Force 53 | Remove-Item $referencesTempFilePath -Force 54 | } 55 | 56 | function Remove-Reference($scriptsFolderProjectItem, $fileNamePattern) { 57 | try { 58 | $referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js") 59 | } 60 | catch { 61 | # _references.js file not found 62 | return 63 | } 64 | 65 | if ($referencesFileProjectItem -eq $null) { 66 | return 67 | } 68 | 69 | $referencesFilePath = $referencesFileProjectItem.FileNames(1) 70 | $referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js" 71 | 72 | if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 1) { 73 | # Delete the line referencing the file 74 | Get-Content $referencesFilePath | ForEach-Object { if (-not ($_ -match $fileNamePattern)) { $_ } } > $referencesTempFilePath 75 | 76 | # Copy over the new _references.js file 77 | Copy-Item $referencesTempFilePath $referencesFilePath -Force 78 | Remove-Item $referencesTempFilePath -Force 79 | } 80 | } 81 | 82 | function Delete-ProjectItem($item) { 83 | $itemDeleted = $false 84 | for ($1=1; $i -le 5; $i++) { 85 | try { 86 | $item.Delete() 87 | $itemDeleted = $true 88 | break 89 | } 90 | catch { 91 | # Try again in 200ms 92 | [System.Threading.Thread]::Sleep(200) 93 | } 94 | } 95 | if ($itemDeleted -eq $false) { 96 | throw "Unable to delete project item after five attempts." 97 | } 98 | } 99 | 100 | # Extract the version number from the jquery file in the package's content\scripts folder 101 | $packageScriptsFolder = Join-Path $installPath Content\Scripts 102 | $jqueryFileName = Join-Path $packageScriptsFolder "jquery-*.js" | Get-ChildItem -Exclude "*.min.js","*-vsdoc.js" | Split-Path -Leaf 103 | $jqueryFileNameRegEx = "jquery-((?:\d+\.)?(?:\d+\.)?(?:\d+\.)?(?:\d+)).js" 104 | $jqueryFileName -match $jqueryFileNameRegEx 105 | $ver = $matches[1] 106 | 107 | $intelliSenseFileName = "jquery-$ver.intellisense.js" 108 | 109 | # Get the project item for the scripts folder 110 | try { 111 | $scriptsFolderProjectItem = $project.ProjectItems.Item("Scripts") 112 | $projectScriptsFolderPath = $scriptsFolderProjectItem.FileNames(1) 113 | } 114 | catch { 115 | # No Scripts folder 116 | Write-Host "No scripts folder found" 117 | } -------------------------------------------------------------------------------- /packages/jQuery.1.10.2/Tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | # VS 11 and above supports the new intellisense JS files 6 | $vsVersion = [System.Version]::Parse($dte.Version) 7 | $supportsJsIntelliSenseFile = $vsVersion.Major -ge 11 8 | 9 | if (-not $supportsJsIntelliSenseFile) { 10 | $displayVersion = $vsVersion.Major 11 | Write-Host "IntelliSense JS files are not supported by your version of Visual Studio: $displayVersion" 12 | exit 13 | } 14 | 15 | if ($scriptsFolderProjectItem -eq $null) { 16 | # No Scripts folder 17 | Write-Host "No Scripts folder found" 18 | exit 19 | } 20 | 21 | # Delete the vsdoc file from the project 22 | try { 23 | $vsDocProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("jquery-$ver-vsdoc.js") 24 | Delete-ProjectItem $vsDocProjectItem 25 | } 26 | catch { 27 | Write-Host "Error deleting vsdoc file: " + $_.Exception -ForegroundColor Red 28 | exit 29 | } 30 | 31 | # Copy the intellisense file to the project from the tools folder 32 | $intelliSenseFileSourcePath = Join-Path $toolsPath $intelliSenseFileName 33 | try { 34 | $scriptsFolderProjectItem.ProjectItems.AddFromFileCopy($intelliSenseFileSourcePath) 35 | } 36 | catch { 37 | # This will throw if the file already exists, so we need to catch here 38 | } 39 | 40 | # Update the _references.js file 41 | AddOrUpdate-Reference $scriptsFolderProjectItem $jqueryFileNameRegEx $jqueryFileName -------------------------------------------------------------------------------- /packages/jQuery.1.10.2/Tools/uninstall.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | # Determine the file paths 6 | $projectIntelliSenseFilePath = Join-Path $projectScriptsFolderPath $intelliSenseFileName 7 | $origIntelliSenseFilePath = Join-Path $toolsPath $intelliSenseFileName 8 | 9 | if (Test-Path $projectIntelliSenseFilePath) { 10 | if ((Get-Checksum $projectIntelliSenseFilePath) -eq (Get-Checksum $origIntelliSenseFilePath)) { 11 | # The intellisense file in the project matches the file in the tools folder, delete it 12 | 13 | if ($scriptsFolderProjectItem -eq $null) { 14 | # No Scripts folder 15 | exit 16 | } 17 | 18 | try { 19 | # Get the project item for the intellisense file 20 | $intelliSenseFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item($intelliSenseFileName) 21 | } 22 | catch { 23 | # The item wasn't found 24 | exit 25 | } 26 | 27 | # Delete the project item 28 | Delete-ProjectItem $intelliSenseFileProjectItem 29 | } 30 | else { 31 | $projectScriptsFolderLeaf = Split-Path $projectScriptsFolderPath -Leaf 32 | Write-Host "Skipping '$projectScriptsFolderLeaf\$intelliSenseFileName' because it was modified." -ForegroundColor Magenta 33 | } 34 | } 35 | else { 36 | # The intellisense file was not found in project 37 | Write-Host "The intellisense file was not found in project at path $projectIntelliSenseFilePath" 38 | } 39 | 40 | # Update the _references.js file 41 | Remove-Reference $scriptsFolderProjectItem $jqueryFileNameRegEx -------------------------------------------------------------------------------- /packages/jQuery.1.10.2/jQuery.1.10.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/jQuery.1.10.2/jQuery.1.10.2.nupkg -------------------------------------------------------------------------------- /packages/jQuery.Validation.1.11.1/jQuery.Validation.1.11.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leeenglestone/ASP.NET-Identity-Without-a-Database/49afc82d34d2b1662350479b89d0abb938ee46a0/packages/jQuery.Validation.1.11.1/jQuery.Validation.1.11.1.nupkg -------------------------------------------------------------------------------- /packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | --------------------------------------------------------------------------------