",
+ b =>
+ {
+ b.HasOne("Kemkas.Web.Models.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Kemkas.Web/Dockerfile b/Kemkas.Web/Dockerfile
new file mode 100644
index 0000000..70f4dcd
--- /dev/null
+++ b/Kemkas.Web/Dockerfile
@@ -0,0 +1,27 @@
+FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
+WORKDIR /app
+EXPOSE 80
+EXPOSE 443
+
+FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
+
+# Install Node.js
+RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
+ && apt-get install -y nodejs \
+ && npm install --global yarn \
+ && rm -rf /var/lib/apt/lists/*
+
+WORKDIR /src
+COPY ["Kemkas.Web/Kemkas.Web.csproj", "Kemkas.Web/"]
+RUN dotnet restore "Kemkas.Web/Kemkas.Web.csproj"
+COPY . .
+WORKDIR "/src/Kemkas.Web"
+RUN dotnet build "Kemkas.Web.csproj" -c Release -o /app/build
+
+FROM build AS publish
+RUN dotnet publish "Kemkas.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false
+
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+ENTRYPOINT ["dotnet", "Kemkas.Web.dll"]
diff --git a/Kemkas.Web/Kemkas.Web.csproj b/Kemkas.Web/Kemkas.Web.csproj
new file mode 100644
index 0000000..b5c2330
--- /dev/null
+++ b/Kemkas.Web/Kemkas.Web.csproj
@@ -0,0 +1,66 @@
+
+
+
+ net7.0
+ enable
+ true
+ Latest
+ false
+ frontend\
+ $(DefaultItemExcludes);$(SpaRoot)node_modules\**
+ https://localhost:44478
+ yarn start
+ enable
+ Linux
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .dockerignore
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ wwwroot\%(RecursiveDir)%(FileName)%(Extension)
+ PreserveNewest
+ true
+
+
+
+
diff --git a/Kemkas.Web/Models/ApplicationUser.cs b/Kemkas.Web/Models/ApplicationUser.cs
new file mode 100644
index 0000000..22197c0
--- /dev/null
+++ b/Kemkas.Web/Models/ApplicationUser.cs
@@ -0,0 +1,7 @@
+using Microsoft.AspNetCore.Identity;
+
+namespace Kemkas.Web.Models;
+
+public class ApplicationUser : IdentityUser
+{
+}
diff --git a/Kemkas.Web/Models/WeatherForecast.cs b/Kemkas.Web/Models/WeatherForecast.cs
new file mode 100644
index 0000000..e28e0b2
--- /dev/null
+++ b/Kemkas.Web/Models/WeatherForecast.cs
@@ -0,0 +1,12 @@
+namespace Kemkas.Web;
+
+public class WeatherForecast
+{
+ public DateOnly Date { get; set; }
+
+ public int TemperatureC { get; set; }
+
+ public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
+
+ public string? Summary { get; set; }
+}
diff --git a/Kemkas.Web/Pages/Error.cshtml b/Kemkas.Web/Pages/Error.cshtml
new file mode 100644
index 0000000..6f92b95
--- /dev/null
+++ b/Kemkas.Web/Pages/Error.cshtml
@@ -0,0 +1,26 @@
+@page
+@model ErrorModel
+@{
+ ViewData["Title"] = "Error";
+}
+
+Error.
+An error occurred while processing your request.
+
+@if (Model.ShowRequestId)
+{
+
+ Request ID: @Model.RequestId
+
+}
+
+Development Mode
+
+ Swapping to the Development environment displays detailed information about the error that occurred.
+
+
+ The Development environment shouldn't be enabled for deployed applications.
+ It can result in displaying sensitive information from exceptions to end users.
+ For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development
+ and restarting the app.
+
diff --git a/Kemkas.Web/Pages/Error.cshtml.cs b/Kemkas.Web/Pages/Error.cshtml.cs
new file mode 100644
index 0000000..59a5744
--- /dev/null
+++ b/Kemkas.Web/Pages/Error.cshtml.cs
@@ -0,0 +1,25 @@
+using System.Diagnostics;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace Kemkas.Web.Pages;
+
+[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
+public class ErrorModel : PageModel
+{
+ private readonly ILogger _logger;
+
+ public ErrorModel(ILogger logger)
+ {
+ _logger = logger;
+ }
+
+ public string? RequestId { get; set; }
+
+ public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+
+ public void OnGet()
+ {
+ RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
+ }
+}
diff --git a/Kemkas.Web/Pages/Shared/_LoginPartial.cshtml b/Kemkas.Web/Pages/Shared/_LoginPartial.cshtml
new file mode 100644
index 0000000..2eb2b83
--- /dev/null
+++ b/Kemkas.Web/Pages/Shared/_LoginPartial.cshtml
@@ -0,0 +1,36 @@
+@using Microsoft.AspNetCore.Identity
+@using Kemkas.Web.Models;
+@inject SignInManager SignInManager
+@inject UserManager UserManager
+
+@{
+ string? returnUrl = null;
+ var query = ViewContext.HttpContext.Request.Query;
+ if (query.ContainsKey("returnUrl"))
+ {
+ returnUrl = query["returnUrl"];
+ }
+}
+
+
diff --git a/Kemkas.Web/Pages/_ViewImports.cshtml b/Kemkas.Web/Pages/_ViewImports.cshtml
new file mode 100644
index 0000000..d7e60bd
--- /dev/null
+++ b/Kemkas.Web/Pages/_ViewImports.cshtml
@@ -0,0 +1,3 @@
+@using Kemkas.Web
+@namespace Kemkas.Web.Pages
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
diff --git a/Kemkas.Web/Program.cs b/Kemkas.Web/Program.cs
new file mode 100644
index 0000000..ddefefa
--- /dev/null
+++ b/Kemkas.Web/Program.cs
@@ -0,0 +1,58 @@
+using Microsoft.AspNetCore.Authentication;
+using Microsoft.AspNetCore.Identity;
+using Microsoft.AspNetCore.Identity.UI;
+using Microsoft.EntityFrameworkCore;
+using Kemkas.Web.Data;
+using Kemkas.Web.Models;
+
+var builder = WebApplication.CreateBuilder(args);
+
+// Add services to the container.
+var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ??
+ throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
+builder.Services.AddDbContext(
+ options =>
+ options.UseSqlite(connectionString));
+builder.Services.AddDatabaseDeveloperPageExceptionFilter();
+
+builder.Services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = true)
+ .AddEntityFrameworkStores();
+
+builder.Services.AddIdentityServer()
+ .AddApiAuthorization();
+
+// builder.Services.AddAuthentication()
+// .AddIdentityServerJwt();
+
+builder.Services.AddControllersWithViews();
+builder.Services.AddRazorPages();
+
+var app = builder.Build();
+
+// Configure the HTTP request pipeline.
+if (app.Environment.IsDevelopment())
+{
+ app.UseMigrationsEndPoint();
+}
+else
+{
+ // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
+ app.UseHsts();
+}
+
+// app.UseHttpsRedirection(); // reverse proxy should take care of that
+app.UseStaticFiles();
+app.UseRouting();
+
+// app.UseAuthentication();
+// app.UseIdentityServer();
+// app.UseAuthorization();
+
+app.MapControllerRoute(
+ name: "default",
+ pattern: "{controller}/{action=Index}/{id?}");
+app.MapRazorPages();
+
+app.MapFallbackToFile("index.html");
+
+app.Run();
diff --git a/Kemkas.Web/Properties/launchSettings.json b/Kemkas.Web/Properties/launchSettings.json
new file mode 100644
index 0000000..b302da6
--- /dev/null
+++ b/Kemkas.Web/Properties/launchSettings.json
@@ -0,0 +1,29 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:40870",
+ "sslPort": 44348
+ }
+ },
+ "profiles": {
+ "Kemkas.Web": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "applicationUrl": "https://localhost:7251;http://localhost:5174",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy"
+ }
+ },
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy"
+ }
+ }
+ }
+}
diff --git a/Kemkas.Web/appsettings.Development.json b/Kemkas.Web/appsettings.Development.json
new file mode 100644
index 0000000..20847b8
--- /dev/null
+++ b/Kemkas.Web/appsettings.Development.json
@@ -0,0 +1,15 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft": "Warning",
+ "Microsoft.AspNetCore.SpaProxy": "Information",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ },
+ "IdentityServer": {
+ "Key": {
+ "Type": "Development"
+ }
+ }
+}
diff --git a/Kemkas.Web/appsettings.json b/Kemkas.Web/appsettings.json
new file mode 100644
index 0000000..11dca72
--- /dev/null
+++ b/Kemkas.Web/appsettings.json
@@ -0,0 +1,20 @@
+{
+ "ConnectionStrings": {
+ "DefaultConnection": "DataSource=app.db;Cache=Shared"
+ },
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft": "Warning",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ },
+ "IdentityServer": {
+ "Clients": {
+ "Kemkas.Web": {
+ "Profile": "IdentityServerSPA"
+ }
+ }
+ },
+"AllowedHosts": "*"
+}
diff --git a/frontend/.dockerignore b/Kemkas.Web/frontend/.dockerignore
similarity index 100%
rename from frontend/.dockerignore
rename to Kemkas.Web/frontend/.dockerignore
diff --git a/Kemkas.Web/frontend/.env b/Kemkas.Web/frontend/.env
new file mode 100644
index 0000000..6ce384e
--- /dev/null
+++ b/Kemkas.Web/frontend/.env
@@ -0,0 +1 @@
+BROWSER=none
diff --git a/Kemkas.Web/frontend/.env.development b/Kemkas.Web/frontend/.env.development
new file mode 100644
index 0000000..60ad7c8
--- /dev/null
+++ b/Kemkas.Web/frontend/.env.development
@@ -0,0 +1,3 @@
+PORT=44478
+HTTPS=true
+
diff --git a/frontend/Dockerfile b/Kemkas.Web/frontend/Dockerfile
similarity index 100%
rename from frontend/Dockerfile
rename to Kemkas.Web/frontend/Dockerfile
diff --git a/frontend/README.md b/Kemkas.Web/frontend/README.md
similarity index 100%
rename from frontend/README.md
rename to Kemkas.Web/frontend/README.md
diff --git a/Kemkas.Web/frontend/aspnetcore-https.js b/Kemkas.Web/frontend/aspnetcore-https.js
new file mode 100644
index 0000000..2bde928
--- /dev/null
+++ b/Kemkas.Web/frontend/aspnetcore-https.js
@@ -0,0 +1,33 @@
+// This script sets up HTTPS for the application using the ASP.NET Core HTTPS certificate
+const fs = require('fs');
+const spawn = require('child_process').spawn;
+const path = require('path');
+
+const baseFolder =
+ process.env.APPDATA !== undefined && process.env.APPDATA !== ''
+ ? `${process.env.APPDATA}/ASP.NET/https`
+ : `${process.env.HOME}/.aspnet/https`;
+
+const certificateArg = process.argv.map(arg => arg.match(/--name=(?.+)/i)).filter(Boolean)[0];
+const certificateName = certificateArg ? certificateArg.groups.value : process.env.npm_package_name;
+
+if (!certificateName) {
+ console.error('Invalid certificate name. Run this script in the context of an npm/yarn script or pass --name=<> explicitly.')
+ process.exit(-1);
+}
+
+const certFilePath = path.join(baseFolder, `${certificateName}.pem`);
+const keyFilePath = path.join(baseFolder, `${certificateName}.key`);
+
+if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) {
+ spawn('dotnet', [
+ 'dev-certs',
+ 'https',
+ '--export-path',
+ certFilePath,
+ '--format',
+ 'Pem',
+ '--no-password',
+ ], { stdio: 'inherit', })
+ .on('exit', (code) => process.exit(code));
+}
diff --git a/Kemkas.Web/frontend/aspnetcore-react.js b/Kemkas.Web/frontend/aspnetcore-react.js
new file mode 100644
index 0000000..3b28895
--- /dev/null
+++ b/Kemkas.Web/frontend/aspnetcore-react.js
@@ -0,0 +1,55 @@
+// This script configures the .env.development.local file with additional environment variables to configure HTTPS using the ASP.NET Core
+// development certificate in the webpack development proxy.
+
+const fs = require('fs');
+const path = require('path');
+
+const baseFolder =
+ process.env.APPDATA !== undefined && process.env.APPDATA !== ''
+ ? `${process.env.APPDATA}/ASP.NET/https`
+ : `${process.env.HOME}/.aspnet/https`;
+
+const certificateArg = process.argv.map(arg => arg.match(/--name=(?.+)/i)).filter(Boolean)[0];
+const certificateName = certificateArg ? certificateArg.groups.value : process.env.npm_package_name;
+
+if (!certificateName) {
+ console.error('Invalid certificate name. Run this script in the context of an npm/yarn script or pass --name=<> explicitly.')
+ process.exit(-1);
+}
+
+const certFilePath = path.join(baseFolder, `${certificateName}.pem`);
+const keyFilePath = path.join(baseFolder, `${certificateName}.key`);
+
+if (!fs.existsSync('.env.development.local')) {
+ fs.writeFileSync(
+ '.env.development.local',
+`SSL_CRT_FILE=${certFilePath}
+SSL_KEY_FILE=${keyFilePath}`
+ );
+} else {
+ let lines = fs.readFileSync('.env.development.local')
+ .toString()
+ .split('\n');
+
+ let hasCert, hasCertKey = false;
+ for (const line of lines) {
+ if (/SSL_CRT_FILE=.*/i.test(line)) {
+ hasCert = true;
+ }
+ if (/SSL_KEY_FILE=.*/i.test(line)) {
+ hasCertKey = true;
+ }
+ }
+ if (!hasCert) {
+ fs.appendFileSync(
+ '.env.development.local',
+ `\nSSL_CRT_FILE=${certFilePath}`
+ );
+ }
+ if (!hasCertKey) {
+ fs.appendFileSync(
+ '.env.development.local',
+ `\nSSL_KEY_FILE=${keyFilePath}`
+ );
+ }
+}
diff --git a/frontend/compile-less.sh b/Kemkas.Web/frontend/compile-less.sh
similarity index 100%
rename from frontend/compile-less.sh
rename to Kemkas.Web/frontend/compile-less.sh
diff --git a/frontend/package.json b/Kemkas.Web/frontend/package.json
similarity index 59%
rename from frontend/package.json
rename to Kemkas.Web/frontend/package.json
index 237efbc..b2010ed 100644
--- a/frontend/package.json
+++ b/Kemkas.Web/frontend/package.json
@@ -1,5 +1,5 @@
{
- "name": "kem-web-fe",
+ "name": "kemkas",
"version": "0.1.0",
"private": true,
"dependencies": {
@@ -15,18 +15,43 @@
"bootstrap": "^5.3.2",
"downloadjs": "^1.4.7",
"pdf-lib": "^1.17.1",
+ "http-proxy-middleware": "^2.0.6",
+ "jquery": "^3.6.0",
+ "merge": "^2.1.1",
+ "oidc-client": "^1.11.5",
"react": "^18.2.0",
"react-bootstrap": "^2.9.1",
"react-dom": "^18.2.0",
"react-router-dom": "^6.17.0",
"react-scripts": "5.0.1",
+ "rimraf": "^3.0.2",
"typescript": "^5.2.2",
- "web-vitals": "^3.5.0"
+ "web-vitals": "^3.5.0",
+ "workbox-background-sync": "^6.5.4",
+ "workbox-broadcast-update": "^6.5.4",
+ "workbox-cacheable-response": "^6.5.4",
+ "workbox-core": "^6.5.4",
+ "workbox-expiration": "^6.5.4",
+ "workbox-google-analytics": "^6.5.4",
+ "workbox-navigation-preload": "^6.5.4",
+ "workbox-precaching": "^6.5.4",
+ "workbox-range-requests": "^6.5.4",
+ "workbox-routing": "^6.5.4",
+ "workbox-strategies": "^6.5.4",
+ "workbox-streams": "^6.5.4"
+ },
+ "devDependencies": {
+ "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
+ "@types/downloadjs": "^1.4.4",
+ "cross-env": "^7.0.3",
+ "less": "^4.2.0",
+ "less-loader": "^11.1.3"
},
"scripts": {
- "start": "react-scripts start",
+ "prestart": "node aspnetcore-https && node aspnetcore-react",
+ "start": "rimraf ./build && react-scripts start",
"build": "react-scripts build",
- "test": "react-scripts test",
+ "test": "cross-env CI=true react-scripts test --env=jsdom",
"eject": "react-scripts eject"
},
"eslintConfig": {
@@ -46,11 +71,5 @@
"last 1 firefox version",
"last 1 safari version"
]
- },
- "devDependencies": {
- "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
- "@types/downloadjs": "^1.4.4",
- "less": "^4.2.0",
- "less-loader": "^11.1.3"
}
}
diff --git a/frontend/public/Merienda-Bold.ttf b/Kemkas.Web/frontend/public/Merienda-Bold.ttf
similarity index 100%
rename from frontend/public/Merienda-Bold.ttf
rename to Kemkas.Web/frontend/public/Merienda-Bold.ttf
diff --git a/frontend/public/Merienda-Regular.ttf b/Kemkas.Web/frontend/public/Merienda-Regular.ttf
similarity index 100%
rename from frontend/public/Merienda-Regular.ttf
rename to Kemkas.Web/frontend/public/Merienda-Regular.ttf
diff --git a/frontend/public/favicon.ico b/Kemkas.Web/frontend/public/favicon.ico
similarity index 100%
rename from frontend/public/favicon.ico
rename to Kemkas.Web/frontend/public/favicon.ico
diff --git a/frontend/public/index.html b/Kemkas.Web/frontend/public/index.html
similarity index 100%
rename from frontend/public/index.html
rename to Kemkas.Web/frontend/public/index.html
diff --git a/frontend/public/km_karakterlap_hysteria_1.2.pdf b/Kemkas.Web/frontend/public/km_karakterlap_hysteria_1.2.pdf
similarity index 100%
rename from frontend/public/km_karakterlap_hysteria_1.2.pdf
rename to Kemkas.Web/frontend/public/km_karakterlap_hysteria_1.2.pdf
diff --git a/frontend/public/logo-original.png b/Kemkas.Web/frontend/public/logo-original.png
similarity index 100%
rename from frontend/public/logo-original.png
rename to Kemkas.Web/frontend/public/logo-original.png
diff --git a/frontend/public/logo192.png b/Kemkas.Web/frontend/public/logo192.png
similarity index 100%
rename from frontend/public/logo192.png
rename to Kemkas.Web/frontend/public/logo192.png
diff --git a/frontend/public/logo512.png b/Kemkas.Web/frontend/public/logo512.png
similarity index 100%
rename from frontend/public/logo512.png
rename to Kemkas.Web/frontend/public/logo512.png
diff --git a/frontend/public/manifest.json b/Kemkas.Web/frontend/public/manifest.json
similarity index 100%
rename from frontend/public/manifest.json
rename to Kemkas.Web/frontend/public/manifest.json
diff --git a/frontend/public/ogl.html b/Kemkas.Web/frontend/public/ogl.html
similarity index 100%
rename from frontend/public/ogl.html
rename to Kemkas.Web/frontend/public/ogl.html
diff --git a/frontend/public/robots.txt b/Kemkas.Web/frontend/public/robots.txt
similarity index 100%
rename from frontend/public/robots.txt
rename to Kemkas.Web/frontend/public/robots.txt
diff --git a/frontend/src/App.css b/Kemkas.Web/frontend/src/App.css
similarity index 100%
rename from frontend/src/App.css
rename to Kemkas.Web/frontend/src/App.css
diff --git a/frontend/src/App.test.tsx b/Kemkas.Web/frontend/src/App.test.tsx
similarity index 100%
rename from frontend/src/App.test.tsx
rename to Kemkas.Web/frontend/src/App.test.tsx
diff --git a/frontend/src/App.tsx b/Kemkas.Web/frontend/src/App.tsx
similarity index 100%
rename from frontend/src/App.tsx
rename to Kemkas.Web/frontend/src/App.tsx
diff --git a/frontend/src/first-edition/components/BasicNewLevel.tsx b/Kemkas.Web/frontend/src/first-edition/components/BasicNewLevel.tsx
similarity index 100%
rename from frontend/src/first-edition/components/BasicNewLevel.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/BasicNewLevel.tsx
diff --git a/frontend/src/first-edition/components/FajSelector.tsx b/Kemkas.Web/frontend/src/first-edition/components/FajSelector.tsx
similarity index 100%
rename from frontend/src/first-edition/components/FajSelector.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/FajSelector.tsx
diff --git a/frontend/src/first-edition/components/Felszereles.tsx b/Kemkas.Web/frontend/src/first-edition/components/Felszereles.tsx
similarity index 100%
rename from frontend/src/first-edition/components/Felszereles.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/Felszereles.tsx
diff --git a/frontend/src/first-edition/components/HarcosFegyverSpecializacio.tsx b/Kemkas.Web/frontend/src/first-edition/components/HarcosFegyverSpecializacio.tsx
similarity index 100%
rename from frontend/src/first-edition/components/HarcosFegyverSpecializacio.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/HarcosFegyverSpecializacio.tsx
diff --git a/frontend/src/first-edition/components/Helpers.tsx b/Kemkas.Web/frontend/src/first-edition/components/Helpers.tsx
similarity index 100%
rename from frontend/src/first-edition/components/Helpers.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/Helpers.tsx
diff --git a/frontend/src/first-edition/components/JellemSelector.tsx b/Kemkas.Web/frontend/src/first-edition/components/JellemSelector.tsx
similarity index 100%
rename from frontend/src/first-edition/components/JellemSelector.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/JellemSelector.tsx
diff --git a/frontend/src/first-edition/components/KalozKritikus.tsx b/Kemkas.Web/frontend/src/first-edition/components/KalozKritikus.tsx
similarity index 100%
rename from frontend/src/first-edition/components/KalozKritikus.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/KalozKritikus.tsx
diff --git a/frontend/src/first-edition/components/KarakterKepzettsegek.tsx b/Kemkas.Web/frontend/src/first-edition/components/KarakterKepzettsegek.tsx
similarity index 100%
rename from frontend/src/first-edition/components/KarakterKepzettsegek.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/KarakterKepzettsegek.tsx
diff --git a/frontend/src/first-edition/components/KepzettsegSelector.tsx b/Kemkas.Web/frontend/src/first-edition/components/KepzettsegSelector.tsx
similarity index 100%
rename from frontend/src/first-edition/components/KepzettsegSelector.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/KepzettsegSelector.tsx
diff --git a/frontend/src/first-edition/components/LevelUps.tsx b/Kemkas.Web/frontend/src/first-edition/components/LevelUps.tsx
similarity index 100%
rename from frontend/src/first-edition/components/LevelUps.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/LevelUps.tsx
diff --git a/frontend/src/first-edition/components/MasodlagosErtekek.tsx b/Kemkas.Web/frontend/src/first-edition/components/MasodlagosErtekek.tsx
similarity index 100%
rename from frontend/src/first-edition/components/MasodlagosErtekek.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/MasodlagosErtekek.tsx
diff --git a/frontend/src/first-edition/components/OsztalySelector.tsx b/Kemkas.Web/frontend/src/first-edition/components/OsztalySelector.tsx
similarity index 100%
rename from frontend/src/first-edition/components/OsztalySelector.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/OsztalySelector.tsx
diff --git a/frontend/src/first-edition/components/TulajdonsagInput.tsx b/Kemkas.Web/frontend/src/first-edition/components/TulajdonsagInput.tsx
similarity index 100%
rename from frontend/src/first-edition/components/TulajdonsagInput.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/TulajdonsagInput.tsx
diff --git a/frontend/src/first-edition/components/TulajdonsagNoveles.tsx b/Kemkas.Web/frontend/src/first-edition/components/TulajdonsagNoveles.tsx
similarity index 100%
rename from frontend/src/first-edition/components/TulajdonsagNoveles.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/TulajdonsagNoveles.tsx
diff --git a/frontend/src/first-edition/components/Tulajdonsagok.tsx b/Kemkas.Web/frontend/src/first-edition/components/Tulajdonsagok.tsx
similarity index 100%
rename from frontend/src/first-edition/components/Tulajdonsagok.tsx
rename to Kemkas.Web/frontend/src/first-edition/components/Tulajdonsagok.tsx
diff --git a/frontend/src/first-edition/domain-models/allowed-fegyver.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/allowed-fegyver.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/allowed-fegyver.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/allowed-fegyver.ts
diff --git a/frontend/src/first-edition/domain-models/allowed-pancel-types.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/allowed-pancel-types.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/allowed-pancel-types.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/allowed-pancel-types.ts
diff --git a/frontend/src/first-edition/domain-models/faj.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/faj.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/faj.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/faj.ts
diff --git a/frontend/src/first-edition/domain-models/fegyver.json b/Kemkas.Web/frontend/src/first-edition/domain-models/fegyver.json
similarity index 100%
rename from frontend/src/first-edition/domain-models/fegyver.json
rename to Kemkas.Web/frontend/src/first-edition/domain-models/fegyver.json
diff --git a/frontend/src/first-edition/domain-models/felszereles.json b/Kemkas.Web/frontend/src/first-edition/domain-models/felszereles.json
similarity index 100%
rename from frontend/src/first-edition/domain-models/felszereles.json
rename to Kemkas.Web/frontend/src/first-edition/domain-models/felszereles.json
diff --git a/frontend/src/first-edition/domain-models/felszereles.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/felszereles.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/felszereles.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/felszereles.ts
diff --git a/frontend/src/first-edition/domain-models/jellem.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/jellem.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/jellem.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/jellem.ts
diff --git a/frontend/src/first-edition/domain-models/karakter.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/karakter.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/karakter.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/karakter.ts
diff --git a/frontend/src/first-edition/domain-models/kepzettsegek.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/kepzettsegek.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/kepzettsegek.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/kepzettsegek.ts
diff --git a/frontend/src/first-edition/domain-models/kockak.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/kockak.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/kockak.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/kockak.ts
diff --git a/frontend/src/first-edition/domain-models/level.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/level.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/level.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/level.ts
diff --git a/frontend/src/first-edition/domain-models/masodlagos_ertekek.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/masodlagos_ertekek.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/masodlagos_ertekek.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/masodlagos_ertekek.ts
diff --git a/frontend/src/first-edition/domain-models/memorizalt_varazslat_tabla.json b/Kemkas.Web/frontend/src/first-edition/domain-models/memorizalt_varazslat_tabla.json
similarity index 100%
rename from frontend/src/first-edition/domain-models/memorizalt_varazslat_tabla.json
rename to Kemkas.Web/frontend/src/first-edition/domain-models/memorizalt_varazslat_tabla.json
diff --git a/frontend/src/first-edition/domain-models/memorizalt_varazslatok.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/memorizalt_varazslatok.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/memorizalt_varazslatok.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/memorizalt_varazslatok.ts
diff --git a/frontend/src/first-edition/domain-models/mentok.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/mentok.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/mentok.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/mentok.ts
diff --git a/frontend/src/first-edition/domain-models/osztaly.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/osztaly.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/osztaly.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/osztaly.ts
diff --git a/frontend/src/first-edition/domain-models/pajzs.json b/Kemkas.Web/frontend/src/first-edition/domain-models/pajzs.json
similarity index 100%
rename from frontend/src/first-edition/domain-models/pajzs.json
rename to Kemkas.Web/frontend/src/first-edition/domain-models/pajzs.json
diff --git a/frontend/src/first-edition/domain-models/pancel.json b/Kemkas.Web/frontend/src/first-edition/domain-models/pancel.json
similarity index 100%
rename from frontend/src/first-edition/domain-models/pancel.json
rename to Kemkas.Web/frontend/src/first-edition/domain-models/pancel.json
diff --git a/frontend/src/first-edition/domain-models/tamadas_bonus_tabla.json b/Kemkas.Web/frontend/src/first-edition/domain-models/tamadas_bonus_tabla.json
similarity index 100%
rename from frontend/src/first-edition/domain-models/tamadas_bonus_tabla.json
rename to Kemkas.Web/frontend/src/first-edition/domain-models/tamadas_bonus_tabla.json
diff --git a/frontend/src/first-edition/domain-models/tamadas_bonusz.test.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/tamadas_bonusz.test.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/tamadas_bonusz.test.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/tamadas_bonusz.test.ts
diff --git a/frontend/src/first-edition/domain-models/tamadas_bonusz.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/tamadas_bonusz.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/tamadas_bonusz.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/tamadas_bonusz.ts
diff --git a/frontend/src/first-edition/domain-models/tulajdonsag.ts b/Kemkas.Web/frontend/src/first-edition/domain-models/tulajdonsag.ts
similarity index 100%
rename from frontend/src/first-edition/domain-models/tulajdonsag.ts
rename to Kemkas.Web/frontend/src/first-edition/domain-models/tulajdonsag.ts
diff --git a/frontend/src/first-edition/pages/.gitignore b/Kemkas.Web/frontend/src/first-edition/pages/.gitignore
similarity index 100%
rename from frontend/src/first-edition/pages/.gitignore
rename to Kemkas.Web/frontend/src/first-edition/pages/.gitignore
diff --git a/frontend/src/first-edition/pages/CreateCharacter.less b/Kemkas.Web/frontend/src/first-edition/pages/CreateCharacter.less
similarity index 100%
rename from frontend/src/first-edition/pages/CreateCharacter.less
rename to Kemkas.Web/frontend/src/first-edition/pages/CreateCharacter.less
diff --git a/frontend/src/first-edition/pages/CreateCharacter.tsx b/Kemkas.Web/frontend/src/first-edition/pages/CreateCharacter.tsx
similarity index 100%
rename from frontend/src/first-edition/pages/CreateCharacter.tsx
rename to Kemkas.Web/frontend/src/first-edition/pages/CreateCharacter.tsx
diff --git a/frontend/src/first-edition/pdf/character.pdf.ts b/Kemkas.Web/frontend/src/first-edition/pdf/character.pdf.ts
similarity index 100%
rename from frontend/src/first-edition/pdf/character.pdf.ts
rename to Kemkas.Web/frontend/src/first-edition/pdf/character.pdf.ts
diff --git a/frontend/src/first-edition/pdf/fegyverek.pdf.ts b/Kemkas.Web/frontend/src/first-edition/pdf/fegyverek.pdf.ts
similarity index 100%
rename from frontend/src/first-edition/pdf/fegyverek.pdf.ts
rename to Kemkas.Web/frontend/src/first-edition/pdf/fegyverek.pdf.ts
diff --git a/frontend/src/first-edition/pdf/karakter_pdf_view.ts b/Kemkas.Web/frontend/src/first-edition/pdf/karakter_pdf_view.ts
similarity index 100%
rename from frontend/src/first-edition/pdf/karakter_pdf_view.ts
rename to Kemkas.Web/frontend/src/first-edition/pdf/karakter_pdf_view.ts
diff --git a/frontend/src/first-edition/pdf/magic.pdf.ts b/Kemkas.Web/frontend/src/first-edition/pdf/magic.pdf.ts
similarity index 100%
rename from frontend/src/first-edition/pdf/magic.pdf.ts
rename to Kemkas.Web/frontend/src/first-edition/pdf/magic.pdf.ts
diff --git a/frontend/src/first-edition/pdf/masodlagos_ertekek.pdf.ts b/Kemkas.Web/frontend/src/first-edition/pdf/masodlagos_ertekek.pdf.ts
similarity index 100%
rename from frontend/src/first-edition/pdf/masodlagos_ertekek.pdf.ts
rename to Kemkas.Web/frontend/src/first-edition/pdf/masodlagos_ertekek.pdf.ts
diff --git a/frontend/src/first-edition/pdf/mentok.pdf.ts b/Kemkas.Web/frontend/src/first-edition/pdf/mentok.pdf.ts
similarity index 100%
rename from frontend/src/first-edition/pdf/mentok.pdf.ts
rename to Kemkas.Web/frontend/src/first-edition/pdf/mentok.pdf.ts
diff --git a/frontend/src/first-edition/pdf/osztaly_skills.ts b/Kemkas.Web/frontend/src/first-edition/pdf/osztaly_skills.ts
similarity index 100%
rename from frontend/src/first-edition/pdf/osztaly_skills.ts
rename to Kemkas.Web/frontend/src/first-edition/pdf/osztaly_skills.ts
diff --git a/frontend/src/first-edition/pdf/osztaly_specials.pdf.ts b/Kemkas.Web/frontend/src/first-edition/pdf/osztaly_specials.pdf.ts
similarity index 100%
rename from frontend/src/first-edition/pdf/osztaly_specials.pdf.ts
rename to Kemkas.Web/frontend/src/first-edition/pdf/osztaly_specials.pdf.ts
diff --git a/frontend/src/first-edition/pdf/tulajdonsagok.pdf.ts b/Kemkas.Web/frontend/src/first-edition/pdf/tulajdonsagok.pdf.ts
similarity index 100%
rename from frontend/src/first-edition/pdf/tulajdonsagok.pdf.ts
rename to Kemkas.Web/frontend/src/first-edition/pdf/tulajdonsagok.pdf.ts
diff --git a/frontend/src/index.css b/Kemkas.Web/frontend/src/index.css
similarity index 100%
rename from frontend/src/index.css
rename to Kemkas.Web/frontend/src/index.css
diff --git a/frontend/src/index.tsx b/Kemkas.Web/frontend/src/index.tsx
similarity index 100%
rename from frontend/src/index.tsx
rename to Kemkas.Web/frontend/src/index.tsx
diff --git a/frontend/src/react-app-env.d.ts b/Kemkas.Web/frontend/src/react-app-env.d.ts
similarity index 100%
rename from frontend/src/react-app-env.d.ts
rename to Kemkas.Web/frontend/src/react-app-env.d.ts
diff --git a/frontend/src/reportWebVitals.ts b/Kemkas.Web/frontend/src/reportWebVitals.ts
similarity index 100%
rename from frontend/src/reportWebVitals.ts
rename to Kemkas.Web/frontend/src/reportWebVitals.ts
diff --git a/Kemkas.Web/frontend/src/setupProxy.js b/Kemkas.Web/frontend/src/setupProxy.js
new file mode 100644
index 0000000..f352d2d
--- /dev/null
+++ b/Kemkas.Web/frontend/src/setupProxy.js
@@ -0,0 +1,36 @@
+const { createProxyMiddleware } = require('http-proxy-middleware');
+const { env } = require('process');
+
+const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_HTTPS_PORT}` :
+ env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(';')[0] : 'http://localhost:40870';
+
+const context = [
+ "/weatherforecast",
+ "/_configuration",
+ "/.well-known",
+ "/Identity",
+ "/connect",
+ "/ApplyDatabaseMigrations",
+ "/_framework"
+];
+
+const onError = (err, req, resp, target) => {
+ console.error(`${err.message}`);
+}
+
+module.exports = function (app) {
+ const appProxy = createProxyMiddleware(context, {
+ target: target,
+ // Handle errors to prevent the proxy middleware from crashing when
+ // the ASP NET Core webserver is unavailable
+ onError: onError,
+ secure: false,
+ // Uncomment this line to add support for proxying websockets
+ //ws: true,
+ headers: {
+ Connection: 'Keep-Alive'
+ }
+ });
+
+ app.use(appProxy);
+};
diff --git a/Kemkas.Web/frontend/src/setupTests.ts b/Kemkas.Web/frontend/src/setupTests.ts
new file mode 100644
index 0000000..5030fa8
--- /dev/null
+++ b/Kemkas.Web/frontend/src/setupTests.ts
@@ -0,0 +1,31 @@
+// jest-dom adds custom jest matchers for asserting on DOM nodes.
+// allows you to do things like:
+// expect(element).toHaveTextContent(/react/i)
+// learn more: https://github.com/testing-library/jest-dom
+import '@testing-library/jest-dom';
+
+const localStorageMock = {
+ getItem: jest.fn(),
+ setItem: jest.fn(),
+ removeItem: jest.fn(),
+ clear: jest.fn(),
+ length: 0,
+ key: jest.fn()
+};
+global.localStorage = localStorageMock;
+
+// Mock the request issued by the react app to get the client configuration parameters.
+window.fetch = () => {
+ return Promise.resolve(
+ {
+ ok: true,
+ json: () => Promise.resolve({
+ "authority": "https://localhost:7251",
+ "client_id": "Kemkas.Web",
+ "redirect_uri": "https://localhost:7251/authentication/login-callback",
+ "post_logout_redirect_uri": "https://localhost:7251/authentication/logout-callback",
+ "response_type": "id_token token",
+ "scope": "Kemkas.WebAPI openid profile"
+ })
+ });
+};
diff --git a/frontend/src/util.ts b/Kemkas.Web/frontend/src/util.ts
similarity index 100%
rename from frontend/src/util.ts
rename to Kemkas.Web/frontend/src/util.ts
diff --git a/frontend/tsconfig.json b/Kemkas.Web/frontend/tsconfig.json
similarity index 100%
rename from frontend/tsconfig.json
rename to Kemkas.Web/frontend/tsconfig.json
diff --git a/frontend/yarn.lock b/Kemkas.Web/frontend/yarn.lock
similarity index 99%
rename from frontend/yarn.lock
rename to Kemkas.Web/frontend/yarn.lock
index fbdcc1f..21b212b 100644
--- a/frontend/yarn.lock
+++ b/Kemkas.Web/frontend/yarn.lock
@@ -2747,7 +2747,7 @@ acorn-walk@^7.1.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-acorn@^7.1.1:
+acorn@^7.1.1, acorn@^7.4.1:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
@@ -3184,6 +3184,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+base64-js@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
batch@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
@@ -3644,6 +3649,11 @@ core-js@^3.19.2:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.31.1.tgz#f2b0eea9be9da0def2c5fece71064a7e5d687653"
integrity sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==
+core-js@^3.8.3:
+ version "3.33.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.1.tgz#ef3766cfa382482d0a2c2bc5cb52c6d88805da52"
+ integrity sha512-qVSq3s+d4+GsqN0teRCJtM6tdEEXyWxjzbhVrCHmBS5ZTM0FS2MOS0D13dUXAWDUN6a+lHI/N1hF9Ytz6iLl9Q==
+
core-util-is@~1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
@@ -3671,7 +3681,14 @@ cosmiconfig@^7.0.0:
path-type "^4.0.0"
yaml "^1.10.0"
-cross-spawn@^7.0.2, cross-spawn@^7.0.3:
+cross-env@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
+ dependencies:
+ cross-spawn "^7.0.1"
+
+cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -3680,6 +3697,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
+crypto-js@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631"
+ integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==
+
crypto-random-string@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
@@ -5313,7 +5335,7 @@ http-proxy-agent@^4.0.1:
agent-base "6"
debug "4"
-http-proxy-middleware@^2.0.3:
+http-proxy-middleware@^2.0.3, http-proxy-middleware@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f"
integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==
@@ -6303,6 +6325,11 @@ jiti@^1.18.2:
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.1.tgz#fa99e4b76a23053e0e7cde098efe1704a14c16f1"
integrity sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==
+jquery@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de"
+ integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -6677,6 +6704,11 @@ merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+merge@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98"
+ integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==
+
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
@@ -6979,6 +7011,17 @@ obuf@^1.0.0, obuf@^1.1.2:
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
+oidc-client@^1.11.5:
+ version "1.11.5"
+ resolved "https://registry.yarnpkg.com/oidc-client/-/oidc-client-1.11.5.tgz#020aa193d68a3e1f87a24fcbf50073b738de92bb"
+ integrity sha512-LcKrKC8Av0m/KD/4EFmo9Sg8fSQ+WFJWBrmtWd+tZkNn3WT/sQG3REmPANE9tzzhbjW6VkTNy4xhAXCfPApAOg==
+ dependencies:
+ acorn "^7.4.1"
+ base64-js "^1.5.1"
+ core-js "^3.8.3"
+ crypto-js "^4.0.0"
+ serialize-javascript "^4.0.0"
+
on-finished@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
@@ -9672,7 +9715,7 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
-workbox-background-sync@6.6.1:
+workbox-background-sync@6.6.1, workbox-background-sync@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz#08d603a33717ce663e718c30cc336f74909aff2f"
integrity sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg==
@@ -9680,7 +9723,7 @@ workbox-background-sync@6.6.1:
idb "^7.0.1"
workbox-core "6.6.1"
-workbox-broadcast-update@6.6.1:
+workbox-broadcast-update@6.6.1, workbox-broadcast-update@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.6.1.tgz#0fad9454cf8e4ace0c293e5617c64c75d8a8c61e"
integrity sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ==
@@ -9730,19 +9773,19 @@ workbox-build@6.6.1:
workbox-sw "6.6.1"
workbox-window "6.6.1"
-workbox-cacheable-response@6.6.1:
+workbox-cacheable-response@6.6.1, workbox-cacheable-response@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.6.1.tgz#284c2b86be3f4fd191970ace8c8e99797bcf58e9"
integrity sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag==
dependencies:
workbox-core "6.6.1"
-workbox-core@6.6.1:
+workbox-core@6.6.1, workbox-core@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.6.1.tgz#7184776d4134c5ed2f086878c882728fc9084265"
integrity sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw==
-workbox-expiration@6.6.1:
+workbox-expiration@6.6.1, workbox-expiration@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.6.1.tgz#a841fa36676104426dbfb9da1ef6a630b4f93739"
integrity sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A==
@@ -9750,7 +9793,7 @@ workbox-expiration@6.6.1:
idb "^7.0.1"
workbox-core "6.6.1"
-workbox-google-analytics@6.6.1:
+workbox-google-analytics@6.6.1, workbox-google-analytics@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.6.1.tgz#a07a6655ab33d89d1b0b0a935ffa5dea88618c5d"
integrity sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA==
@@ -9760,14 +9803,14 @@ workbox-google-analytics@6.6.1:
workbox-routing "6.6.1"
workbox-strategies "6.6.1"
-workbox-navigation-preload@6.6.1:
+workbox-navigation-preload@6.6.1, workbox-navigation-preload@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.6.1.tgz#61a34fe125558dd88cf09237f11bd966504ea059"
integrity sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA==
dependencies:
workbox-core "6.6.1"
-workbox-precaching@6.6.1:
+workbox-precaching@6.6.1, workbox-precaching@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.6.1.tgz#dedeeba10a2d163d990bf99f1c2066ac0d1a19e2"
integrity sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A==
@@ -9776,7 +9819,7 @@ workbox-precaching@6.6.1:
workbox-routing "6.6.1"
workbox-strategies "6.6.1"
-workbox-range-requests@6.6.1:
+workbox-range-requests@6.6.1, workbox-range-requests@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.6.1.tgz#ddaf7e73af11d362fbb2f136a9063a4c7f507a39"
integrity sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g==
@@ -9795,21 +9838,21 @@ workbox-recipes@6.6.1:
workbox-routing "6.6.1"
workbox-strategies "6.6.1"
-workbox-routing@6.6.1:
+workbox-routing@6.6.1, workbox-routing@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.6.1.tgz#cba9a1c7e0d1ea11e24b6f8c518840efdc94f581"
integrity sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg==
dependencies:
workbox-core "6.6.1"
-workbox-strategies@6.6.1:
+workbox-strategies@6.6.1, workbox-strategies@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.6.1.tgz#38d0f0fbdddba97bd92e0c6418d0b1a2ccd5b8bf"
integrity sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw==
dependencies:
workbox-core "6.6.1"
-workbox-streams@6.6.1:
+workbox-streams@6.6.1, workbox-streams@^6.5.4:
version "6.6.1"
resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.6.1.tgz#b2f7ba7b315c27a6e3a96a476593f99c5d227d26"
integrity sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q==
diff --git a/Kemkas.sln b/Kemkas.sln
new file mode 100644
index 0000000..4925aa5
--- /dev/null
+++ b/Kemkas.sln
@@ -0,0 +1,16 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kemkas.Web", "Kemkas.Web\Kemkas.Web.csproj", "{ABAEE4DC-1A07-40AE-A2B6-4D3755A6C1E8}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {ABAEE4DC-1A07-40AE-A2B6-4D3755A6C1E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ABAEE4DC-1A07-40AE-A2B6-4D3755A6C1E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ABAEE4DC-1A07-40AE-A2B6-4D3755A6C1E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ABAEE4DC-1A07-40AE-A2B6-4D3755A6C1E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/Kemkas.sln.DotSettings b/Kemkas.sln.DotSettings
new file mode 100644
index 0000000..518cbb5
--- /dev/null
+++ b/Kemkas.sln.DotSettings
@@ -0,0 +1,2 @@
+
+ True
\ No newline at end of file
diff --git a/frontend/src/setupTests.ts b/frontend/src/setupTests.ts
deleted file mode 100644
index 8f2609b..0000000
--- a/frontend/src/setupTests.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-// jest-dom adds custom jest matchers for asserting on DOM nodes.
-// allows you to do things like:
-// expect(element).toHaveTextContent(/react/i)
-// learn more: https://github.com/testing-library/jest-dom
-import '@testing-library/jest-dom';