UserManager
4 |
5 |
--------------------------------------------------------------------------------
/sample/samplemvccore3/Views/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using samplemvccore3
2 | @using samplemvccore3.Models
3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
4 |
--------------------------------------------------------------------------------
/sample/samplemvccore3/Views/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "_Layout";
3 | }
4 |
--------------------------------------------------------------------------------
/sample/samplemvccore3/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Debug",
5 | "System": "Information",
6 | "Microsoft": "Information"
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/sample/samplemvccore3/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "IdentityAzureTable": {
3 | "IdentityConfiguration": {
4 | "TablePrefix": "v2",
5 | "StorageConnectionString": "UseDevelopmentStorage=true;",
6 | "LocationMode": "PrimaryOnly",
7 | "IndexTableName": "AspNetIndex",
8 | "RoleTableName": "AspNetRoles",
9 | "UserTableName": "AspNetUsers"
10 | }
11 | },
12 | "Logging": {
13 | "LogLevel": {
14 | "Default": "Warning"
15 | }
16 | },
17 | "AllowedHosts": "*"
18 | }
19 |
--------------------------------------------------------------------------------
/sample/samplemvccore3/wwwroot/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dlmelendez/identityazuretable/61147249318200729439d4af8fc84daaa82a5258/sample/samplemvccore3/wwwroot/favicon.ico
--------------------------------------------------------------------------------
/sample/samplemvccore3/wwwroot/js/site.js:
--------------------------------------------------------------------------------
1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
2 | // for details on configuring this project to bundle and minify static web assets.
3 |
4 | // Write your JavaScript code.
5 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/IdentityHostingStartup.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.AspNetCore.Hosting;
3 | using Microsoft.AspNetCore.Identity;
4 | using Microsoft.AspNetCore.Identity.UI;
5 | using Microsoft.Extensions.Configuration;
6 | using Microsoft.Extensions.DependencyInjection;
7 | using samplemvccore4.Data;
8 |
9 | [assembly: HostingStartup(typeof(samplemvccore4.Areas.Identity.IdentityHostingStartup))]
10 | namespace samplemvccore4.Areas.Identity
11 | {
12 | public class IdentityHostingStartup : IHostingStartup
13 | {
14 | public void Configure(IWebHostBuilder builder)
15 | {
16 | builder.ConfigureServices((context, services) => {
17 | });
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/AccessDenied.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model AccessDeniedModel
3 | @{
4 | ViewData["Title"] = "Access denied";
5 | }
6 |
7 |
11 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/AccessDenied.cshtml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.Mvc.RazorPages;
6 |
7 | namespace samplemvccore4.Areas.Identity.Pages.Account
8 | {
9 | public class AccessDeniedModel : PageModel
10 | {
11 | public void OnGet()
12 | {
13 |
14 | }
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/ConfirmEmail.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model ConfirmEmailModel
3 | @{
4 | ViewData["Title"] = "Confirm email";
5 | }
6 |
7 | @ViewData["Title"]
8 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/ConfirmEmailChange.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model ConfirmEmailChangeModel
3 | @{
4 | ViewData["Title"] = "Confirm email change";
5 | }
6 |
7 | @ViewData["Title"]
8 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/ForgotPassword.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model ForgotPasswordModel
3 | @{
4 | ViewData["Title"] = "Forgot your password?";
5 | }
6 |
7 | @ViewData["Title"]
8 | Enter your email.
9 |
10 |
23 |
24 | @section Scripts {
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/ForgotPasswordConfirmation.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model ForgotPasswordConfirmation
3 | @{
4 | ViewData["Title"] = "Forgot password confirmation";
5 | }
6 |
7 | @ViewData["Title"]
8 |
9 | Please check your email to reset your password.
10 |
11 |
12 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/ForgotPasswordConfirmation.cshtml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Threading.Tasks;
4 | using Microsoft.AspNetCore.Authorization;
5 | using Microsoft.AspNetCore.Mvc.RazorPages;
6 |
7 | namespace samplemvccore4.Areas.Identity.Pages.Account
8 | {
9 | [AllowAnonymous]
10 | public class ForgotPasswordConfirmation : PageModel
11 | {
12 | public void OnGet()
13 | {
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Lockout.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model LockoutModel
3 | @{
4 | ViewData["Title"] = "Locked out";
5 | }
6 |
7 |
11 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Lockout.cshtml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.Authorization;
6 | using Microsoft.AspNetCore.Mvc.RazorPages;
7 |
8 | namespace samplemvccore4.Areas.Identity.Pages.Account
9 | {
10 | [AllowAnonymous]
11 | public class LockoutModel : PageModel
12 | {
13 | public void OnGet()
14 | {
15 |
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/LoginWithRecoveryCode.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model LoginWithRecoveryCodeModel
3 | @{
4 | ViewData["Title"] = "Recovery code verification";
5 | }
6 |
7 | @ViewData["Title"]
8 |
9 |
10 | You have requested to log in with a recovery code. This login will not be remembered until you provide
11 | an authenticator app code at log in or disable 2FA and log in again.
12 |
13 |
26 |
27 | @section Scripts {
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Logout.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model LogoutModel
3 | @{
4 | ViewData["Title"] = "Log out";
5 | }
6 |
7 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Manage/Disable2fa.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model Disable2faModel
3 | @{
4 | ViewData["Title"] = "Disable two-factor authentication (2FA)";
5 | ViewData["ActivePage"] = ManageNavPages.TwoFactorAuthentication;
6 | }
7 |
8 |
9 | @ViewData["Title"]
10 |
11 |
12 |
13 | This action only disables 2FA.
14 |
15 |
16 | Disabling 2FA does not change the keys used in authenticator apps. If you wish to change the key
17 | used in an authenticator app you should reset your authenticator keys.
18 |
19 |
20 |
21 |
22 |
25 |
26 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Manage/DownloadPersonalData.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model DownloadPersonalDataModel
3 | @{
4 | ViewData["Title"] = "Download Your Data";
5 | ViewData["ActivePage"] = ManageNavPages.PersonalData;
6 | }
7 |
8 | @ViewData["Title"]
9 |
10 | @section Scripts {
11 |
12 | }
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Manage/PersonalData.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model PersonalDataModel
3 | @{
4 | ViewData["Title"] = "Personal Data";
5 | ViewData["ActivePage"] = ManageNavPages.PersonalData;
6 | }
7 |
8 | @ViewData["Title"]
9 |
10 |
11 |
12 |
Your account contains personal data that you have given us. This page allows you to download or delete that data.
13 |
14 | Deleting this data will permanently remove your account, and this cannot be recovered.
15 |
16 |
19 |
20 | Delete
21 |
22 |
23 |
24 |
25 | @section Scripts {
26 |
27 | }
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Manage/ResetAuthenticator.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model ResetAuthenticatorModel
3 | @{
4 | ViewData["Title"] = "Reset authenticator key";
5 | ViewData["ActivePage"] = ManageNavPages.TwoFactorAuthentication;
6 | }
7 |
8 |
9 | @ViewData["Title"]
10 |
11 |
12 |
13 | If you reset your authenticator key your authenticator app will not work until you reconfigure it.
14 |
15 |
16 | This process disables 2FA until you verify your authenticator app.
17 | If you do not complete your authenticator app configuration you may lose access to your account.
18 |
19 |
20 |
21 |
24 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Manage/ShowRecoveryCodes.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model ShowRecoveryCodesModel
3 | @{
4 | ViewData["Title"] = "Recovery codes";
5 | ViewData["ActivePage"] = "TwoFactorAuthentication";
6 | }
7 |
8 |
9 | @ViewData["Title"]
10 |
11 |
12 | Put these codes in a safe place.
13 |
14 |
15 | If you lose your device and don't have the recovery codes you will lose access to your account.
16 |
17 |
18 |
19 |
20 | @for (var row = 0; row < Model.RecoveryCodes.Length; row += 2)
21 | {
22 | @Model.RecoveryCodes[row]
@Model.RecoveryCodes[row + 1]
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Manage/ShowRecoveryCodes.cshtml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.Identity;
6 | using Microsoft.AspNetCore.Mvc;
7 | using Microsoft.AspNetCore.Mvc.RazorPages;
8 | using Microsoft.Extensions.Logging;
9 |
10 | namespace samplemvccore4.Areas.Identity.Pages.Account.Manage
11 | {
12 | public class ShowRecoveryCodesModel : PageModel
13 | {
14 | [TempData]
15 | public string[] RecoveryCodes { get; set; }
16 |
17 | [TempData]
18 | public string StatusMessage { get; set; }
19 |
20 | public IActionResult OnGet()
21 | {
22 | if (RecoveryCodes == null || RecoveryCodes.Length == 0)
23 | {
24 | return RedirectToPage("./TwoFactorAuthentication");
25 | }
26 |
27 | return Page();
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Manage/_Layout.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "/Areas/Identity/Pages/_Layout.cshtml";
3 | }
4 |
5 | Manage your account
6 |
7 |
8 |
Change your account settings
9 |
10 |
11 |
14 |
15 | @RenderBody()
16 |
17 |
18 |
19 |
20 | @section Scripts {
21 | @RenderSection("Scripts", required: false)
22 | }
23 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Manage/_StatusMessage.cshtml:
--------------------------------------------------------------------------------
1 | @model string
2 |
3 | @if (!String.IsNullOrEmpty(Model))
4 | {
5 | var statusMessageClass = Model.StartsWith("Error") ? "danger" : "success";
6 |
7 | ×
8 | @Model
9 |
10 | }
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/Manage/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using samplemvccore4.Areas.Identity.Pages.Account.Manage
2 | @using IdentityUser = ElCamino.AspNetCore.Identity.AzureTable.Model.IdentityUser
3 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/RegisterConfirmation.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model RegisterConfirmationModel
3 | @{
4 | ViewData["Title"] = "Register confirmation";
5 | }
6 |
7 | @ViewData["Title"]
8 | @{
9 | if (@Model.DisplayConfirmAccountLink)
10 | {
11 |
12 | This app does not currently have a real email sender registered, see these docs for how to configure a real email sender.
13 | Normally this would be emailed: Click here to confirm your account
14 |
15 | }
16 | else
17 | {
18 |
19 | Please check your email to confirm your account.
20 |
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/ResetPasswordConfirmation.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model ResetPasswordConfirmationModel
3 | @{
4 | ViewData["Title"] = "Reset password confirmation";
5 | }
6 |
7 | @ViewData["Title"]
8 |
9 | Your password has been reset. Please click here to log in .
10 |
11 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/ResetPasswordConfirmation.cshtml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.Authorization;
6 | using Microsoft.AspNetCore.Mvc.RazorPages;
7 |
8 | namespace samplemvccore4.Areas.Identity.Pages.Account
9 | {
10 | [AllowAnonymous]
11 | public class ResetPasswordConfirmationModel : PageModel
12 | {
13 | public void OnGet()
14 | {
15 |
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/_StatusMessage.cshtml:
--------------------------------------------------------------------------------
1 | @model string
2 |
3 | @if (!String.IsNullOrEmpty(Model))
4 | {
5 | var statusMessageClass = Model.StartsWith("Error") ? "danger" : "success";
6 |
7 | ×
8 | @Model
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Account/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using samplemvccore4.Areas.Identity.Pages.Account
2 | @using IdentityUser = ElCamino.AspNetCore.Identity.AzureTable.Model.IdentityUser
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Error.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model ErrorModel
3 | @{
4 | ViewData["Title"] = "Error";
5 | }
6 |
7 | Error.
8 | An error occurred while processing your request.
9 |
10 | @if (Model.ShowRequestId)
11 | {
12 |
13 | Request ID: @Model.RequestId
14 |
15 | }
16 |
17 | Development Mode
18 |
19 | Swapping to Development environment will display more detailed information about the error that occurred.
20 |
21 |
22 | Development environment should not be enabled in deployed applications , as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the ASPNETCORE_ENVIRONMENT environment variable to Development , and restarting the application.
23 |
24 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/Error.cshtml.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using Microsoft.AspNetCore.Authorization;
3 | using Microsoft.AspNetCore.Mvc;
4 | using Microsoft.AspNetCore.Mvc.RazorPages;
5 |
6 | namespace samplemvccore4.Areas.Identity.Pages
7 | {
8 | [AllowAnonymous]
9 | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
10 | public class ErrorModel : PageModel
11 | {
12 | public string RequestId { get; set; }
13 |
14 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
15 |
16 | public void OnGet()
17 | {
18 | RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNetCore.Identity
2 | @using samplemvccore4.Areas.Identity
3 | @using samplemvccore4.Areas.Identity.Pages
4 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
5 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Areas/Identity/Pages/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "/Views/Shared/_Layout.cshtml";
3 | }
4 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Controllers/HomeController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Linq;
5 | using System.Threading.Tasks;
6 | using Microsoft.AspNetCore.Mvc;
7 | using Microsoft.Extensions.Logging;
8 | using samplemvccore4.Models;
9 |
10 | namespace samplemvccore4.Controllers
11 | {
12 | public class HomeController : Controller
13 | {
14 | private readonly ILogger _logger;
15 |
16 | public HomeController(ILogger logger)
17 | {
18 | _logger = logger;
19 | }
20 |
21 | public IActionResult Index()
22 | {
23 | return View();
24 | }
25 |
26 | public IActionResult Privacy()
27 | {
28 | return View();
29 | }
30 |
31 | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
32 | public IActionResult Error()
33 | {
34 | return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Data/ApplicationDbContext.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using ElCamino.AspNetCore.Identity.AzureTable;
5 | using ElCamino.AspNetCore.Identity.AzureTable.Model;
6 |
7 | namespace samplemvccore4.Data
8 | {
9 | public class ApplicationDbContext : IdentityCloudContext
10 | {
11 | public ApplicationDbContext() : base()
12 | {
13 | }
14 |
15 | public ApplicationDbContext(IdentityConfiguration config) : base(config)
16 | {
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Models/ErrorViewModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace samplemvccore4.Models
4 | {
5 | public class ErrorViewModel
6 | {
7 | public string RequestId { get; set; }
8 |
9 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.Hosting;
6 | using Microsoft.Extensions.Configuration;
7 | using Microsoft.Extensions.Hosting;
8 | using Microsoft.Extensions.Logging;
9 |
10 | namespace samplemvccore4
11 | {
12 | public class Program
13 | {
14 | public static void Main(string[] args)
15 | {
16 | CreateHostBuilder(args).Build().Run();
17 | }
18 |
19 | public static IHostBuilder CreateHostBuilder(string[] args) =>
20 | Host.CreateDefaultBuilder(args)
21 | .ConfigureWebHostDefaults(webBuilder =>
22 | {
23 | webBuilder.UseStartup();
24 | });
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "iisSettings": {
3 | "windowsAuthentication": false,
4 | "anonymousAuthentication": true,
5 | "iisExpress": {
6 | "applicationUrl": "http://localhost:62593",
7 | "sslPort": 44335
8 | }
9 | },
10 | "profiles": {
11 | "IIS Express": {
12 | "commandName": "IISExpress",
13 | "launchBrowser": true,
14 | "environmentVariables": {
15 | "ASPNETCORE_ENVIRONMENT": "Development"
16 | }
17 | },
18 | "samplemvccore4": {
19 | "commandName": "Project",
20 | "launchBrowser": true,
21 | "applicationUrl": "https://localhost:5001;http://localhost:5000",
22 | "environmentVariables": {
23 | "ASPNETCORE_ENVIRONMENT": "Development"
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Views/Home/Index.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | ViewData["Title"] = "Home Page";
3 | }
4 |
5 |
9 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Views/Home/Privacy.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | ViewData["Title"] = "Privacy Policy";
3 | }
4 | @ViewData["Title"]
5 |
6 | Use this page to detail your site's privacy policy.
7 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Views/Shared/Error.cshtml:
--------------------------------------------------------------------------------
1 | @model ErrorViewModel
2 | @{
3 | ViewData["Title"] = "Error";
4 | }
5 |
6 | Error.
7 | An error occurred while processing your request.
8 |
9 | @if (Model.ShowRequestId)
10 | {
11 |
12 | Request ID: @Model.RequestId
13 |
14 | }
15 |
16 | Development Mode
17 |
18 | Swapping to Development environment will display more detailed information about the error that occurred.
19 |
20 |
21 | The Development environment shouldn't be enabled for deployed applications.
22 | It can result in displaying sensitive information from exceptions to end users.
23 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development
24 | and restarting the app.
25 |
26 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Views/Shared/_CookieConsentPartial.cshtml:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNetCore.Http.Features
2 |
3 | @{
4 | var consentFeature = Context.Features.Get();
5 | var showBanner = !consentFeature?.CanTrack ?? false;
6 | var cookieString = consentFeature?.CreateConsentCookie();
7 | }
8 |
9 | @if (showBanner)
10 | {
11 |
12 | Use this space to summarize your privacy and cookie use policy.
Learn More .
13 |
14 | Accept
15 |
16 |
17 |
25 | }
--------------------------------------------------------------------------------
/sample/samplemvccore4/Views/Shared/_LoginPartial.cshtml:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNetCore.Identity
2 | @inject SignInManager SignInManager
3 | @inject UserManager UserManager
4 |
5 |
27 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Views/Shared/_ValidationScriptsPartial.cshtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Views/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using samplemvccore4
2 | @using samplemvccore4.Models
3 | @using IdentityUser = ElCamino.AspNetCore.Identity.AzureTable.Model.IdentityUser
4 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
5 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/Views/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "_Layout";
3 | }
4 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Debug",
5 | "System": "Information",
6 | "Microsoft": "Information"
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "IdentityAzureTable": {
3 | "IdentityConfiguration": {
4 | "TablePrefix": "v3",
5 | "StorageConnectionString": "UseDevelopmentStorage=true;",
6 | "LocationMode": "PrimaryOnly",
7 | "IndexTableName": "AspNetIndex",
8 | "RoleTableName": "AspNetRoles",
9 | "UserTableName": "AspNetUsers"
10 | }
11 | },
12 | "Logging": {
13 | "LogLevel": {
14 | "Default": "Information",
15 | "Microsoft": "Warning",
16 | "Microsoft.Hosting.Lifetime": "Information"
17 | }
18 | },
19 | "AllowedHosts": "*"
20 | }
21 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/libman.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0",
3 | "defaultProvider": "cdnjs",
4 | "libraries": [
5 | {
6 | "provider": "jsdelivr",
7 | "library": "bootstrap@4.4.1",
8 | "destination": "wwwroot/lib/bootstrap/"
9 | },
10 | {
11 | "library": "jquery@3.4.1",
12 | "destination": "wwwroot/lib/jquery/dist/"
13 | },
14 | {
15 | "library": "jquery-validation-unobtrusive@3.2.11",
16 | "destination": "wwwroot/lib/jquery-validation-unobtrusive/"
17 | }
18 | ,
19 | {
20 | "library": "jquery-validate@1.19.1",
21 | "destination": "wwwroot/lib/jquery-validation/dist"
22 | }
23 | ]
24 | }
--------------------------------------------------------------------------------
/sample/samplemvccore4/samplemvccore4.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.1
5 | aspnet-samplemvccore4-20314330-701E-46B0-A493-E5980C58E016
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dlmelendez/identityazuretable/61147249318200729439d4af8fc84daaa82a5258/sample/samplemvccore4/wwwroot/favicon.ico
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/js/site.js:
--------------------------------------------------------------------------------
1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
2 | // for details on configuring this project to bundle and minify static web assets.
3 |
4 | // Write your JavaScript code.
5 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/js/src/index.js:
--------------------------------------------------------------------------------
1 | import Alert from './alert'
2 | import Button from './button'
3 | import Carousel from './carousel'
4 | import Collapse from './collapse'
5 | import Dropdown from './dropdown'
6 | import Modal from './modal'
7 | import Popover from './popover'
8 | import Scrollspy from './scrollspy'
9 | import Tab from './tab'
10 | import Toast from './toast'
11 | import Tooltip from './tooltip'
12 | import Util from './util'
13 |
14 | /**
15 | * --------------------------------------------------------------------------
16 | * Bootstrap (v4.4.1): index.js
17 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
18 | * --------------------------------------------------------------------------
19 | */
20 |
21 | export {
22 | Util,
23 | Alert,
24 | Button,
25 | Carousel,
26 | Collapse,
27 | Dropdown,
28 | Modal,
29 | Popover,
30 | Scrollspy,
31 | Tab,
32 | Toast,
33 | Tooltip
34 | }
35 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/js/src/index.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Minified by jsDelivr using Terser v3.14.1.
3 | * Original file: /npm/bootstrap@4.4.1/js/src/index.js
4 | *
5 | * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
6 | */
7 | import Alert from"./alert";import Button from"./button";import Carousel from"./carousel";import Collapse from"./collapse";import Dropdown from"./dropdown";import Modal from"./modal";import Popover from"./popover";import Scrollspy from"./scrollspy";import Tab from"./tab";import Toast from"./toast";import Tooltip from"./tooltip";import Util from"./util";export{Util,Alert,Button,Carousel,Collapse,Dropdown,Modal,Popover,Scrollspy,Tab,Toast,Tooltip};
8 | //# sourceMappingURL=/sm/a1d419f888349ede3e4c47398419e23cc9bc4b73344f14d81c36047212bb1668.map
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/_jumbotron.scss:
--------------------------------------------------------------------------------
1 | .jumbotron {
2 | padding: $jumbotron-padding ($jumbotron-padding / 2);
3 | margin-bottom: $jumbotron-padding;
4 | color: $jumbotron-color;
5 | background-color: $jumbotron-bg;
6 | @include border-radius($border-radius-lg);
7 |
8 | @include media-breakpoint-up(sm) {
9 | padding: ($jumbotron-padding * 2) $jumbotron-padding;
10 | }
11 | }
12 |
13 | .jumbotron-fluid {
14 | padding-right: 0;
15 | padding-left: 0;
16 | @include border-radius(0);
17 | }
18 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/_media.scss:
--------------------------------------------------------------------------------
1 | .media {
2 | display: flex;
3 | align-items: flex-start;
4 | }
5 |
6 | .media-body {
7 | flex: 1;
8 | }
9 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/_root.scss:
--------------------------------------------------------------------------------
1 | // Do not forget to update getting-started/theming.md!
2 | :root {
3 | // Custom variable values only support SassScript inside `#{}`.
4 | @each $color, $value in $colors {
5 | --#{$color}: #{$value};
6 | }
7 |
8 | @each $color, $value in $theme-colors {
9 | --#{$color}: #{$value};
10 | }
11 |
12 | @each $bp, $value in $grid-breakpoints {
13 | --breakpoint-#{$bp}: #{$value};
14 | }
15 |
16 | // Use `inspect` for lists so that quoted items keep the quotes.
17 | // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
18 | --font-family-sans-serif: #{inspect($font-family-sans-serif)};
19 | --font-family-monospace: #{inspect($font-family-monospace)};
20 | }
21 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/_transitions.scss:
--------------------------------------------------------------------------------
1 | .fade {
2 | @include transition($transition-fade);
3 |
4 | &:not(.show) {
5 | opacity: 0;
6 | }
7 | }
8 |
9 | .collapse {
10 | &:not(.show) {
11 | display: none;
12 | }
13 | }
14 |
15 | .collapsing {
16 | position: relative;
17 | height: 0;
18 | overflow: hidden;
19 | @include transition($transition-collapse);
20 | }
21 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/_utilities.scss:
--------------------------------------------------------------------------------
1 | @import "utilities/align";
2 | @import "utilities/background";
3 | @import "utilities/borders";
4 | @import "utilities/clearfix";
5 | @import "utilities/display";
6 | @import "utilities/embed";
7 | @import "utilities/flex";
8 | @import "utilities/float";
9 | @import "utilities/overflow";
10 | @import "utilities/position";
11 | @import "utilities/screenreaders";
12 | @import "utilities/shadows";
13 | @import "utilities/sizing";
14 | @import "utilities/stretched-link";
15 | @import "utilities/spacing";
16 | @import "utilities/text";
17 | @import "utilities/visibility";
18 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/bootstrap-grid.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Grid v4.4.1 (https://getbootstrap.com/)
3 | * Copyright 2011-2019 The Bootstrap Authors
4 | * Copyright 2011-2019 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 | */
7 |
8 | html {
9 | box-sizing: border-box;
10 | -ms-overflow-style: scrollbar;
11 | }
12 |
13 | *,
14 | *::before,
15 | *::after {
16 | box-sizing: inherit;
17 | }
18 |
19 | @import "functions";
20 | @import "variables";
21 |
22 | @import "mixins/breakpoints";
23 | @import "mixins/grid-framework";
24 | @import "mixins/grid";
25 |
26 | @import "grid";
27 | @import "utilities/display";
28 | @import "utilities/flex";
29 | @import "utilities/spacing";
30 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/bootstrap-reboot.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)
3 | * Copyright 2011-2019 The Bootstrap Authors
4 | * Copyright 2011-2019 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7 | */
8 |
9 | @import "functions";
10 | @import "variables";
11 | @import "mixins";
12 | @import "reboot";
13 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_alert.scss:
--------------------------------------------------------------------------------
1 | @mixin alert-variant($background, $border, $color) {
2 | color: $color;
3 | @include gradient-bg($background);
4 | border-color: $border;
5 |
6 | hr {
7 | border-top-color: darken($border, 5%);
8 | }
9 |
10 | .alert-link {
11 | color: darken($color, 10%);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_background-variant.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | // Contextual backgrounds
4 |
5 | @mixin bg-variant($parent, $color, $ignore-warning: false) {
6 | #{$parent} {
7 | background-color: $color !important;
8 | }
9 | a#{$parent},
10 | button#{$parent} {
11 | @include hover-focus() {
12 | background-color: darken($color, 10%) !important;
13 | }
14 | }
15 | @include deprecate("The `bg-variant` mixin", "v4.4.0", "v5", $ignore-warning);
16 | }
17 |
18 | @mixin bg-gradient-variant($parent, $color) {
19 | #{$parent} {
20 | background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_badge.scss:
--------------------------------------------------------------------------------
1 | @mixin badge-variant($bg) {
2 | color: color-yiq($bg);
3 | background-color: $bg;
4 |
5 | @at-root a#{&} {
6 | @include hover-focus() {
7 | color: color-yiq($bg);
8 | background-color: darken($bg, 10%);
9 | }
10 |
11 | &:focus,
12 | &.focus {
13 | outline: 0;
14 | box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_box-shadow.scss:
--------------------------------------------------------------------------------
1 | @mixin box-shadow($shadow...) {
2 | @if $enable-shadows {
3 | $result: ();
4 |
5 | @if (length($shadow) == 1) {
6 | // We can pass `@include box-shadow(none);`
7 | $result: $shadow;
8 | } @else {
9 | // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`
10 | @for $i from 1 through length($shadow) {
11 | @if nth($shadow, $i) != "none" {
12 | $result: append($result, nth($shadow, $i), "comma");
13 | }
14 | }
15 | }
16 | @if (length($result) > 0) {
17 | box-shadow: $result;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_clearfix.scss:
--------------------------------------------------------------------------------
1 | @mixin clearfix() {
2 | &::after {
3 | display: block;
4 | clear: both;
5 | content: "";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_deprecate.scss:
--------------------------------------------------------------------------------
1 | // Deprecate mixin
2 | //
3 | // This mixin can be used to deprecate mixins or functions.
4 | // `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to
5 | // some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)
6 | @mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {
7 | @if ($enable-deprecation-messages != false and $ignore-warning != true) {
8 | @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.";
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_float.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | @mixin float-left() {
4 | float: left !important;
5 | @include deprecate("The `float-left` mixin", "v4.3.0", "v5");
6 | }
7 | @mixin float-right() {
8 | float: right !important;
9 | @include deprecate("The `float-right` mixin", "v4.3.0", "v5");
10 | }
11 | @mixin float-none() {
12 | float: none !important;
13 | @include deprecate("The `float-none` mixin", "v4.3.0", "v5");
14 | }
15 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_hover.scss:
--------------------------------------------------------------------------------
1 | // Hover mixin and `$enable-hover-media-query` are deprecated.
2 | //
3 | // Originally added during our alphas and maintained during betas, this mixin was
4 | // designed to prevent `:hover` stickiness on iOS-an issue where hover styles
5 | // would persist after initial touch.
6 | //
7 | // For backward compatibility, we've kept these mixins and updated them to
8 | // always return their regular pseudo-classes instead of a shimmed media query.
9 | //
10 | // Issue: https://github.com/twbs/bootstrap/issues/25195
11 |
12 | @mixin hover() {
13 | &:hover { @content; }
14 | }
15 |
16 | @mixin hover-focus() {
17 | &:hover,
18 | &:focus {
19 | @content;
20 | }
21 | }
22 |
23 | @mixin plain-hover-focus() {
24 | &,
25 | &:hover,
26 | &:focus {
27 | @content;
28 | }
29 | }
30 |
31 | @mixin hover-focus-active() {
32 | &:hover,
33 | &:focus,
34 | &:active {
35 | @content;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_list-group.scss:
--------------------------------------------------------------------------------
1 | // List Groups
2 |
3 | @mixin list-group-item-variant($state, $background, $color) {
4 | .list-group-item-#{$state} {
5 | color: $color;
6 | background-color: $background;
7 |
8 | &.list-group-item-action {
9 | @include hover-focus() {
10 | color: $color;
11 | background-color: darken($background, 5%);
12 | }
13 |
14 | &.active {
15 | color: $white;
16 | background-color: $color;
17 | border-color: $color;
18 | }
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_lists.scss:
--------------------------------------------------------------------------------
1 | // Lists
2 |
3 | // Unstyled keeps list items block level, just removes default browser padding and list-style
4 | @mixin list-unstyled() {
5 | padding-left: 0;
6 | list-style: none;
7 | }
8 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_nav-divider.scss:
--------------------------------------------------------------------------------
1 | // Horizontal dividers
2 | //
3 | // Dividers (basically an hr) within dropdowns and nav lists
4 |
5 | @mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y, $ignore-warning: false) {
6 | height: 0;
7 | margin: $margin-y 0;
8 | overflow: hidden;
9 | border-top: 1px solid $color;
10 | @include deprecate("The `nav-divider()` mixin", "v4.4.0", "v5", $ignore-warning);
11 | }
12 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_pagination.scss:
--------------------------------------------------------------------------------
1 | // Pagination
2 |
3 | @mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
4 | .page-link {
5 | padding: $padding-y $padding-x;
6 | @include font-size($font-size);
7 | line-height: $line-height;
8 | }
9 |
10 | .page-item {
11 | &:first-child {
12 | .page-link {
13 | @include border-left-radius($border-radius);
14 | }
15 | }
16 | &:last-child {
17 | .page-link {
18 | @include border-right-radius($border-radius);
19 | }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_reset-text.scss:
--------------------------------------------------------------------------------
1 | @mixin reset-text() {
2 | font-family: $font-family-base;
3 | // We deliberately do NOT reset font-size or word-wrap.
4 | font-style: normal;
5 | font-weight: $font-weight-normal;
6 | line-height: $line-height-base;
7 | text-align: left; // Fallback for where `start` is not supported
8 | text-align: start;
9 | text-decoration: none;
10 | text-shadow: none;
11 | text-transform: none;
12 | letter-spacing: normal;
13 | word-break: normal;
14 | word-spacing: normal;
15 | white-space: normal;
16 | line-break: auto;
17 | }
18 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_resize.scss:
--------------------------------------------------------------------------------
1 | // Resize anything
2 |
3 | @mixin resizable($direction) {
4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
5 | resize: $direction; // Options: horizontal, vertical, both
6 | }
7 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_screen-reader.scss:
--------------------------------------------------------------------------------
1 | // Only display content to screen readers
2 | //
3 | // See: https://a11yproject.com/posts/how-to-hide-content/
4 | // See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
5 |
6 | @mixin sr-only() {
7 | position: absolute;
8 | width: 1px;
9 | height: 1px;
10 | padding: 0;
11 | margin: -1px; // Fix for https://github.com/twbs/bootstrap/issues/25686
12 | overflow: hidden;
13 | clip: rect(0, 0, 0, 0);
14 | white-space: nowrap;
15 | border: 0;
16 | }
17 |
18 | // Use in conjunction with .sr-only to only display content when it's focused.
19 | //
20 | // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
21 | //
22 | // Credit: HTML5 Boilerplate
23 |
24 | @mixin sr-only-focusable() {
25 | &:active,
26 | &:focus {
27 | position: static;
28 | width: auto;
29 | height: auto;
30 | overflow: visible;
31 | clip: auto;
32 | white-space: normal;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_size.scss:
--------------------------------------------------------------------------------
1 | // Sizing shortcuts
2 |
3 | @mixin size($width, $height: $width) {
4 | width: $width;
5 | height: $height;
6 | @include deprecate("`size()`", "v4.3.0", "v5");
7 | }
8 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_table-row.scss:
--------------------------------------------------------------------------------
1 | // Tables
2 |
3 | @mixin table-row-variant($state, $background, $border: null) {
4 | // Exact selectors below required to override `.table-striped` and prevent
5 | // inheritance to nested tables.
6 | .table-#{$state} {
7 | &,
8 | > th,
9 | > td {
10 | background-color: $background;
11 | }
12 |
13 | @if $border != null {
14 | th,
15 | td,
16 | thead th,
17 | tbody + tbody {
18 | border-color: $border;
19 | }
20 | }
21 | }
22 |
23 | // Hover states for `.table-hover`
24 | // Note: this is not available for cells or rows within `thead` or `tfoot`.
25 | .table-hover {
26 | $hover-background: darken($background, 5%);
27 |
28 | .table-#{$state} {
29 | @include hover() {
30 | background-color: $hover-background;
31 |
32 | > td,
33 | > th {
34 | background-color: $hover-background;
35 | }
36 | }
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_text-emphasis.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | // Typography
4 |
5 | @mixin text-emphasis-variant($parent, $color, $ignore-warning: false) {
6 | #{$parent} {
7 | color: $color !important;
8 | }
9 | @if $emphasized-link-hover-darken-percentage != 0 {
10 | a#{$parent} {
11 | @include hover-focus() {
12 | color: darken($color, $emphasized-link-hover-darken-percentage) !important;
13 | }
14 | }
15 | }
16 | @include deprecate("`text-emphasis-variant()`", "v4.4.0", "v5", $ignore-warning);
17 | }
18 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_text-hide.scss:
--------------------------------------------------------------------------------
1 | // CSS image replacement
2 | @mixin text-hide($ignore-warning: false) {
3 | // stylelint-disable-next-line font-family-no-missing-generic-family-keyword
4 | font: 0/0 a;
5 | color: transparent;
6 | text-shadow: none;
7 | background-color: transparent;
8 | border: 0;
9 |
10 | @include deprecate("`text-hide()`", "v4.1.0", "v5", $ignore-warning);
11 | }
12 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_text-truncate.scss:
--------------------------------------------------------------------------------
1 | // Text truncate
2 | // Requires inline-block or block for proper styling
3 |
4 | @mixin text-truncate() {
5 | overflow: hidden;
6 | text-overflow: ellipsis;
7 | white-space: nowrap;
8 | }
9 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_transition.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable property-blacklist
2 | @mixin transition($transition...) {
3 | @if $enable-transitions {
4 | @if length($transition) == 0 {
5 | transition: $transition-base;
6 | } @else {
7 | transition: $transition;
8 | }
9 | }
10 |
11 | @if $enable-prefers-reduced-motion-media-query {
12 | @media (prefers-reduced-motion: reduce) {
13 | transition: none;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/mixins/_visibility.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | // Visibility
4 |
5 | @mixin invisible($visibility) {
6 | visibility: $visibility !important;
7 | @include deprecate("`invisible()`", "v4.3.0", "v5");
8 | }
9 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_align.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | .align-baseline { vertical-align: baseline !important; } // Browser default
4 | .align-top { vertical-align: top !important; }
5 | .align-middle { vertical-align: middle !important; }
6 | .align-bottom { vertical-align: bottom !important; }
7 | .align-text-bottom { vertical-align: text-bottom !important; }
8 | .align-text-top { vertical-align: text-top !important; }
9 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_background.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | @each $color, $value in $theme-colors {
4 | @include bg-variant(".bg-#{$color}", $value, true);
5 | }
6 |
7 | @if $enable-gradients {
8 | @each $color, $value in $theme-colors {
9 | @include bg-gradient-variant(".bg-gradient-#{$color}", $value);
10 | }
11 | }
12 |
13 | .bg-white {
14 | background-color: $white !important;
15 | }
16 |
17 | .bg-transparent {
18 | background-color: transparent !important;
19 | }
20 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_clearfix.scss:
--------------------------------------------------------------------------------
1 | .clearfix {
2 | @include clearfix();
3 | }
4 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_display.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | //
4 | // Utilities for common `display` values
5 | //
6 |
7 | @each $breakpoint in map-keys($grid-breakpoints) {
8 | @include media-breakpoint-up($breakpoint) {
9 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
10 |
11 | @each $value in $displays {
12 | .d#{$infix}-#{$value} { display: $value !important; }
13 | }
14 | }
15 | }
16 |
17 |
18 | //
19 | // Utilities for toggling `display` in print
20 | //
21 |
22 | @media print {
23 | @each $value in $displays {
24 | .d-print-#{$value} { display: $value !important; }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_embed.scss:
--------------------------------------------------------------------------------
1 | // Credit: Nicolas Gallagher and SUIT CSS.
2 |
3 | .embed-responsive {
4 | position: relative;
5 | display: block;
6 | width: 100%;
7 | padding: 0;
8 | overflow: hidden;
9 |
10 | &::before {
11 | display: block;
12 | content: "";
13 | }
14 |
15 | .embed-responsive-item,
16 | iframe,
17 | embed,
18 | object,
19 | video {
20 | position: absolute;
21 | top: 0;
22 | bottom: 0;
23 | left: 0;
24 | width: 100%;
25 | height: 100%;
26 | border: 0;
27 | }
28 | }
29 |
30 | @each $embed-responsive-aspect-ratio in $embed-responsive-aspect-ratios {
31 | $embed-responsive-aspect-ratio-x: nth($embed-responsive-aspect-ratio, 1);
32 | $embed-responsive-aspect-ratio-y: nth($embed-responsive-aspect-ratio, 2);
33 |
34 | .embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} {
35 | &::before {
36 | padding-top: percentage($embed-responsive-aspect-ratio-y / $embed-responsive-aspect-ratio-x);
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_float.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | @each $breakpoint in map-keys($grid-breakpoints) {
4 | @include media-breakpoint-up($breakpoint) {
5 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
6 |
7 | .float#{$infix}-left { float: left !important; }
8 | .float#{$infix}-right { float: right !important; }
9 | .float#{$infix}-none { float: none !important; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_overflow.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | @each $value in $overflows {
4 | .overflow-#{$value} { overflow: $value !important; }
5 | }
6 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_position.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | // Common values
4 | @each $position in $positions {
5 | .position-#{$position} { position: $position !important; }
6 | }
7 |
8 | // Shorthand
9 |
10 | .fixed-top {
11 | position: fixed;
12 | top: 0;
13 | right: 0;
14 | left: 0;
15 | z-index: $zindex-fixed;
16 | }
17 |
18 | .fixed-bottom {
19 | position: fixed;
20 | right: 0;
21 | bottom: 0;
22 | left: 0;
23 | z-index: $zindex-fixed;
24 | }
25 |
26 | .sticky-top {
27 | @supports (position: sticky) {
28 | position: sticky;
29 | top: 0;
30 | z-index: $zindex-sticky;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_screenreaders.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Screenreaders
3 | //
4 |
5 | .sr-only {
6 | @include sr-only();
7 | }
8 |
9 | .sr-only-focusable {
10 | @include sr-only-focusable();
11 | }
12 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_shadows.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | .shadow-sm { box-shadow: $box-shadow-sm !important; }
4 | .shadow { box-shadow: $box-shadow !important; }
5 | .shadow-lg { box-shadow: $box-shadow-lg !important; }
6 | .shadow-none { box-shadow: none !important; }
7 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_sizing.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | // Width and height
4 |
5 | @each $prop, $abbrev in (width: w, height: h) {
6 | @each $size, $length in $sizes {
7 | .#{$abbrev}-#{$size} { #{$prop}: $length !important; }
8 | }
9 | }
10 |
11 | .mw-100 { max-width: 100% !important; }
12 | .mh-100 { max-height: 100% !important; }
13 |
14 | // Viewport additional helpers
15 |
16 | .min-vw-100 { min-width: 100vw !important; }
17 | .min-vh-100 { min-height: 100vh !important; }
18 |
19 | .vw-100 { width: 100vw !important; }
20 | .vh-100 { height: 100vh !important; }
21 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_stretched-link.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Stretched link
3 | //
4 |
5 | .stretched-link {
6 | &::after {
7 | position: absolute;
8 | top: 0;
9 | right: 0;
10 | bottom: 0;
11 | left: 0;
12 | z-index: 1;
13 | // Just in case `pointer-events: none` is set on a parent
14 | pointer-events: auto;
15 | content: "";
16 | // IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color
17 | background-color: rgba(0, 0, 0, 0);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/bootstrap/scss/utilities/_visibility.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | //
4 | // Visibility utilities
5 | //
6 |
7 | .visible {
8 | visibility: visible !important;
9 | }
10 |
11 | .invisible {
12 | visibility: hidden !important;
13 | }
14 |
--------------------------------------------------------------------------------
/sample/samplemvccore4/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) .NET Foundation. All rights reserved.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 | these files except in compliance with the License. You may obtain a copy of the
5 | License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software distributed
10 | under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
11 | CONDITIONS OF ANY KIND, either express or implied. See the License for the
12 | specific language governing permissions and limitations under the License.
13 |
--------------------------------------------------------------------------------
/src/ElCamino.AspNetCore.Identity.AzureTable.Model/IGenerateKeys.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 |
3 | namespace ElCamino.AspNetCore.Identity.AzureTable.Model
4 | {
5 | ///
6 | /// Generates keys suitable for table storage
7 | ///
8 | public interface IGenerateKeys
9 | {
10 | ///
11 | /// Accept the keyhelper to generate keys for an entity
12 | ///
13 | ///
14 | void GenerateKeys(IKeyHelper keyHelper);
15 |
16 | ///
17 | /// Returns the rowkey for the entity without setting it
18 | ///
19 | ///
20 | ///
21 | string PeekRowKey(IKeyHelper keyHelper);
22 |
23 | ///
24 | /// Key Version for the entity
25 | ///
26 | double KeyVersion { get; set; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/ElCamino.AspNetCore.Identity.AzureTable.Model/IdentityConfiguration.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 |
3 |
4 | namespace ElCamino.AspNetCore.Identity.AzureTable.Model
5 | {
6 | ///
7 | /// Table Storage Configuration
8 | ///
9 | public class IdentityConfiguration
10 | {
11 | ///
12 | /// Optional field, prefixes all given table names
13 | ///
14 | public string? TablePrefix { get; set; }
15 |
16 | ///
17 | /// Optional, default value is AspNetIndex
18 | ///
19 | public string? IndexTableName { get; set; }
20 |
21 | ///
22 | /// Optional, default value is AspNetUsers
23 | ///
24 | public string? UserTableName { get; set; }
25 |
26 | ///
27 | /// Optional, default value is AspNetRoles
28 | ///
29 | public string? RoleTableName { get; set; }
30 |
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/ElCamino.AspNetCore.Identity.AzureTable.Model/README.md:
--------------------------------------------------------------------------------
1 | ElCamino.AspNetCore.Identity.AzureTable.Model
2 | ==================
3 |
4 | This project provides the ASP.NET Identity Core models for the ElCamino.AspNetCore.Identity.AzureTable package that uses Azure Table storage instead of the Entity Framework / MSSQL data provider.
5 |
6 | [](https://dev.azure.com/elcamino/Azure%20OpenSource/_build/latest?definitionId=18&branchName=master)
7 | [](https://www.nuget.org/packages/ElCamino.AspNetCore.Identity.AzureTable.Model/)
8 |
9 | Project site at https://elcamino.cloud/projects/docs/identityazuretable/.
10 |
--------------------------------------------------------------------------------
/src/ElCamino.AspNetCore.Identity.AzureTable.Model/projectNugetPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dlmelendez/identityazuretable/61147249318200729439d4af8fc84daaa82a5258/src/ElCamino.AspNetCore.Identity.AzureTable.Model/projectNugetPic.png
--------------------------------------------------------------------------------
/src/ElCamino.AspNetCore.Identity.AzureTable/projectNugetPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dlmelendez/identityazuretable/61147249318200729439d4af8fc84daaa82a5258/src/ElCamino.AspNetCore.Identity.AzureTable/projectNugetPic.png
--------------------------------------------------------------------------------
/src/ElCamino.Azure.Data.Tables/README.md:
--------------------------------------------------------------------------------
1 | ElCamino.Azure.Data.Tables
2 | ==================
3 |
4 | Azure Table Storage odata query building and operators from the older Azure Storage SDKs and some other async, mapping, and batch helpers and/or extensions.
5 |
6 | [](https://dev.azure.com/elcamino/Azure%20OpenSource/_build/latest?definitionId=4&branchName=master)
7 | [](https://www.nuget.org/packages/ElCamino.Azure.Data.Tables/)
8 |
9 | Project site at https://dlmelendez.github.io/identityazuretable/.
10 |
--------------------------------------------------------------------------------
/src/ElCamino.Azure.Data.Tables/projectNugetPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dlmelendez/identityazuretable/61147249318200729439d4af8fc84daaa82a5258/src/ElCamino.Azure.Data.Tables/projectNugetPic.png
--------------------------------------------------------------------------------
/src/ElCamino.Identity.AzureTable.DataUtility/IMigration.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 |
3 | using System;
4 | using System.Collections.Generic;
5 | using Azure.Data.Tables;
6 | using ElCamino.AspNetCore.Identity.AzureTable;
7 |
8 | namespace ElCamino.Identity.AzureTable.DataUtility
9 | {
10 | public interface IMigration
11 | {
12 | TableQuery GetSourceTableQuery();
13 |
14 | bool UserWhereFilter(TableEntity d);
15 |
16 | void ProcessMigrate(IdentityCloudContext targetContext,
17 | IdentityCloudContext sourceContext,
18 | IList sourceUserResults,
19 | int maxDegreesParallel,
20 | Action? updateComplete = null,
21 | Action? updateError = null);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/ElCamino.Identity.AzureTable.DataUtility/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyConfiguration("")]
8 | [assembly: AssemblyCompany("")]
9 | [assembly: AssemblyProduct("ElCamino.Identity.AzureTable.DataUtility")]
10 | [assembly: AssemblyTrademark("")]
11 |
12 | // Setting ComVisible to false makes the types in this assembly not visible
13 | // to COM components. If you need to access a type in this assembly from
14 | // COM, set the ComVisible attribute to true on that type.
15 | [assembly: ComVisible(false)]
16 |
17 | // The following GUID is for the ID of the typelib if this project is exposed to COM
18 | [assembly: Guid("56bb5104-e5f7-49bd-a5e9-25b818197f28")]
19 |
--------------------------------------------------------------------------------
/src/ElCamino.Identity.AzureTable.DataUtility/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "iisSettings": {
3 | "windowsAuthentication": false,
4 | "anonymousAuthentication": true,
5 | "iisExpress": {
6 | "applicationUrl": "http://localhost:1878/",
7 | "sslPort": 0
8 | }
9 | },
10 | "profiles": {
11 | "ElCamino.Identity.AzureTable.DataUtility": {
12 | "commandName": "Project",
13 | "commandLineArgs": "/migrate:users"
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/ElCamino.Identity.AzureTable.DataUtility/TableEntityExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace Azure.Data.Tables
2 | {
3 | public static class TableEntityExtensions
4 | {
5 | public static void ResetKeys(this TableEntity entity, string partitionKey, string rowKey, ETag eTag = default)
6 | {
7 | if (eTag == default)
8 | {
9 | eTag = ETag.All;
10 | }
11 | entity.PartitionKey = partitionKey;
12 | entity.RowKey = rowKey;
13 | entity.ETag = eTag;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/ElCamino.Identity.AzureTable.DataUtility/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "source": {
3 | "IdentityConfiguration": {
4 | "TablePrefix": "src",
5 | "StorageConnectionString": "UseDevelopmentStorage=true;",
6 | "LocationMode": "PrimaryOnly",
7 | "UserTableName": "",
8 | "IndexTableName": "",
9 | "RoleTableName": ""
10 | }
11 | },
12 | "target": {
13 | "IdentityConfiguration": {
14 | "TablePrefix": "tgt",
15 | "StorageConnectionString": "UseDevelopmentStorage=true;",
16 | "LocationMode": "PrimaryOnly",
17 | "UserTableName": "",
18 | "IndexTableName": "",
19 | "RoleTableName": ""
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/.template.config/template.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/template",
3 | "author": "David Melendez",
4 | "classifications": [ "Web", "MVC" ],
5 | "name": "ASP.NET Core MVC Web App/Identity Azure Tables ",
6 | "identity": "ElCamino.AspNetCore.Identity.AzureTable.Web.Mvc.Template",
7 | "shortName": "mvc-id-azure-tables",
8 | "tags": {
9 | "language": "C#",
10 | "type": "project"
11 | },
12 | "sourceName": "samplemvccore",
13 | "preferNameDirectory": false
14 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Areas/Identity/Pages/Account/Manage/ShowRecoveryCodes.cshtml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.Identity;
6 | using Microsoft.AspNetCore.Mvc;
7 | using Microsoft.AspNetCore.Mvc.RazorPages;
8 | using Microsoft.Extensions.Logging;
9 |
10 | namespace samplemvccore5.Areas.Identity.Pages.Account.Manage
11 | {
12 | public class ShowRecoveryCodesModel : PageModel
13 | {
14 | [TempData]
15 | public string[] RecoveryCodes { get; set; }
16 |
17 | [TempData]
18 | public string StatusMessage { get; set; }
19 |
20 | public IActionResult OnGet()
21 | {
22 | if (RecoveryCodes == null || RecoveryCodes.Length == 0)
23 | {
24 | return RedirectToPage("./TwoFactorAuthentication");
25 | }
26 |
27 | return Page();
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Areas/Identity/Pages/Account/Manage/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using samplemvccore.Areas.Identity.Pages.Account.Manage
2 | @using IdentityUser = ElCamino.AspNetCore.Identity.AzureTable.Model.IdentityUser;
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Areas/Identity/Pages/Account/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using samplemvccore.Areas.Identity.Pages.Account
2 | @using IdentityUser = ElCamino.AspNetCore.Identity.AzureTable.Model.IdentityUser;
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Areas/Identity/Pages/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNetCore.Identity
2 | @using samplemvccore.Areas.Identity
3 | @using samplemvccore.Areas.Identity.Pages
4 | @using IdentityUser = ElCamino.AspNetCore.Identity.AzureTable.Model.IdentityUser;
5 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
6 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Controllers/HomeController.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc;
2 | using samplemvccore.Models;
3 | using System.Diagnostics;
4 |
5 | namespace samplemvccore.Controllers
6 | {
7 | public class HomeController : Controller
8 | {
9 | private readonly ILogger _logger;
10 |
11 | public HomeController(ILogger logger)
12 | {
13 | _logger = logger;
14 | }
15 |
16 | public IActionResult Index()
17 | {
18 | return View();
19 | }
20 |
21 | public IActionResult Privacy()
22 | {
23 | return View();
24 | }
25 |
26 | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
27 | public IActionResult Error()
28 | {
29 | return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Data/ApplicationDbContext.cs:
--------------------------------------------------------------------------------
1 | using ElCamino.AspNetCore.Identity.AzureTable;
2 | using ElCamino.AspNetCore.Identity.AzureTable.Model;
3 |
4 | namespace samplemvccore.Data
5 | {
6 | public class ApplicationDbContext : IdentityCloudContext
7 | {
8 | public ApplicationDbContext(IdentityConfiguration config) : base(config)
9 | {
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Models/ErrorViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace samplemvccore.Models
2 | {
3 | public class ErrorViewModel
4 | {
5 | public string? RequestId { get; set; }
6 |
7 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
8 | }
9 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "iisSettings": {
3 | "windowsAuthentication": false,
4 | "anonymousAuthentication": true,
5 | "iisExpress": {
6 | "applicationUrl": "http://localhost:28092",
7 | "sslPort": 44341
8 | }
9 | },
10 | "profiles": {
11 | "samplemvccore": {
12 | "commandName": "Project",
13 | "dotnetRunMessages": true,
14 | "launchBrowser": true,
15 | "applicationUrl": "https://localhost:7125;http://localhost:5125",
16 | "environmentVariables": {
17 | "ASPNETCORE_ENVIRONMENT": "Development"
18 | }
19 | },
20 | "IIS Express": {
21 | "commandName": "IISExpress",
22 | "launchBrowser": true,
23 | "environmentVariables": {
24 | "ASPNETCORE_ENVIRONMENT": "Development"
25 | }
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/ScaffoldingReadMe.txt:
--------------------------------------------------------------------------------
1 | Support for ASP.NET Core Identity was added to your project.
2 |
3 | For setup and configuration information, see https://go.microsoft.com/fwlink/?linkid=2116645.
4 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Views/Home/Index.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | ViewData["Title"] = "Home Page";
3 | }
4 |
5 |
9 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Views/Home/Privacy.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | ViewData["Title"] = "Privacy Policy";
3 | }
4 | @ViewData["Title"]
5 |
6 | Use this page to detail your site's privacy policy.
7 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Views/Shared/Error.cshtml:
--------------------------------------------------------------------------------
1 | @model ErrorViewModel
2 | @{
3 | ViewData["Title"] = "Error";
4 | }
5 |
6 | Error.
7 | An error occurred while processing your request.
8 |
9 | @if (Model?.ShowRequestId ?? false)
10 | {
11 |
12 | Request ID: @Model?.RequestId
13 |
14 | }
15 |
16 | Development Mode
17 |
18 | Swapping to Development environment will display more detailed information about the error that occurred.
19 |
20 |
21 | The Development environment shouldn't be enabled for deployed applications.
22 | It can result in displaying sensitive information from exceptions to end users.
23 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development
24 | and restarting the app.
25 |
26 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Views/Shared/_Layout.cshtml.css:
--------------------------------------------------------------------------------
1 | /* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
2 | for details on configuring this project to bundle and minify static web assets. */
3 |
4 | a.navbar-brand {
5 | white-space: normal;
6 | text-align: center;
7 | word-break: break-all;
8 | }
9 |
10 | a {
11 | color: #0077cc;
12 | }
13 |
14 | .btn-primary {
15 | color: #fff;
16 | background-color: #1b6ec2;
17 | border-color: #1861ac;
18 | }
19 |
20 | .nav-pills .nav-link.active, .nav-pills .show > .nav-link {
21 | color: #fff;
22 | background-color: #1b6ec2;
23 | border-color: #1861ac;
24 | }
25 |
26 | .border-top {
27 | border-top: 1px solid #e5e5e5;
28 | }
29 | .border-bottom {
30 | border-bottom: 1px solid #e5e5e5;
31 | }
32 |
33 | .box-shadow {
34 | box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
35 | }
36 |
37 | button.accept-policy {
38 | font-size: 1rem;
39 | line-height: inherit;
40 | }
41 |
42 | .footer {
43 | position: absolute;
44 | bottom: 0;
45 | width: 100%;
46 | white-space: nowrap;
47 | line-height: 60px;
48 | }
49 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Views/Shared/_LoginPartial.cshtml:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNetCore.Identity
2 | @inject SignInManager SignInManager
3 | @inject UserManager UserManager
4 |
5 |
27 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Views/Shared/_ValidationScriptsPartial.cshtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Views/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using samplemvccore
2 | @using samplemvccore.Models
3 | @using IdentityUser = ElCamino.AspNetCore.Identity.AzureTable.Model.IdentityUser;
4 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
5 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/Views/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "_Layout";
3 | }
4 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft.AspNetCore": "Warning"
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "IdentityAzureTable": {
3 | "IdentityConfiguration": {
4 | "TablePrefix": "v7",
5 | "StorageConnectionString": "UseDevelopmentStorage=true;",
6 | "IndexTableName": "AspNetIndex",
7 | "RoleTableName": "AspNetRoles",
8 | "UserTableName": "AspNetUsers"
9 | }
10 | },
11 | "Logging": {
12 | "LogLevel": {
13 | "Default": "Information",
14 | "Microsoft.AspNetCore": "Warning"
15 | }
16 | },
17 | "AllowedHosts": "*"
18 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/samplemvccore.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net7.0
5 | enable
6 | enable
7 | aspnet-samplemvccore-FECFB455-D41D-47DD-B371-2C0F71AC101F
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/wwwroot/css/site.css:
--------------------------------------------------------------------------------
1 | html {
2 | font-size: 14px;
3 | }
4 |
5 | @media (min-width: 768px) {
6 | html {
7 | font-size: 16px;
8 | }
9 | }
10 |
11 | html {
12 | position: relative;
13 | min-height: 100%;
14 | }
15 |
16 | body {
17 | margin-bottom: 60px;
18 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/wwwroot/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dlmelendez/identityazuretable/61147249318200729439d4af8fc84daaa82a5258/templates/templates/StarterWebMvc-CSharp/wwwroot/favicon.ico
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/wwwroot/js/site.js:
--------------------------------------------------------------------------------
1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
2 | // for details on configuring this project to bundle and minify static web assets.
3 |
4 | // Write your JavaScript code.
5 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebMvc-CSharp/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) .NET Foundation. All rights reserved.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 | these files except in compliance with the License. You may obtain a copy of the
5 | License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software distributed
10 | under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
11 | CONDITIONS OF ANY KIND, either express or implied. See the License for the
12 | specific language governing permissions and limitations under the License.
13 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/.template.config/template.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/template",
3 | "author": "David Melendez",
4 | "classifications": [ "Web", "Razor Pages" ],
5 | "name": "ASP.NET Core Razor Pages Web App/Identity Azure Tables ",
6 | "identity": "ElCamino.AspNetCore.Identity.AzureTable.Web.RazorPages.Template",
7 | "shortName": "rzp-id-azure-tables",
8 | "tags": {
9 | "language": "C#",
10 | "type": "project"
11 | },
12 | "sourceName": "samplerazorpagescore",
13 | "preferNameDirectory": false
14 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Areas/Identity/Pages/Account/Manage/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using samplerazorpagescore.Areas.Identity.Pages.Account.Manage
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Areas/Identity/Pages/Account/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using samplerazorpagescore.Areas.Identity.Pages.Account
2 | @using IdentityUser = ElCamino.AspNetCore.Identity.AzureTable.Model.IdentityUser;
3 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Areas/Identity/Pages/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNetCore.Identity
2 | @using samplerazorpagescore.Areas.Identity
3 | @using samplerazorpagescore.Areas.Identity.Pages
4 | @using IdentityUser = ElCamino.AspNetCore.Identity.AzureTable.Model.IdentityUser;
5 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
6 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Data/ApplicationDbContext.cs:
--------------------------------------------------------------------------------
1 | using ElCamino.AspNetCore.Identity.AzureTable;
2 | using ElCamino.AspNetCore.Identity.AzureTable.Model;
3 |
4 | namespace samplerazorpagescore.Data
5 | {
6 | public class ApplicationDbContext : IdentityCloudContext
7 | {
8 | public ApplicationDbContext(IdentityConfiguration config) : base(config)
9 | {
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/Error.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model ErrorModel
3 | @{
4 | ViewData["Title"] = "Error";
5 | }
6 |
7 | Error.
8 | An error occurred while processing your request.
9 |
10 | @if (Model.ShowRequestId)
11 | {
12 |
13 | Request ID: @Model.RequestId
14 |
15 | }
16 |
17 | Development Mode
18 |
19 | Swapping to the Development environment displays detailed information about the error that occurred.
20 |
21 |
22 | The Development environment shouldn't be enabled for deployed applications.
23 | It can result in displaying sensitive information from exceptions to end users.
24 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development
25 | and restarting the app.
26 |
27 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/Error.cshtml.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc;
2 | using Microsoft.AspNetCore.Mvc.RazorPages;
3 | using System.Diagnostics;
4 |
5 | namespace samplerazorpagescore.Pages
6 | {
7 | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
8 | [IgnoreAntiforgeryToken]
9 | public class ErrorModel : PageModel
10 | {
11 | public string? RequestId { get; set; }
12 |
13 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
14 |
15 | private readonly ILogger _logger;
16 |
17 | public ErrorModel(ILogger logger)
18 | {
19 | _logger = logger;
20 | }
21 |
22 | public void OnGet()
23 | {
24 | RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/Index.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model IndexModel
3 | @{
4 | ViewData["Title"] = "Home page";
5 | }
6 |
7 |
11 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/Index.cshtml.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc;
2 | using Microsoft.AspNetCore.Mvc.RazorPages;
3 |
4 | namespace samplerazorpagescore.Pages
5 | {
6 | public class IndexModel : PageModel
7 | {
8 | private readonly ILogger _logger;
9 |
10 | public IndexModel(ILogger logger)
11 | {
12 | _logger = logger;
13 | }
14 |
15 | public void OnGet()
16 | {
17 |
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/Privacy.cshtml:
--------------------------------------------------------------------------------
1 | @page
2 | @model PrivacyModel
3 | @{
4 | ViewData["Title"] = "Privacy Policy";
5 | }
6 | @ViewData["Title"]
7 |
8 | Use this page to detail your site's privacy policy.
9 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/Privacy.cshtml.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc;
2 | using Microsoft.AspNetCore.Mvc.RazorPages;
3 |
4 | namespace samplerazorpagescore.Pages
5 | {
6 | public class PrivacyModel : PageModel
7 | {
8 | private readonly ILogger _logger;
9 |
10 | public PrivacyModel(ILogger logger)
11 | {
12 | _logger = logger;
13 | }
14 |
15 | public void OnGet()
16 | {
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/Shared/_Layout.cshtml.css:
--------------------------------------------------------------------------------
1 | /* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
2 | for details on configuring this project to bundle and minify static web assets. */
3 |
4 | a.navbar-brand {
5 | white-space: normal;
6 | text-align: center;
7 | word-break: break-all;
8 | }
9 |
10 | a {
11 | color: #0077cc;
12 | }
13 |
14 | .btn-primary {
15 | color: #fff;
16 | background-color: #1b6ec2;
17 | border-color: #1861ac;
18 | }
19 |
20 | .nav-pills .nav-link.active, .nav-pills .show > .nav-link {
21 | color: #fff;
22 | background-color: #1b6ec2;
23 | border-color: #1861ac;
24 | }
25 |
26 | .border-top {
27 | border-top: 1px solid #e5e5e5;
28 | }
29 | .border-bottom {
30 | border-bottom: 1px solid #e5e5e5;
31 | }
32 |
33 | .box-shadow {
34 | box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
35 | }
36 |
37 | button.accept-policy {
38 | font-size: 1rem;
39 | line-height: inherit;
40 | }
41 |
42 | .footer {
43 | position: absolute;
44 | bottom: 0;
45 | width: 100%;
46 | white-space: nowrap;
47 | line-height: 60px;
48 | }
49 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/Shared/_LoginPartial.cshtml:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNetCore.Identity
2 | @inject SignInManager SignInManager
3 | @inject UserManager UserManager
4 |
5 |
27 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/Shared/_ValidationScriptsPartial.cshtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using Microsoft.AspNetCore.Identity
2 | @using samplerazorpagescore
3 | @using samplerazorpagescore.Data
4 | @using IdentityUser = ElCamino.AspNetCore.Identity.AzureTable.Model.IdentityUser;
5 | @namespace samplerazorpagescore.Pages
6 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
7 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Pages/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "_Layout";
3 | }
4 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "iisSettings": {
3 | "windowsAuthentication": false,
4 | "anonymousAuthentication": true,
5 | "iisExpress": {
6 | "applicationUrl": "http://localhost:16374",
7 | "sslPort": 44323
8 | }
9 | },
10 | "profiles": {
11 | "samplerazorpagescore": {
12 | "commandName": "Project",
13 | "dotnetRunMessages": true,
14 | "launchBrowser": true,
15 | "applicationUrl": "https://localhost:7071;http://localhost:5120",
16 | "environmentVariables": {
17 | "ASPNETCORE_ENVIRONMENT": "Development"
18 | }
19 | },
20 | "IIS Express": {
21 | "commandName": "IISExpress",
22 | "launchBrowser": true,
23 | "environmentVariables": {
24 | "ASPNETCORE_ENVIRONMENT": "Development"
25 | }
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/ScaffoldingReadMe.txt:
--------------------------------------------------------------------------------
1 | Support for ASP.NET Core Identity was added to your project.
2 |
3 | For setup and configuration information, see https://go.microsoft.com/fwlink/?linkid=2116645.
4 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "DetailedErrors": true,
3 | "Logging": {
4 | "LogLevel": {
5 | "Default": "Information",
6 | "Microsoft.AspNetCore": "Warning"
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "IdentityAzureTable": {
3 | "IdentityConfiguration": {
4 | "TablePrefix": "v7",
5 | "StorageConnectionString": "UseDevelopmentStorage=true;",
6 | "IndexTableName": "AspNetIndex",
7 | "RoleTableName": "AspNetRoles",
8 | "UserTableName": "AspNetUsers"
9 | }
10 | },
11 | "Logging": {
12 | "LogLevel": {
13 | "Default": "Information",
14 | "Microsoft.AspNetCore": "Warning"
15 | }
16 | },
17 | "AllowedHosts": "*"
18 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/samplerazorpagescore.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net7.0
5 | enable
6 | enable
7 | aspnet-samplerazorpagescore-9339924A-3037-4518-866A-C28CC554EA47
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/wwwroot/css/site.css:
--------------------------------------------------------------------------------
1 | html {
2 | font-size: 14px;
3 | }
4 |
5 | @media (min-width: 768px) {
6 | html {
7 | font-size: 16px;
8 | }
9 | }
10 |
11 | html {
12 | position: relative;
13 | min-height: 100%;
14 | }
15 |
16 | body {
17 | margin-bottom: 60px;
18 | }
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/wwwroot/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dlmelendez/identityazuretable/61147249318200729439d4af8fc84daaa82a5258/templates/templates/StarterWebRazorPages-CSharp/wwwroot/favicon.ico
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/wwwroot/js/site.js:
--------------------------------------------------------------------------------
1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
2 | // for details on configuring this project to bundle and minify static web assets.
3 |
4 | // Write your JavaScript code.
5 |
--------------------------------------------------------------------------------
/templates/templates/StarterWebRazorPages-CSharp/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) .NET Foundation. All rights reserved.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 | these files except in compliance with the License. You may obtain a copy of the
5 | License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software distributed
10 | under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
11 | CONDITIONS OF ANY KIND, either express or implied. See the License for the
12 | specific language governing permissions and limitations under the License.
13 |
--------------------------------------------------------------------------------
/tests/ElCamino.AspNetCore.Identity.AzureTable.Tests/ExceptionHelper.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 | using System;
3 |
4 | namespace ElCamino.AspNetCore.Identity.AzureTable.Tests
5 | {
6 | public static class ExceptionHelper
7 | {
8 | public static void ValidateAggregateException(this AggregateException agg) where T : Exception, new()
9 | {
10 | try
11 | {
12 | if (agg.InnerExceptions[0] is T)
13 | {
14 | return;
15 | }
16 | }
17 | catch
18 | {
19 | throw agg;
20 | }
21 |
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/tests/ElCamino.AspNetCore.Identity.AzureTable.Tests/ModelTests/ApplicationUser.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 |
3 | using ElCamino.AspNetCore.Identity.AzureTable.Model;
4 |
5 | namespace ElCamino.Web.Identity.AzureTable.Tests.ModelTests
6 | {
7 | public class ApplicationUserV2 : IdentityUser, IApplicationUser
8 | {
9 | public string FirstName { get; set; }
10 |
11 | public string LastName { get; set; }
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/tests/ElCamino.AspNetCore.Identity.AzureTable.Tests/ModelTests/IApplicationUser.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 |
3 | namespace ElCamino.Web.Identity.AzureTable.Tests.ModelTests
4 | {
5 | public interface IApplicationUser
6 | {
7 | string FirstName { get; set; }
8 | string LastName { get; set; }
9 | }
10 | }
--------------------------------------------------------------------------------
/tests/ElCamino.AspNetCore.Identity.AzureTable.Tests/ModelTests/IdentityRoleTests.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 |
3 | using System;
4 | using ElCamino.AspNetCore.Identity.AzureTable.Model;
5 | using Xunit;
6 |
7 | namespace ElCamino.AspNetCore.Identity.AzureTable.Tests.ModelTests
8 | {
9 | public class IdentityRoleTests
10 | {
11 | [Fact(DisplayName = "IdentityRoleSet_Id")]
12 | [Trait("IdentityCore.Azure.Model", "")]
13 | public void IdentityRoleSet_Id()
14 | {
15 | var role = new IdentityRole();
16 | role.Id = Guid.NewGuid().ToString();
17 | Assert.Equal(role.RowKey, role.Id);
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/tests/ElCamino.AspNetCore.Identity.AzureTable.Tests/ModelTests/IdentityUserClaimTests.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 |
3 | using ElCamino.AspNetCore.Identity.AzureTable.Helpers;
4 | using ElCamino.AspNetCore.Identity.AzureTable.Model;
5 | using Xunit;
6 |
7 | namespace ElCamino.AspNetCore.Identity.AzureTable.Tests.ModelTests
8 | {
9 | public class IdentityUserClaimTests
10 | {
11 | [Fact(DisplayName = "IdentityUserClaimGet_UserId")]
12 | [Trait("IdentityCore.Azure.Model", "")]
13 | public void IdentityUserClaimGet_UserId()
14 | {
15 | var uc = new IdentityUserClaim();
16 | uc.GenerateKeys(new DefaultKeyHelper());
17 |
18 | var uc2 = new IdentityUserClaim();
19 | uc2.GenerateKeys(new SHA256KeyHelper());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/tests/ElCamino.AspNetCore.Identity.AzureTable.Tests/ModelTests/IdentityUserRoleTests.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 |
3 | using ElCamino.AspNetCore.Identity.AzureTable.Helpers;
4 | using ElCamino.AspNetCore.Identity.AzureTable.Model;
5 | using Xunit;
6 |
7 | namespace ElCamino.AspNetCore.Identity.AzureTable.Tests.ModelTests
8 | {
9 | public class IdentityUserRoleTests
10 | {
11 | [Fact(DisplayName = "IdentityUserRoleGet_UserId")]
12 | [Trait("IdentityCore.Azure.Model", "")]
13 | public void IdentityUserRoleGet_UserId()
14 | {
15 | var ur = new IdentityUserRole();
16 | ur.GenerateKeys(new DefaultKeyHelper());
17 | Assert.Null(ur.UserId);
18 | Assert.Equal(string.Empty, ur.PartitionKey);
19 |
20 | var ur2 = new IdentityUserRole();
21 | ur2.GenerateKeys(new SHA256KeyHelper());
22 | Assert.Null(ur2.UserId);
23 | Assert.Equal(string.Empty, ur2.PartitionKey);
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/tests/ElCamino.AspNetCore.Identity.AzureTable.Tests/ModelTests/IdentityUserTests.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 | using System;
3 | using ElCamino.AspNetCore.Identity.AzureTable.Model;
4 | using Xunit;
5 |
6 | namespace ElCamino.AspNetCore.Identity.AzureTable.Tests.ModelTests
7 | {
8 | public class IdentityUserTests
9 | {
10 | [Fact(DisplayName = "IdentityUserCtors")]
11 | [Trait("IdentityCore.Azure.Model", "")]
12 | public void IdentityUserCtors()
13 | {
14 | Assert.NotNull(new IdentityUser(Guid.NewGuid().ToString()));
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/tests/ElCamino.AspNetCore.Identity.AzureTable.Tests/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "AppSettings": {
3 | "SiteTitle": "SampleMvc2"
4 | },
5 | "Data": {
6 | "DefaultConnection": {
7 | "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet5-SampleMvc2-444042c2-53c3-4c2b-ae65-5c753b0d2e4a;Trusted_Connection=True;MultipleActiveResultSets=true"
8 | }
9 | },
10 | "IdentityAzureTable": {
11 | "identityConfiguration": {
12 | "tablePrefix": "av62",
13 | "indexTableName": "indexes",
14 | "userTableName": "users",
15 | "roleTableName": "roles",
16 | "storageConnectionString": "UseDevelopmentStorage=true;",
17 | "locationMode": "PrimaryOnly"
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/tests/ElCamino.Azure.Data.Tables.Tests/BaseTest.cs:
--------------------------------------------------------------------------------
1 | // MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2 | using Azure.Data.Tables;
3 | using Xunit;
4 | using Xunit.Abstractions;
5 |
6 | namespace ElCamino.Azure.Data.Tables.Tests
7 | {
8 | public class BaseTest : IClassFixture
9 | {
10 | protected readonly ITestOutputHelper _output;
11 | protected readonly TableFixture _tableFixture;
12 | protected readonly TableServiceClient _tableServiceClient;
13 | protected const string TableName = "aatabletests";
14 | protected readonly TableClient _tableClient;
15 |
16 | public BaseTest(TableFixture tableFixture, ITestOutputHelper output)
17 | {
18 | _output = output;
19 | _tableFixture = tableFixture;
20 | _tableServiceClient = _tableFixture.TableService;
21 | _tableClient = _tableServiceClient.GetTableClient(TableName);
22 | }
23 |
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/tests/ElCamino.Azure.Data.Tables.Tests/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "ElCamino": {
3 | "storageConnectionString": "UseDevelopmentStorage=true;"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/tools/key.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dlmelendez/identityazuretable/61147249318200729439d4af8fc84daaa82a5258/tools/key.snk
--------------------------------------------------------------------------------