From 3c559fee0ea06b0bc7e276d97ef8b2d160c887e5 Mon Sep 17 00:00:00 2001 From: Roman Nastyuk Date: Mon, 3 Mar 2025 17:36:22 +0200 Subject: [PATCH 1/5] moved components to the core/components folder --- src/app/{ => core/components}/footer/footer.component.html | 0 src/app/{ => core/components}/footer/footer.component.scss | 0 src/app/{ => core/components}/footer/footer.component.spec.ts | 0 src/app/{ => core/components}/footer/footer.component.ts | 0 src/app/{ => core/components}/header/header.component.html | 0 src/app/{ => core/components}/header/header.component.scss | 0 src/app/{ => core/components}/header/header.component.spec.ts | 0 src/app/{ => core/components}/header/header.component.ts | 0 .../components}/main-content/main-content.component.html | 2 +- .../components}/main-content/main-content.component.scss | 0 .../components}/main-content/main-content.component.spec.ts | 0 .../components}/main-content/main-content.component.ts | 3 ++- src/app/{ => core/components}/sidenav/sidenav.component.html | 0 src/app/{ => core/components}/sidenav/sidenav.component.scss | 0 .../{ => core/components}/sidenav/sidenav.component.spec.ts | 0 src/app/{ => core/components}/sidenav/sidenav.component.ts | 0 src/app/{ => core/components}/topnav/topnav.component.html | 0 src/app/{ => core/components}/topnav/topnav.component.scss | 0 src/app/{ => core/components}/topnav/topnav.component.spec.ts | 0 src/app/{ => core/components}/topnav/topnav.component.ts | 0 20 files changed, 3 insertions(+), 2 deletions(-) rename src/app/{ => core/components}/footer/footer.component.html (100%) rename src/app/{ => core/components}/footer/footer.component.scss (100%) rename src/app/{ => core/components}/footer/footer.component.spec.ts (100%) rename src/app/{ => core/components}/footer/footer.component.ts (100%) rename src/app/{ => core/components}/header/header.component.html (100%) rename src/app/{ => core/components}/header/header.component.scss (100%) rename src/app/{ => core/components}/header/header.component.spec.ts (100%) rename src/app/{ => core/components}/header/header.component.ts (100%) rename src/app/{ => core/components}/main-content/main-content.component.html (50%) rename src/app/{ => core/components}/main-content/main-content.component.scss (100%) rename src/app/{ => core/components}/main-content/main-content.component.spec.ts (100%) rename src/app/{ => core/components}/main-content/main-content.component.ts (69%) rename src/app/{ => core/components}/sidenav/sidenav.component.html (100%) rename src/app/{ => core/components}/sidenav/sidenav.component.scss (100%) rename src/app/{ => core/components}/sidenav/sidenav.component.spec.ts (100%) rename src/app/{ => core/components}/sidenav/sidenav.component.ts (100%) rename src/app/{ => core/components}/topnav/topnav.component.html (100%) rename src/app/{ => core/components}/topnav/topnav.component.scss (100%) rename src/app/{ => core/components}/topnav/topnav.component.spec.ts (100%) rename src/app/{ => core/components}/topnav/topnav.component.ts (100%) diff --git a/src/app/footer/footer.component.html b/src/app/core/components/footer/footer.component.html similarity index 100% rename from src/app/footer/footer.component.html rename to src/app/core/components/footer/footer.component.html diff --git a/src/app/footer/footer.component.scss b/src/app/core/components/footer/footer.component.scss similarity index 100% rename from src/app/footer/footer.component.scss rename to src/app/core/components/footer/footer.component.scss diff --git a/src/app/footer/footer.component.spec.ts b/src/app/core/components/footer/footer.component.spec.ts similarity index 100% rename from src/app/footer/footer.component.spec.ts rename to src/app/core/components/footer/footer.component.spec.ts diff --git a/src/app/footer/footer.component.ts b/src/app/core/components/footer/footer.component.ts similarity index 100% rename from src/app/footer/footer.component.ts rename to src/app/core/components/footer/footer.component.ts diff --git a/src/app/header/header.component.html b/src/app/core/components/header/header.component.html similarity index 100% rename from src/app/header/header.component.html rename to src/app/core/components/header/header.component.html diff --git a/src/app/header/header.component.scss b/src/app/core/components/header/header.component.scss similarity index 100% rename from src/app/header/header.component.scss rename to src/app/core/components/header/header.component.scss diff --git a/src/app/header/header.component.spec.ts b/src/app/core/components/header/header.component.spec.ts similarity index 100% rename from src/app/header/header.component.spec.ts rename to src/app/core/components/header/header.component.spec.ts diff --git a/src/app/header/header.component.ts b/src/app/core/components/header/header.component.ts similarity index 100% rename from src/app/header/header.component.ts rename to src/app/core/components/header/header.component.ts diff --git a/src/app/main-content/main-content.component.html b/src/app/core/components/main-content/main-content.component.html similarity index 50% rename from src/app/main-content/main-content.component.html rename to src/app/core/components/main-content/main-content.component.html index aec502cfa..1dfc22b13 100644 --- a/src/app/main-content/main-content.component.html +++ b/src/app/core/components/main-content/main-content.component.html @@ -1,3 +1,3 @@
- main-content works! +
diff --git a/src/app/main-content/main-content.component.scss b/src/app/core/components/main-content/main-content.component.scss similarity index 100% rename from src/app/main-content/main-content.component.scss rename to src/app/core/components/main-content/main-content.component.scss diff --git a/src/app/main-content/main-content.component.spec.ts b/src/app/core/components/main-content/main-content.component.spec.ts similarity index 100% rename from src/app/main-content/main-content.component.spec.ts rename to src/app/core/components/main-content/main-content.component.spec.ts diff --git a/src/app/main-content/main-content.component.ts b/src/app/core/components/main-content/main-content.component.ts similarity index 69% rename from src/app/main-content/main-content.component.ts rename to src/app/core/components/main-content/main-content.component.ts index b8dbf3e05..33d00a4f4 100644 --- a/src/app/main-content/main-content.component.ts +++ b/src/app/core/components/main-content/main-content.component.ts @@ -1,9 +1,10 @@ import { Component } from '@angular/core'; +import { LoginComponent } from '@osf/features/auth/login/login.component'; @Component({ standalone: true, selector: 'osf-main-content', - imports: [], + imports: [LoginComponent], templateUrl: './main-content.component.html', styleUrl: './main-content.component.scss', }) diff --git a/src/app/sidenav/sidenav.component.html b/src/app/core/components/sidenav/sidenav.component.html similarity index 100% rename from src/app/sidenav/sidenav.component.html rename to src/app/core/components/sidenav/sidenav.component.html diff --git a/src/app/sidenav/sidenav.component.scss b/src/app/core/components/sidenav/sidenav.component.scss similarity index 100% rename from src/app/sidenav/sidenav.component.scss rename to src/app/core/components/sidenav/sidenav.component.scss diff --git a/src/app/sidenav/sidenav.component.spec.ts b/src/app/core/components/sidenav/sidenav.component.spec.ts similarity index 100% rename from src/app/sidenav/sidenav.component.spec.ts rename to src/app/core/components/sidenav/sidenav.component.spec.ts diff --git a/src/app/sidenav/sidenav.component.ts b/src/app/core/components/sidenav/sidenav.component.ts similarity index 100% rename from src/app/sidenav/sidenav.component.ts rename to src/app/core/components/sidenav/sidenav.component.ts diff --git a/src/app/topnav/topnav.component.html b/src/app/core/components/topnav/topnav.component.html similarity index 100% rename from src/app/topnav/topnav.component.html rename to src/app/core/components/topnav/topnav.component.html diff --git a/src/app/topnav/topnav.component.scss b/src/app/core/components/topnav/topnav.component.scss similarity index 100% rename from src/app/topnav/topnav.component.scss rename to src/app/core/components/topnav/topnav.component.scss diff --git a/src/app/topnav/topnav.component.spec.ts b/src/app/core/components/topnav/topnav.component.spec.ts similarity index 100% rename from src/app/topnav/topnav.component.spec.ts rename to src/app/core/components/topnav/topnav.component.spec.ts diff --git a/src/app/topnav/topnav.component.ts b/src/app/core/components/topnav/topnav.component.ts similarity index 100% rename from src/app/topnav/topnav.component.ts rename to src/app/core/components/topnav/topnav.component.ts From 8273b6a867641ced2201c1a1c51181251a2393ab Mon Sep 17 00:00:00 2001 From: Roman Nastyuk Date: Mon, 3 Mar 2025 17:38:51 +0200 Subject: [PATCH 2/5] added basic login component --- src/app/app.component.ts | 10 ++++----- .../features/auth/login/login.component.html | 1 + .../features/auth/login/login.component.scss | 0 .../auth/login/login.component.spec.ts | 22 +++++++++++++++++++ .../features/auth/login/login.component.ts | 9 ++++++++ 5 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 src/app/features/auth/login/login.component.html create mode 100644 src/app/features/auth/login/login.component.scss create mode 100644 src/app/features/auth/login/login.component.spec.ts create mode 100644 src/app/features/auth/login/login.component.ts diff --git a/src/app/app.component.ts b/src/app/app.component.ts index e529d68ac..9cf5f4200 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,10 +1,10 @@ import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; -import { SidenavComponent } from '@osf/sidenav/sidenav.component'; +import { SidenavComponent } from '@core/components/sidenav/sidenav.component'; import { RouterOutlet } from '@angular/router'; -import { HeaderComponent } from '@osf/header/header.component'; -import { MainContentComponent } from '@osf/main-content/main-content.component'; -import { FooterComponent } from '@osf/footer/footer.component'; -import { TopnavComponent } from '@osf/topnav/topnav.component'; +import { HeaderComponent } from '@core/components/header/header.component'; +import { MainContentComponent } from '@core/components/main-content/main-content.component'; +import { FooterComponent } from '@core/components/footer/footer.component'; +import { TopnavComponent } from '@core/components/topnav/topnav.component'; import { IS_PORTRAIT } from '@shared/utils/breakpoints.tokens'; import { toSignal } from '@angular/core/rxjs-interop'; diff --git a/src/app/features/auth/login/login.component.html b/src/app/features/auth/login/login.component.html new file mode 100644 index 000000000..147cfc4f8 --- /dev/null +++ b/src/app/features/auth/login/login.component.html @@ -0,0 +1 @@ +

