diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.html b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.html
index fc4a82b7..03baa208 100644
--- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.html
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.html
@@ -1,101 +1,4 @@
-
-
-
-
-
-
- @for (item of [
- { title: 'Explore Digital Data', link: 'https://digitaldata.works/' },
- { title: 'Learn signFlow', link: '/' },
- { title: 'API Docs', link: '/' },
- ]; track item.title) {
-
- {{ item.title }}
-
-
- }
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.scss b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.scss
index 61a75768..004806c6 100644
--- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.scss
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.scss
@@ -1,174 +1,11 @@
- :host {
- --bright-blue: oklch(51.01% 0.274 263.83);
- --electric-violet: oklch(53.18% 0.28 296.97);
- --french-violet: oklch(47.66% 0.246 305.88);
- --vivid-pink: oklch(69.02% 0.277 332.77);
- --hot-red: oklch(61.42% 0.238 15.34);
- --orange-red: oklch(63.32% 0.24 31.68);
+main {
+ width: 100%;
+ min-height: calc(100% - 4rem);
+ padding: 0;
+ margin: 0;
+ display: grid;
+}
- --gray-900: oklch(19.37% 0.006 300.98);
- --gray-700: oklch(36.98% 0.014 302.71);
- --gray-400: oklch(70.9% 0.015 304.04);
-
- --red-to-pink-to-purple-vertical-gradient: linear-gradient(180deg,
- var(--orange-red) 0%,
- var(--vivid-pink) 50%,
- var(--electric-violet) 100%);
-
- --red-to-pink-to-purple-horizontal-gradient: linear-gradient(90deg,
- var(--orange-red) 0%,
- var(--vivid-pink) 50%,
- var(--electric-violet) 100%);
-
- --pill-accent: var(--bright-blue);
-
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
- Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
- "Segoe UI Symbol";
- box-sizing: border-box;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- }
-
- h1 {
- font-size: 3.125rem;
- color: var(--gray-900);
- font-weight: 500;
- line-height: 100%;
- letter-spacing: -0.125rem;
- margin: 0;
- font-family: "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
- Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
- "Segoe UI Symbol";
- }
-
- p {
- margin: 0;
- color: var(--gray-700);
- }
-
- main {
- width: 100%;
- min-height: calc(100% - 4rem);
- display: flex;
- justify-content: center;
- align-items: center;
- padding: 1rem;
- box-sizing: inherit;
- position: relative;
- }
-
- .angular-logo {
- max-width: 9.2rem;
- }
-
- .content {
- display: flex;
- justify-content: space-around;
- width: 100%;
- max-width: 700px;
- margin-bottom: 3rem;
- }
-
- .content h1 {
- margin-top: 1.75rem;
- }
-
- .content p {
- margin-top: 1.5rem;
- }
-
- .divider {
- width: 1px;
- background: var(--red-to-pink-to-purple-vertical-gradient);
- margin-inline: 0.5rem;
- }
-
- .pill-group {
- display: flex;
- flex-direction: column;
- align-items: start;
- flex-wrap: wrap;
- gap: 1.25rem;
- }
-
- .pill {
- display: flex;
- align-items: center;
- --pill-accent: var(--bright-blue);
- background: color-mix(in srgb, var(--pill-accent) 5%, transparent);
- color: var(--pill-accent);
- padding-inline: 0.75rem;
- padding-block: 0.375rem;
- border-radius: 2.75rem;
- border: 0;
- transition: background 0.3s ease;
- font-family: var(--inter-font);
- font-size: 0.875rem;
- font-style: normal;
- font-weight: 500;
- line-height: 1.4rem;
- letter-spacing: -0.00875rem;
- text-decoration: none;
- }
-
- .pill:hover {
- background: color-mix(in srgb, var(--pill-accent) 15%, transparent);
- }
-
- .pill-group .pill:nth-child(6n + 1) {
- --pill-accent: var(--bright-blue);
- }
-
- .pill-group .pill:nth-child(6n + 2) {
- --pill-accent: var(--french-violet);
- }
-
- .pill-group .pill:nth-child(6n + 3),
- .pill-group .pill:nth-child(6n + 4),
- .pill-group .pill:nth-child(6n + 5) {
- --pill-accent: var(--hot-red);
- }
-
- .pill-group svg {
- margin-inline-start: 0.25rem;
- }
-
- .social-links {
- display: flex;
- align-items: center;
- gap: 0.73rem;
- margin-top: 1.5rem;
- }
-
- .social-links path {
- transition: fill 0.3s ease;
- fill: var(--gray-400);
- }
-
- .social-links a:hover svg path {
- fill: var(--gray-900);
- }
-
- @media screen and (max-width: 650px) {
- .content {
- flex-direction: column;
- width: max-content;
- }
-
- .divider {
- height: 1px;
- width: 100%;
- background: var(--red-to-pink-to-purple-horizontal-gradient);
- margin-block: 1.5rem;
- }
- }
-
- .sidenav-container {
- height: calc(100% - 64px); /* Toolbar yüksekliği */
- }
-
- .sidenav {
- margin-top: 64px; /* Toolbar yüksekliği */
- }
-
\ No newline at end of file
+router-outlet{
+ display: none;
+}
\ No newline at end of file
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.ts
index 61d28223..27728ca5 100644
--- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.ts
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.component.ts
@@ -1,14 +1,15 @@
import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
-import { NavbarComponent } from "./navbar/navbar.component";
-import { LoginComponent } from "./login/login.component";
+import { NavbarComponent } from "./components/navbar/navbar.component";
+import { LoginComponent } from "./components/login/login.component";
+import { HomeComponent } from "./components/home/home.component";
@Component({
selector: 'app-root',
standalone: true,
templateUrl: './app.component.html',
styleUrl: './app.component.scss',
- imports: [RouterOutlet, NavbarComponent, LoginComponent]
+ imports: [RouterOutlet, NavbarComponent, LoginComponent, HomeComponent]
})
export class AppComponent {
-}
+}
\ No newline at end of file
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.config.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.config.ts
index 98f2bd19..9399d16a 100644
--- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.config.ts
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.config.ts
@@ -6,11 +6,14 @@ import { provideAnimationsAsync } from '@angular/platform-browser/animations/asy
import { APP_BASE_HREF } from '@angular/common';
import { UrlService } from './services/url.service';
import { API_URL } from './tokens/index'
+import { provideHttpClient, withFetch } from '@angular/common/http';
+
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(routes),
provideClientHydration(),
provideAnimationsAsync(),
+ provideHttpClient(withFetch()),
{
provide: APP_BASE_HREF,
useFactory: (urlService: UrlService) => urlService.getBaseHref(),
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.routes.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.routes.ts
index 1b559c75..3b6d346c 100644
--- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.routes.ts
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/app.routes.ts
@@ -1,9 +1,9 @@
-// src/app/app-routing.module.ts
-import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
-import { LoginComponent } from './login/login.component';
-import { authGuard } from './guards/auth.guard';
-
+import { LoginComponent } from './components/login/login.component';
+import {EnvelopeTableComponent} from '../app/components/envelope-table/envelope-table.component'
+import {HomeComponent} from '../app/components/home/home.component'
export const routes: Routes = [
- { path: 'login', component: LoginComponent }
+ { path: '', component: HomeComponent },
+ { path: 'login', component: HomeComponent },
+ { path: 'envelope', component: EnvelopeTableComponent }
];
\ No newline at end of file
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.html b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.html
new file mode 100644
index 00000000..240b43b6
--- /dev/null
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.html
@@ -0,0 +1 @@
+
envelope-table works!
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.scss b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.spec.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.spec.ts
new file mode 100644
index 00000000..9e3b32ea
--- /dev/null
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { EnvelopeTableComponent } from './envelope-table.component';
+
+describe('EnvelopeTableComponent', () => {
+ let component: EnvelopeTableComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [EnvelopeTableComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(EnvelopeTableComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.ts
new file mode 100644
index 00000000..367e0a64
--- /dev/null
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.ts
@@ -0,0 +1,12 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'app-envelope-table',
+ standalone: true,
+ imports: [],
+ templateUrl: './envelope-table.component.html',
+ styleUrl: './envelope-table.component.scss'
+})
+export class EnvelopeTableComponent {
+
+}
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.html b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.html
new file mode 100644
index 00000000..a7b627a0
--- /dev/null
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ @for (item of [
+ { title: 'Explore Digital Data', link: 'https://digitaldata.works/' },
+ { title: 'Learn signFlow', link: '/' },
+ { title: 'API Docs', link: '/' },
+ ]; track item.title) {
+
+ {{ item.title }}
+
+
+ }
+
+
+
+
+
\ No newline at end of file
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.scss b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.scss
new file mode 100644
index 00000000..68af25ab
--- /dev/null
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.scss
@@ -0,0 +1,173 @@
+:host {
+ --bright-blue: oklch(51.01% 0.274 263.83);
+ --electric-violet: oklch(53.18% 0.28 296.97);
+ --french-violet: oklch(47.66% 0.246 305.88);
+ --vivid-pink: oklch(69.02% 0.277 332.77);
+ --hot-red: oklch(61.42% 0.238 15.34);
+ --orange-red: oklch(63.32% 0.24 31.68);
+
+ --gray-900: oklch(19.37% 0.006 300.98);
+ --gray-700: oklch(36.98% 0.014 302.71);
+ --gray-400: oklch(70.9% 0.015 304.04);
+
+ --red-to-pink-to-purple-vertical-gradient: linear-gradient(180deg,
+ var(--orange-red) 0%,
+ var(--vivid-pink) 50%,
+ var(--electric-violet) 100%);
+
+ --red-to-pink-to-purple-horizontal-gradient: linear-gradient(90deg,
+ var(--orange-red) 0%,
+ var(--vivid-pink) 50%,
+ var(--electric-violet) 100%);
+
+ --pill-accent: var(--bright-blue);
+
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
+ Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
+ "Segoe UI Symbol";
+ box-sizing: border-box;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+h1 {
+ font-size: 3.125rem;
+ color: var(--gray-900);
+ font-weight: 500;
+ line-height: 100%;
+ letter-spacing: -0.125rem;
+ margin: 0;
+ font-family: "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
+ Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
+ "Segoe UI Symbol";
+}
+
+p {
+ margin: 0;
+ color: var(--gray-700);
+}
+
+.main {
+ width: 100%;
+ min-height: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 1rem;
+ box-sizing: inherit;
+ position: relative;
+}
+
+.angular-logo {
+ max-width: 9.2rem;
+}
+
+.content {
+ display: flex;
+ justify-content: space-around;
+ width: 100%;
+ max-width: 700px;
+ margin-bottom: 3rem;
+}
+
+.content h1 {
+ margin-top: 1.75rem;
+}
+
+.content p {
+ margin-top: 1.5rem;
+}
+
+.divider {
+ width: 1px;
+ background: var(--red-to-pink-to-purple-vertical-gradient);
+ margin-inline: 0.5rem;
+}
+
+.pill-group {
+ display: flex;
+ flex-direction: column;
+ align-items: start;
+ flex-wrap: wrap;
+ gap: 1.25rem;
+}
+
+.pill {
+ display: flex;
+ align-items: center;
+ --pill-accent: var(--bright-blue);
+ background: color-mix(in srgb, var(--pill-accent) 5%, transparent);
+ color: var(--pill-accent);
+ padding-inline: 0.75rem;
+ padding-block: 0.375rem;
+ border-radius: 2.75rem;
+ border: 0;
+ transition: background 0.3s ease;
+ font-family: var(--inter-font);
+ font-size: 0.875rem;
+ font-style: normal;
+ font-weight: 500;
+ line-height: 1.4rem;
+ letter-spacing: -0.00875rem;
+ text-decoration: none;
+}
+
+.pill:hover {
+ background: color-mix(in srgb, var(--pill-accent) 15%, transparent);
+}
+
+.pill-group .pill:nth-child(6n + 1) {
+ --pill-accent: var(--bright-blue);
+}
+
+.pill-group .pill:nth-child(6n + 2) {
+ --pill-accent: var(--french-violet);
+}
+
+.pill-group .pill:nth-child(6n + 3),
+.pill-group .pill:nth-child(6n + 4),
+.pill-group .pill:nth-child(6n + 5) {
+ --pill-accent: var(--hot-red);
+}
+
+.pill-group svg {
+ margin-inline-start: 0.25rem;
+}
+
+.social-links {
+ display: flex;
+ align-items: center;
+ gap: 0.73rem;
+ margin-top: 1.5rem;
+}
+
+.social-links path {
+ transition: fill 0.3s ease;
+ fill: var(--gray-400);
+}
+
+.social-links a:hover svg path {
+ fill: var(--gray-900);
+}
+
+@media screen and (max-width: 650px) {
+ .content {
+ flex-direction: column;
+ width: max-content;
+ }
+
+ .divider {
+ height: 1px;
+ width: 100%;
+ background: var(--red-to-pink-to-purple-horizontal-gradient);
+ margin-block: 1.5rem;
+ }
+}
+
+.sidenav-container {
+ height: calc(100% - 64px); /* Toolbar yüksekliği */
+}
+
+.sidenav {
+ margin-top: 64px; /* Toolbar yüksekliği */
+}
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.spec.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.spec.ts
new file mode 100644
index 00000000..60c47c41
--- /dev/null
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { HomeComponent } from './home.component';
+
+describe('HomeComponent', () => {
+ let component: HomeComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [HomeComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(HomeComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.ts
new file mode 100644
index 00000000..05b66c38
--- /dev/null
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/home/home.component.ts
@@ -0,0 +1,13 @@
+import { Component } from '@angular/core';
+import { LoginComponent } from "../login/login.component";
+
+@Component({
+ selector: 'app-home',
+ standalone: true,
+ templateUrl: './home.component.html',
+ styleUrl: './home.component.scss',
+ imports: [LoginComponent]
+})
+export class HomeComponent {
+
+}
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/login/login.component.html b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/login/login.component.html
new file mode 100644
index 00000000..14f264a3
--- /dev/null
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/login/login.component.html
@@ -0,0 +1,23 @@
+
+
+
\ No newline at end of file
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/login/login.component.scss b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/login/login.component.scss
similarity index 100%
rename from EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/login/login.component.scss
rename to EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/login/login.component.scss
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/login/login.component.spec.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/login/login.component.spec.ts
similarity index 100%
rename from EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/login/login.component.spec.ts
rename to EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/login/login.component.spec.ts
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/login/login.component.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/login/login.component.ts
new file mode 100644
index 00000000..1a068741
--- /dev/null
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/login/login.component.ts
@@ -0,0 +1,47 @@
+import { Component } from '@angular/core';
+import { MatIconModule } from '@angular/material/icon';
+import { MatButtonModule } from '@angular/material/button';
+import { MatInputModule } from '@angular/material/input';
+import { MatFormFieldModule } from '@angular/material/form-field';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { AuthService } from '../../services/auth.service'
+import { Router } from '@angular/router';
+import { ReactiveFormsModule } from '@angular/forms';
+
+@Component({
+ selector: 'app-login',
+ standalone: true,
+ imports: [MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule, ReactiveFormsModule],
+ templateUrl: './login.component.html',
+ styleUrl: './login.component.scss'
+})
+export class LoginComponent {
+ hide = true;
+ loginForm: FormGroup;
+
+ constructor(private fb: FormBuilder, private authService: AuthService, private router: Router) {
+ this.loginForm = this.fb.group({
+ username: ['', Validators.required],
+ password: ['', Validators.required]
+ });
+ }
+
+ togglePWVisibility(event: MouseEvent) {
+ this.hide = !this.hide;
+ event.stopPropagation();
+ }
+
+ onSubmit() {
+ if (this.loginForm.valid) {
+ this.authService.login(this.loginForm.value).subscribe({
+ next: () => {
+ this.router.navigate(['/envelope']); // Adjust to your protected route
+ },
+ error: error => {
+ // Handle login error
+ console.error('Login failed', error);
+ }
+ });
+ }
+ }
+}
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/navbar/navbar.component.html b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/navbar/navbar.component.html
similarity index 100%
rename from EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/navbar/navbar.component.html
rename to EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/navbar/navbar.component.html
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/navbar/navbar.component.scss b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/navbar/navbar.component.scss
similarity index 100%
rename from EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/navbar/navbar.component.scss
rename to EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/navbar/navbar.component.scss
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/navbar/navbar.component.spec.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/navbar/navbar.component.spec.ts
similarity index 100%
rename from EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/navbar/navbar.component.spec.ts
rename to EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/navbar/navbar.component.spec.ts
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/navbar/navbar.component.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/navbar/navbar.component.ts
similarity index 100%
rename from EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/navbar/navbar.component.ts
rename to EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/navbar/navbar.component.ts
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/login/login.component.html b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/login/login.component.html
deleted file mode 100644
index 0ba1975a..00000000
--- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/login/login.component.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
\ No newline at end of file
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/login/login.component.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/login/login.component.ts
deleted file mode 100644
index 06b5b173..00000000
--- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/login/login.component.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Component } from '@angular/core';
-import { MatIconModule } from '@angular/material/icon';
-import { MatButtonModule } from '@angular/material/button';
-import { MatInputModule } from '@angular/material/input';
-import { MatFormFieldModule } from '@angular/material/form-field';
-
-@Component({
- selector: 'app-login',
- standalone: true,
- imports: [MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule],
- templateUrl: './login.component.html',
- styleUrl: './login.component.scss'
-})
-export class LoginComponent {
- hide = true;
- clickEvent(event: MouseEvent) {
- this.hide = !this.hide;
- event.stopPropagation();
- }
-}
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/auth.service.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/auth.service.ts
index d9496162..b49b66f7 100644
--- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/auth.service.ts
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/auth.service.ts
@@ -2,7 +2,7 @@ import { Injectable, inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { API_URL } from '../tokens/index';
-
+import { HttpClientModule } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/index.html b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/index.html
index fffc4c2a..3ccfbf81 100644
--- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/index.html
+++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/index.html
@@ -4,7 +4,7 @@
signFlow
-
+
diff --git a/EnvelopeGenerator.GeneratorAPI/Program.cs b/EnvelopeGenerator.GeneratorAPI/Program.cs
index e135f99e..c93be208 100644
--- a/EnvelopeGenerator.GeneratorAPI/Program.cs
+++ b/EnvelopeGenerator.GeneratorAPI/Program.cs
@@ -11,6 +11,21 @@ var config = builder.Configuration;
builder.Services.AddControllers();
+//CORS Policy
+var allowedOrigins = config.GetSection("AllowedOrigins").Get() ??
+ throw new InvalidOperationException("AllowedOrigins section is missing in the configuration.");
+builder.Services.AddCors(options =>
+ {
+ options.AddPolicy("AllowSpecificOriginsPolicy", builder =>
+ {
+ builder.WithOrigins(allowedOrigins)
+ .SetIsOriginAllowedToAllowWildcardSubdomains()
+ .AllowCredentials()
+ .AllowAnyMethod()
+ .AllowAnyHeader();
+ });
+ });
+
// Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
@@ -49,6 +64,9 @@ if (app.Environment.IsDevelopment())
app.UseSwaggerUI();
}
+// Set CORS policy
+app.UseCors("AllowSpecificOriginsPolicy");
+
// Localizer
app.UseCookieBasedLocalizer("de-DE", "en-US");
diff --git a/EnvelopeGenerator.GeneratorAPI/appsettings.json b/EnvelopeGenerator.GeneratorAPI/appsettings.json
index bd95de5c..0f469f84 100644
--- a/EnvelopeGenerator.GeneratorAPI/appsettings.json
+++ b/EnvelopeGenerator.GeneratorAPI/appsettings.json
@@ -6,6 +6,7 @@
}
},
"AllowedHosts": "*",
+ "AllowedOrigins": [ "http://localhost:4200" ],
"ConnectionStrings": {
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
},