diff --git a/.idea/.idea.DotNetAngular/.idea/shelf/Uncommitted_changes_before_Update_at_09_03_26,_12_36_[Changes]/shelved.patch b/.idea/.idea.DotNetAngular/.idea/shelf/Uncommitted_changes_before_Update_at_09_03_26,_12_36_[Changes]/shelved.patch
new file mode 100644
index 0000000..16c6cd1
--- /dev/null
+++ b/.idea/.idea.DotNetAngular/.idea/shelf/Uncommitted_changes_before_Update_at_09_03_26,_12_36_[Changes]/shelved.patch
@@ -0,0 +1,132 @@
+Index: .idea/.idea.DotNetAngular/.idea/workspace.xml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\n\n \n src/API/API.csproj\n src/API/API.csproj\n src/API/API.csproj\n src/API/API.csproj\n tests/Application.FunctionalTest/Application.FunctionalTest.csproj\n tests/Application.UnitTest/Application.UnitTest.csproj\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n "associatedIndex": 5\n}\n \n \n \n \n \n {\n "keyToString": {\n ".NET Launch Settings Profile.API: Angular_dev.executor": "Run",\n "RunOnceActivity.MCP Project settings loaded": "true",\n "RunOnceActivity.ShowReadmeOnStart": "true",\n "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",\n "RunOnceActivity.git.unshallow": "true",\n "RunOnceActivity.typescript.service.memoryLimit.init": "true",\n "com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",\n "git-widget-placeholder": "feature/dotnet",\n "junie.onboarding.icon.badge.shown": "true",\n "node.js.detected.package.eslint": "true",\n "node.js.detected.package.tslint": "true",\n "node.js.selected.package.eslint": "(autodetect)",\n "node.js.selected.package.tslint": "(autodetect)",\n "nodejs_package_manager_path": "npm",\n "settings.editor.selected.configurable": "vcs.Git",\n "to.speed.mode.migration.done": "true",\n "ts.external.directory.path": "/home/natlinux/RiderProjects/DotNetAngular/src/ClientApp/node_modules/typescript/lib",\n "vue.rearranger.settings.migration": "true"\n }\n}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1770053658274\n \n \n 1770053658274\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1770055164655\n \n \n \n 1770055164655\n \n \n \n 1770057870215\n \n \n \n 1770057870215\n \n \n \n 1770306489835\n \n \n \n 1770306489835\n \n \n \n 1770318472632\n \n \n \n 1770318472632\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/.idea/.idea.DotNetAngular/.idea/workspace.xml b/.idea/.idea.DotNetAngular/.idea/workspace.xml
+--- a/.idea/.idea.DotNetAngular/.idea/workspace.xml (revision ecf84016dc7fd2341fe75bd2c4113cd2d61e90be)
++++ b/.idea/.idea.DotNetAngular/.idea/workspace.xml (date 1773056189207)
+@@ -12,70 +12,7 @@
+
+
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
++
+
+
+
+@@ -113,28 +50,28 @@
+
+
+
+- {
+- "keyToString": {
+- ".NET Launch Settings Profile.API: Angular_dev.executor": "Run",
+- "RunOnceActivity.MCP Project settings loaded": "true",
+- "RunOnceActivity.ShowReadmeOnStart": "true",
+- "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
+- "RunOnceActivity.git.unshallow": "true",
+- "RunOnceActivity.typescript.service.memoryLimit.init": "true",
+- "com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
+- "git-widget-placeholder": "feature/dotnet",
+- "junie.onboarding.icon.badge.shown": "true",
+- "node.js.detected.package.eslint": "true",
+- "node.js.detected.package.tslint": "true",
+- "node.js.selected.package.eslint": "(autodetect)",
+- "node.js.selected.package.tslint": "(autodetect)",
+- "nodejs_package_manager_path": "npm",
+- "settings.editor.selected.configurable": "vcs.Git",
+- "to.speed.mode.migration.done": "true",
+- "ts.external.directory.path": "/home/natlinux/RiderProjects/DotNetAngular/src/ClientApp/node_modules/typescript/lib",
+- "vue.rearranger.settings.migration": "true"
++
++}]]>
+
+
+
diff --git a/.idea/.idea.DotNetAngular/.idea/shelf/Uncommitted_changes_before_Update_at_09_03_26,_12_36_[Changes]1/shelved.patch b/.idea/.idea.DotNetAngular/.idea/shelf/Uncommitted_changes_before_Update_at_09_03_26,_12_36_[Changes]1/shelved.patch
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/.idea.DotNetAngular/.idea/shelf/Uncommitted_changes_before_Update_at_09_03_26__12_36__Changes_.xml b/.idea/.idea.DotNetAngular/.idea/shelf/Uncommitted_changes_before_Update_at_09_03_26__12_36__Changes_.xml
new file mode 100644
index 0000000..a2e8c96
--- /dev/null
+++ b/.idea/.idea.DotNetAngular/.idea/shelf/Uncommitted_changes_before_Update_at_09_03_26__12_36__Changes_.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.DotNetAngular/.idea/workspace.xml b/.idea/.idea.DotNetAngular/.idea/workspace.xml
index 857f9d3..d892ab8 100644
--- a/.idea/.idea.DotNetAngular/.idea/workspace.xml
+++ b/.idea/.idea.DotNetAngular/.idea/workspace.xml
@@ -13,8 +13,7 @@
-
-
+
@@ -37,6 +36,7 @@
+
@@ -53,28 +53,28 @@
- {
- "keyToString": {
- ".NET Launch Settings Profile.API: Angular_dev.executor": "Run",
- "RunOnceActivity.MCP Project settings loaded": "true",
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
- "RunOnceActivity.git.unshallow": "true",
- "RunOnceActivity.typescript.service.memoryLimit.init": "true",
- "com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
- "git-widget-placeholder": "develop",
- "junie.onboarding.icon.badge.shown": "true",
- "node.js.detected.package.eslint": "true",
- "node.js.detected.package.tslint": "true",
- "node.js.selected.package.eslint": "(autodetect)",
- "node.js.selected.package.tslint": "(autodetect)",
- "nodejs_package_manager_path": "npm",
- "settings.editor.selected.configurable": "preferences.pluginManager",
- "to.speed.mode.migration.done": "true",
- "ts.external.directory.path": "/home/natlinux/RiderProjects/DotNetAngular/src/ClientApp/node_modules/typescript/lib",
- "vue.rearranger.settings.migration": "true"
+
+}]]>
diff --git a/dotnet-tools.json b/dotnet-tools.json
new file mode 100644
index 0000000..b778d1d
--- /dev/null
+++ b/dotnet-tools.json
@@ -0,0 +1,13 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "dotnet-ef": {
+ "version": "10.0.4",
+ "commands": [
+ "dotnet-ef"
+ ],
+ "rollForward": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/ClientApp/angular.json b/src/ClientApp/angular.json
index c8054bc..a04174d 100644
--- a/src/ClientApp/angular.json
+++ b/src/ClientApp/angular.json
@@ -64,8 +64,8 @@
"sourceMap": true,
"fileReplacements": [
{
- "replace": "src/environments/environment.development.ts",
- "with": "src/environments/environment.prod.ts"
+ "replace": "src/environments/environment.ts",
+ "with": "src/environments/environment.development.ts"
}
]
}
diff --git a/src/ClientApp/src/app/app.routes.ts b/src/ClientApp/src/app/app.routes.ts
index 60b404a..b6cbab6 100644
--- a/src/ClientApp/src/app/app.routes.ts
+++ b/src/ClientApp/src/app/app.routes.ts
@@ -1,9 +1,11 @@
import { Routes } from '@angular/router';
import {RegisterComponent} from "./presentation/authentication/register/register.component";
import {LoginComponent} from "./presentation/authentication/login/login.component";
+import {StartpageComponent} from "./presentation/components/startpage/startpage.component";
export const routes: Routes = [
{path: '', redirectTo: 'login', pathMatch: 'full'},
{path: 'register', component: RegisterComponent},
- {path: 'login', component: LoginComponent}
+ {path: 'login', component: LoginComponent},
+ {path: 'startpage', component: StartpageComponent}
];
diff --git a/src/ClientApp/src/app/presentation/authentication/login/login.component.ts b/src/ClientApp/src/app/presentation/authentication/login/login.component.ts
index 176c90a..b18df35 100644
--- a/src/ClientApp/src/app/presentation/authentication/login/login.component.ts
+++ b/src/ClientApp/src/app/presentation/authentication/login/login.component.ts
@@ -66,7 +66,7 @@ export class LoginComponent {
this.userStore.setEmailForStore(tokenPayload.email);
this.userStore.setRoleForStore(tokenPayload.role);
this.loadingService.hide()
- this.router.navigate(['rss-feed-overview']).then(success => {
+ this.router.navigate(['startpage']).then(success => {
if (success) {
this.loginForm.reset();
}
diff --git a/src/ClientApp/src/app/presentation/components/startpage/startpage.component.html b/src/ClientApp/src/app/presentation/components/startpage/startpage.component.html
new file mode 100644
index 0000000..f79decd
--- /dev/null
+++ b/src/ClientApp/src/app/presentation/components/startpage/startpage.component.html
@@ -0,0 +1 @@
+startpage works!
diff --git a/src/ClientApp/src/app/presentation/components/startpage/startpage.component.scss b/src/ClientApp/src/app/presentation/components/startpage/startpage.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/ClientApp/src/app/presentation/components/startpage/startpage.component.spec.ts b/src/ClientApp/src/app/presentation/components/startpage/startpage.component.spec.ts
new file mode 100644
index 0000000..2c31111
--- /dev/null
+++ b/src/ClientApp/src/app/presentation/components/startpage/startpage.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { StartpageComponent } from './startpage.component';
+
+describe('StartpageComponent', () => {
+ let component: StartpageComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [StartpageComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(StartpageComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/ClientApp/src/app/presentation/components/startpage/startpage.component.ts b/src/ClientApp/src/app/presentation/components/startpage/startpage.component.ts
new file mode 100644
index 0000000..3b3575d
--- /dev/null
+++ b/src/ClientApp/src/app/presentation/components/startpage/startpage.component.ts
@@ -0,0 +1,11 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'app-startpage',
+ imports: [],
+ templateUrl: './startpage.component.html',
+ styleUrl: './startpage.component.scss',
+})
+export class StartpageComponent {
+
+}
diff --git a/src/Infrastructure/Migrations/20260311163032_NewMigration.Designer.cs b/src/Infrastructure/Migrations/20260311163032_NewMigration.Designer.cs
new file mode 100644
index 0000000..5b32713
--- /dev/null
+++ b/src/Infrastructure/Migrations/20260311163032_NewMigration.Designer.cs
@@ -0,0 +1,185 @@
+//
+using System;
+using Infrastructure.Context;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace Infrastructure.Migrations
+{
+ [DbContext(typeof(ApplicationDbContext))]
+ [Migration("20260311163032_NewMigration")]
+ partial class NewMigration
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "10.0.3")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("Domain.Entities.Role", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Roles", "auth");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Name = "SuperAdmin"
+ },
+ new
+ {
+ Id = 2,
+ Name = "Admin"
+ },
+ new
+ {
+ Id = 3,
+ Name = "User"
+ });
+ });
+
+ modelBuilder.Entity("Domain.Entities.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Email")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)")
+ .HasAnnotation("RegularExpression", "^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
+
+ b.Property("LastLogin")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasMaxLength(250)
+ .HasColumnType("varchar(250)");
+
+ b.Property("RefreshToken")
+ .HasColumnType("text");
+
+ b.Property("RefreshTokenExpiryTime")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("ResetPasswordToken")
+ .HasColumnType("text");
+
+ b.Property("ResetPasswordTokenExpiryTime")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Users", "auth");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Email = "superadmin@wenske-services-development.de",
+ LastLogin = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Password = "AQAAAAIAAYagAAAAEADJEu1s5qUJyP4gDUrBGyqSNtKU2IKBpZm0JqfyvOkJnqVeOHZBUrEhNr7IdQRDBQ==",
+ ResetPasswordTokenExpiryTime = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Username = "Superadmin"
+ },
+ new
+ {
+ Id = 2,
+ Email = "admin@wenske-services-development.de",
+ LastLogin = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Password = "AQAAAAIAAYagAAAAEIOUiJUfMrM1Lpt4Ae3FLQOB/Bk6WHtndRAWUp132afVunMvRqkT6Hhh+27kkNW8YQ==",
+ ResetPasswordTokenExpiryTime = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
+ Username = "Admin"
+ });
+ });
+
+ modelBuilder.Entity("Domain.Entities.UserRole", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.Property("RoleId")
+ .HasColumnType("integer");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("UserRoles", "auth");
+
+ b.HasData(
+ new
+ {
+ UserId = 1,
+ RoleId = 1
+ },
+ new
+ {
+ UserId = 2,
+ RoleId = 2
+ });
+ });
+
+ modelBuilder.Entity("Domain.Entities.UserRole", b =>
+ {
+ b.HasOne("Domain.Entities.Role", "Role")
+ .WithMany("UserRoles")
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Domain.Entities.User", "User")
+ .WithMany("UserRoles")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Role");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("Domain.Entities.Role", b =>
+ {
+ b.Navigation("UserRoles");
+ });
+
+ modelBuilder.Entity("Domain.Entities.User", b =>
+ {
+ b.Navigation("UserRoles");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/src/Infrastructure/Migrations/20260311163032_NewMigration.cs b/src/Infrastructure/Migrations/20260311163032_NewMigration.cs
new file mode 100644
index 0000000..077c82a
--- /dev/null
+++ b/src/Infrastructure/Migrations/20260311163032_NewMigration.cs
@@ -0,0 +1,50 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Infrastructure.Migrations
+{
+ ///
+ public partial class NewMigration : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.UpdateData(
+ schema: "auth",
+ table: "Users",
+ keyColumn: "Id",
+ keyValue: 1,
+ columns: new[] { "Email", "Password" },
+ values: new object[] { "superadmin@wenske-services-development.de", "AQAAAAIAAYagAAAAEADJEu1s5qUJyP4gDUrBGyqSNtKU2IKBpZm0JqfyvOkJnqVeOHZBUrEhNr7IdQRDBQ==" });
+
+ migrationBuilder.UpdateData(
+ schema: "auth",
+ table: "Users",
+ keyColumn: "Id",
+ keyValue: 2,
+ columns: new[] { "Email", "Password" },
+ values: new object[] { "admin@wenske-services-development.de", "AQAAAAIAAYagAAAAEIOUiJUfMrM1Lpt4Ae3FLQOB/Bk6WHtndRAWUp132afVunMvRqkT6Hhh+27kkNW8YQ==" });
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.UpdateData(
+ schema: "auth",
+ table: "Users",
+ keyColumn: "Id",
+ keyValue: 1,
+ columns: new[] { "Email", "Password" },
+ values: new object[] { "admin@rss.wenske-services-development.de", "AQAAAAIAAYagAAAAELBxAsYVTssn5taCQ7CMo+Mzn0i87Jt8ZXJTe7cgG5hfN3wDJzIkQaotyFhM/mQGaQ==" });
+
+ migrationBuilder.UpdateData(
+ schema: "auth",
+ table: "Users",
+ keyColumn: "Id",
+ keyValue: 2,
+ columns: new[] { "Email", "Password" },
+ values: new object[] { "info@rss.wenske-services-development.de", "AQAAAAIAAYagAAAAEP0NWiTTz20doMf/KL0WkBR+5roc5KTouMrfiHk2MMXOQn+E+C5Q4dqWD7PnNoxUmQ==" });
+ }
+ }
+}