login works!

diff --git a/src/app/features/auth/login/login.component.scss b/src/app/features/auth/login/login.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/features/auth/login/login.component.spec.ts b/src/app/features/auth/login/login.component.spec.ts new file mode 100644 index 000000000..251a67f8a --- /dev/null +++ b/src/app/features/auth/login/login.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [LoginComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/features/auth/login/login.component.ts b/src/app/features/auth/login/login.component.ts new file mode 100644 index 000000000..de7da560b --- /dev/null +++ b/src/app/features/auth/login/login.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'osf-login', + imports: [], + templateUrl: './login.component.html', + styleUrl: './login.component.scss', +}) +export class LoginComponent {} From 01776c39b10fbc3f0d84a6f47b44c61ca3d2a44d Mon Sep 17 00:00:00 2001 From: Roman Nastyuk Date: Mon, 3 Mar 2025 17:40:10 +0200 Subject: [PATCH 3/5] added auth service and auth store --- src/app/app.module.ts | 8 ++++ src/app/core/store/auth/auth.actions.ts | 9 ++++ src/app/core/store/auth/auth.model.ts | 4 ++ src/app/core/store/auth/auth.selectors.ts | 15 +++++++ src/app/core/store/auth/auth.state.ts | 30 +++++++++++++ src/app/core/store/auth/index.ts | 4 ++ src/app/features/auth/auth.entity.ts | 8 ++++ src/app/features/auth/auth.service.ts | 53 +++++++++++++++++++++++ 8 files changed, 131 insertions(+) create mode 100644 src/app/app.module.ts create mode 100644 src/app/core/store/auth/auth.actions.ts create mode 100644 src/app/core/store/auth/auth.model.ts create mode 100644 src/app/core/store/auth/auth.selectors.ts create mode 100644 src/app/core/store/auth/auth.state.ts create mode 100644 src/app/core/store/auth/index.ts create mode 100644 src/app/features/auth/auth.entity.ts create mode 100644 src/app/features/auth/auth.service.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 000000000..87ec29d5d --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,8 @@ +import { NgModule } from '@angular/core'; +import { NgxsModule } from '@ngxs/store'; +import { AuthState } from '@core/store/auth'; + +@NgModule({ + imports: [NgxsModule.forRoot([AuthState])], +}) +export class AppModule {} diff --git a/src/app/core/store/auth/auth.actions.ts b/src/app/core/store/auth/auth.actions.ts new file mode 100644 index 000000000..112d4d3c5 --- /dev/null +++ b/src/app/core/store/auth/auth.actions.ts @@ -0,0 +1,9 @@ +export class SetAuthToken { + static readonly type = '[Auth] Set Auth Token'; + + constructor(public accessToken: string) {} +} + +export class ClearAuth { + static readonly type = '[Auth] Clear Auth'; +} diff --git a/src/app/core/store/auth/auth.model.ts b/src/app/core/store/auth/auth.model.ts new file mode 100644 index 000000000..17abed7c1 --- /dev/null +++ b/src/app/core/store/auth/auth.model.ts @@ -0,0 +1,4 @@ +export interface AuthStateModel { + accessToken: string | null; + isAuthenticated: boolean; +} diff --git a/src/app/core/store/auth/auth.selectors.ts b/src/app/core/store/auth/auth.selectors.ts new file mode 100644 index 000000000..f50c3b525 --- /dev/null +++ b/src/app/core/store/auth/auth.selectors.ts @@ -0,0 +1,15 @@ +import { Selector } from '@ngxs/store'; +import { AuthState } from './auth.state'; +import { AuthStateModel } from './auth.model'; + +export class AuthSelectors { + @Selector([AuthState]) + static isAuthenticated(state: AuthStateModel): boolean { + return state.isAuthenticated; + } + + @Selector([AuthState]) + static getAuthToken(state: AuthStateModel): string | null { + return state.accessToken; + } +} diff --git a/src/app/core/store/auth/auth.state.ts b/src/app/core/store/auth/auth.state.ts new file mode 100644 index 000000000..9d14b0b4b --- /dev/null +++ b/src/app/core/store/auth/auth.state.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import { State, Action, StateContext } from '@ngxs/store'; +import { AuthStateModel } from './auth.model'; +import { SetAuthToken, ClearAuth } from './auth.actions'; + +@State({ + name: 'auth', + defaults: { + accessToken: null, + isAuthenticated: false, + }, +}) +@Injectable() +export class AuthState { + @Action(SetAuthToken) + setAuthToken(ctx: StateContext, action: SetAuthToken) { + ctx.patchState({ + accessToken: action.accessToken, + isAuthenticated: true, + }); + } + + @Action(ClearAuth) + clearAuth(ctx: StateContext) { + ctx.patchState({ + accessToken: null, + isAuthenticated: false, + }); + } +} diff --git a/src/app/core/store/auth/index.ts b/src/app/core/store/auth/index.ts new file mode 100644 index 000000000..bccd7d73b --- /dev/null +++ b/src/app/core/store/auth/index.ts @@ -0,0 +1,4 @@ +export * from './auth.actions'; +export * from './auth.model'; +export * from './auth.selectors'; +export * from './auth.state'; diff --git a/src/app/features/auth/auth.entity.ts b/src/app/features/auth/auth.entity.ts new file mode 100644 index 000000000..48cafe8b4 --- /dev/null +++ b/src/app/features/auth/auth.entity.ts @@ -0,0 +1,8 @@ +export interface LoginCredentials { + email: string; + password: string; +} + +export interface AuthResponse { + accessToken: string; +} diff --git a/src/app/features/auth/auth.service.ts b/src/app/features/auth/auth.service.ts new file mode 100644 index 000000000..68d654109 --- /dev/null +++ b/src/app/features/auth/auth.service.ts @@ -0,0 +1,53 @@ +import { Injectable, inject } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Store } from '@ngxs/store'; +import { firstValueFrom } from 'rxjs'; +import { LoginCredentials, AuthResponse } from './auth.entity'; +import { SetAuthToken, ClearAuth } from '@core/store/auth'; + +@Injectable({ + providedIn: 'root', +}) +export class AuthService { + private readonly API_URL: string = 'VALID_API_URL'; + private readonly AUTH_TOKEN_KEY: string = ''; + + private readonly http: HttpClient = inject(HttpClient); + private readonly store: Store = inject(Store); + + async login(credentials: LoginCredentials): Promise { + try { + const response: AuthResponse = await firstValueFrom( + this.http.post(`${this.API_URL}/auth/login`, credentials), + ); + + if (response.accessToken) { + this.setAuthToken(response.accessToken); + this.store.dispatch(new SetAuthToken(response.accessToken)); + } + } catch (error) { + console.error('Login failed:', error); + throw error; + } + } + + logout(): void { + localStorage.removeItem(this.AUTH_TOKEN_KEY); + this.store.dispatch(new ClearAuth()); + } + + getAuthToken(): string | null { + return localStorage.getItem(this.AUTH_TOKEN_KEY); + } + + private setAuthToken(token: string): void { + localStorage.setItem(this.AUTH_TOKEN_KEY, token); + } + + private checkInitialAuthState(): void { + const token: string | null = this.getAuthToken(); + if (token) { + this.store.dispatch(new SetAuthToken(token)); + } + } +} From d9ee0b678746e165b3c336bec8972474d09c5455 Mon Sep 17 00:00:00 2001 From: Roman Nastyuk Date: Mon, 3 Mar 2025 18:02:01 +0200 Subject: [PATCH 4/5] removed login component, added sign-in and sign-up components --- .../main-content/main-content.component.html | 2 +- .../main-content/main-content.component.ts | 3 +-- src/app/features/auth/auth.service.ts | 1 + .../features/auth/login/login.component.html | 1 - .../features/auth/login/login.component.ts | 9 -------- .../auth/sign-in/sign-in.component.html | 1 + .../sign-in.component.scss} | 0 .../sign-in.component.spec.ts} | 12 +++++----- .../auth/sign-in/sign-in.component.ts | 9 ++++++++ .../auth/sign-up/sign-up.component.html | 1 + .../auth/sign-up/sign-up.component.scss | 0 .../auth/sign-up/sign-up.component.spec.ts | 22 +++++++++++++++++++ .../auth/sign-up/sign-up.component.ts | 9 ++++++++ 13 files changed, 51 insertions(+), 19 deletions(-) delete mode 100644 src/app/features/auth/login/login.component.html delete mode 100644 src/app/features/auth/login/login.component.ts create mode 100644 src/app/features/auth/sign-in/sign-in.component.html rename src/app/features/auth/{login/login.component.scss => sign-in/sign-in.component.scss} (100%) rename src/app/features/auth/{login/login.component.spec.ts => sign-in/sign-in.component.spec.ts} (55%) create mode 100644 src/app/features/auth/sign-in/sign-in.component.ts create mode 100644 src/app/features/auth/sign-up/sign-up.component.html create mode 100644 src/app/features/auth/sign-up/sign-up.component.scss create mode 100644 src/app/features/auth/sign-up/sign-up.component.spec.ts create mode 100644 src/app/features/auth/sign-up/sign-up.component.ts diff --git a/src/app/core/components/main-content/main-content.component.html b/src/app/core/components/main-content/main-content.component.html index 1dfc22b13..924dcc79b 100644 --- a/src/app/core/components/main-content/main-content.component.html +++ b/src/app/core/components/main-content/main-content.component.html @@ -1,3 +1,3 @@
- +

