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 @@ + +
+
+ + Username + + +
+
+ + Enter your password + + + +
+
+ +
+
+ \ 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 @@ -
-
- - Username - - -
-
- - Enter your password - - - -
-
- -
-
\ 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;" },