main-content works!

diff --git a/src/app/core/components/main-content/main-content.component.ts b/src/app/core/components/main-content/main-content.component.ts index 33d00a4f4..b8dbf3e05 100644 --- a/src/app/core/components/main-content/main-content.component.ts +++ b/src/app/core/components/main-content/main-content.component.ts @@ -1,10 +1,9 @@ import { Component } from '@angular/core'; -import { LoginComponent } from '@osf/features/auth/login/login.component'; @Component({ standalone: true, selector: 'osf-main-content', - imports: [LoginComponent], + imports: [], templateUrl: './main-content.component.html', styleUrl: './main-content.component.scss', }) diff --git a/src/app/features/auth/auth.service.ts b/src/app/features/auth/auth.service.ts index 68d654109..b48202427 100644 --- a/src/app/features/auth/auth.service.ts +++ b/src/app/features/auth/auth.service.ts @@ -15,6 +15,7 @@ export class AuthService { private readonly http: HttpClient = inject(HttpClient); private readonly store: Store = inject(Store); + //TODO: rewrite/refactor methods according to the API async login(credentials: LoginCredentials): Promise { try { const response: AuthResponse = await firstValueFrom( diff --git a/src/app/features/auth/login/login.component.html b/src/app/features/auth/login/login.component.html deleted file mode 100644 index 147cfc4f8..000000000 --- a/src/app/features/auth/login/login.component.html +++ /dev/null @@ -1 +0,0 @@ -

login works!

diff --git a/src/app/features/auth/login/login.component.ts b/src/app/features/auth/login/login.component.ts deleted file mode 100644 index de7da560b..000000000 --- a/src/app/features/auth/login/login.component.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'osf-login', - imports: [], - templateUrl: './login.component.html', - styleUrl: './login.component.scss', -}) -export class LoginComponent {} diff --git a/src/app/features/auth/sign-in/sign-in.component.html b/src/app/features/auth/sign-in/sign-in.component.html new file mode 100644 index 000000000..371a36b70 --- /dev/null +++ b/src/app/features/auth/sign-in/sign-in.component.html @@ -0,0 +1 @@ +

sign-in works!

diff --git a/src/app/features/auth/login/login.component.scss b/src/app/features/auth/sign-in/sign-in.component.scss similarity index 100% rename from src/app/features/auth/login/login.component.scss rename to src/app/features/auth/sign-in/sign-in.component.scss diff --git a/src/app/features/auth/login/login.component.spec.ts b/src/app/features/auth/sign-in/sign-in.component.spec.ts similarity index 55% rename from src/app/features/auth/login/login.component.spec.ts rename to src/app/features/auth/sign-in/sign-in.component.spec.ts index 251a67f8a..d9432eda1 100644 --- a/src/app/features/auth/login/login.component.spec.ts +++ b/src/app/features/auth/sign-in/sign-in.component.spec.ts @@ -1,17 +1,17 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { LoginComponent } from './login.component'; +import { SignInComponent } from './sign-in.component'; -describe('LoginComponent', () => { - let component: LoginComponent; - let fixture: ComponentFixture; +describe('SignInComponent', () => { + let component: SignInComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [LoginComponent], + imports: [SignInComponent], }).compileComponents(); - fixture = TestBed.createComponent(LoginComponent); + fixture = TestBed.createComponent(SignInComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/features/auth/sign-in/sign-in.component.ts b/src/app/features/auth/sign-in/sign-in.component.ts new file mode 100644 index 000000000..9190b9eb0 --- /dev/null +++ b/src/app/features/auth/sign-in/sign-in.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'osf-sign-in', + imports: [], + templateUrl: './sign-in.component.html', + styleUrl: './sign-in.component.scss', +}) +export class SignInComponent {} diff --git a/src/app/features/auth/sign-up/sign-up.component.html b/src/app/features/auth/sign-up/sign-up.component.html new file mode 100644 index 000000000..7e8b79f67 --- /dev/null +++ b/src/app/features/auth/sign-up/sign-up.component.html @@ -0,0 +1 @@ +

sign-up works!

diff --git a/src/app/features/auth/sign-up/sign-up.component.scss b/src/app/features/auth/sign-up/sign-up.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/features/auth/sign-up/sign-up.component.spec.ts b/src/app/features/auth/sign-up/sign-up.component.spec.ts new file mode 100644 index 000000000..6402b2691 --- /dev/null +++ b/src/app/features/auth/sign-up/sign-up.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SignUpComponent } from './sign-up.component'; + +describe('SignUpComponent', () => { + let component: SignUpComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [SignUpComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(SignUpComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/features/auth/sign-up/sign-up.component.ts b/src/app/features/auth/sign-up/sign-up.component.ts new file mode 100644 index 000000000..98abe8cbe --- /dev/null +++ b/src/app/features/auth/sign-up/sign-up.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'osf-sign-up', + imports: [], + templateUrl: './sign-up.component.html', + styleUrl: './sign-up.component.scss', +}) +export class SignUpComponent {} From d0f43baeaa5e94c7076ad114f6b45fedfe56a945 Mon Sep 17 00:00:00 2001 From: Roman Nastyuk Date: Tue, 4 Mar 2025 11:33:57 +0200 Subject: [PATCH 5/5] removed redundant modifiers in auth service --- src/app/features/auth/auth.service.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/features/auth/auth.service.ts b/src/app/features/auth/auth.service.ts index b48202427..7bacfdd15 100644 --- a/src/app/features/auth/auth.service.ts +++ b/src/app/features/auth/auth.service.ts @@ -9,8 +9,8 @@ import { SetAuthToken, ClearAuth } from '@core/store/auth'; providedIn: 'root', }) export class AuthService { - private readonly API_URL: string = 'VALID_API_URL'; - private readonly AUTH_TOKEN_KEY: string = ''; + private readonly API_URL = 'VALID_API_URL'; + private readonly AUTH_TOKEN_KEY = ''; private readonly http: HttpClient = inject(HttpClient); private readonly store: Store = inject(Store); @@ -18,7 +18,7 @@ export class AuthService { //TODO: rewrite/refactor methods according to the API async login(credentials: LoginCredentials): Promise { try { - const response: AuthResponse = await firstValueFrom( + const response = await firstValueFrom( this.http.post(`${this.API_URL}/auth/login`, credentials), );