From 816281edd9ba0139aa0ebc85c8fa8bb105ff00b5 Mon Sep 17 00:00:00 2001 From: nsemets Date: Mon, 4 Aug 2025 13:34:52 +0300 Subject: [PATCH 1/3] feat(sign-up): updated sign-up --- package.json | 1 + src/app/app.routes.ts | 2 +- .../core/constants/ngxs-states.constant.ts | 2 +- src/app/core/store/auth/auth.actions.ts | 9 -- src/app/core/store/auth/auth.selectors.ts | 16 --- src/app/core/store/auth/auth.state.ts | 32 ------ src/app/features/auth/models/auth.model.ts | 5 - ...ts => forgot-password-form-group.model.ts} | 0 src/app/features/auth/models/index.ts | 6 +- ....ts => reset-password-form-group.model.ts} | 0 .../auth/models/sign-up-form.model.ts | 10 ++ src/app/features/auth/models/sign-up.model.ts | 8 ++ .../auth/pages/sign-up/sign-up.component.html | 103 ++++++++--------- .../auth/pages/sign-up/sign-up.component.scss | 105 ++++-------------- .../auth/pages/sign-up/sign-up.component.ts | 95 ++++++++++------ .../features/auth/services/auth.service.ts | 54 ++------- src/app/features/auth/store/auth.actions.ts | 7 ++ .../auth/store}/auth.model.ts | 0 src/app/features/auth/store/auth.selectors.ts | 1 + src/app/features/auth/store/auth.state.ts | 25 +++++ .../auth => features/auth/store}/index.ts | 0 21 files changed, 193 insertions(+), 288 deletions(-) delete mode 100644 src/app/core/store/auth/auth.actions.ts delete mode 100644 src/app/core/store/auth/auth.selectors.ts delete mode 100644 src/app/core/store/auth/auth.state.ts rename src/app/features/auth/models/{forgot-password-form-group.type.ts => forgot-password-form-group.model.ts} (100%) rename src/app/features/auth/models/{reset-password-form-group.type.ts => reset-password-form-group.model.ts} (100%) create mode 100644 src/app/features/auth/models/sign-up-form.model.ts create mode 100644 src/app/features/auth/models/sign-up.model.ts create mode 100644 src/app/features/auth/store/auth.actions.ts rename src/app/{core/store/auth => features/auth/store}/auth.model.ts (100%) create mode 100644 src/app/features/auth/store/auth.selectors.ts create mode 100644 src/app/features/auth/store/auth.state.ts rename src/app/{core/store/auth => features/auth/store}/index.ts (100%) diff --git a/package.json b/package.json index e85611e3e..982090aba 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "diff": "^8.0.2", "markdown-it": "^14.1.0", "markdown-it-video": "^0.6.3", + "ngx-captcha": "^13.0.0", "ngx-cookie-service": "^19.1.2", "ngx-markdown-editor": "^5.3.4", "primeflex": "^4.0.0", diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index d9837053e..6b6b8d55b 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -40,7 +40,7 @@ export const routes: Routes = [ data: { skipBreadcrumbs: true }, }, { - path: 'sign-up', + path: 'register', loadComponent: () => import('./features/auth/pages/sign-up/sign-up.component').then((mod) => mod.SignUpComponent), data: { skipBreadcrumbs: true }, diff --git a/src/app/core/constants/ngxs-states.constant.ts b/src/app/core/constants/ngxs-states.constant.ts index 1fc6a949c..dae608deb 100644 --- a/src/app/core/constants/ngxs-states.constant.ts +++ b/src/app/core/constants/ngxs-states.constant.ts @@ -1,5 +1,5 @@ -import { AuthState } from '@core/store/auth'; import { UserState } from '@core/store/user'; +import { AuthState } from '@osf/features/auth/store'; import { MeetingsState } from '@osf/features/meetings/store'; import { ProjectMetadataState } from '@osf/features/project/metadata/store'; import { ProjectOverviewState } from '@osf/features/project/overview/store'; diff --git a/src/app/core/store/auth/auth.actions.ts b/src/app/core/store/auth/auth.actions.ts deleted file mode 100644 index 112d4d3c5..000000000 --- a/src/app/core/store/auth/auth.actions.ts +++ /dev/null @@ -1,9 +0,0 @@ -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.selectors.ts b/src/app/core/store/auth/auth.selectors.ts deleted file mode 100644 index 51698a086..000000000 --- a/src/app/core/store/auth/auth.selectors.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Selector } from '@ngxs/store'; - -import { AuthStateModel } from './auth.model'; -import { AuthState } from './auth.state'; - -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 deleted file mode 100644 index 3dc968c7b..000000000 --- a/src/app/core/store/auth/auth.state.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Action, State, StateContext } from '@ngxs/store'; - -import { Injectable } from '@angular/core'; - -import { ClearAuth, SetAuthToken } from './auth.actions'; -import { AuthStateModel } from './auth.model'; - -@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/features/auth/models/auth.model.ts b/src/app/features/auth/models/auth.model.ts index 48cafe8b4..015668185 100644 --- a/src/app/features/auth/models/auth.model.ts +++ b/src/app/features/auth/models/auth.model.ts @@ -1,8 +1,3 @@ -export interface LoginCredentials { - email: string; - password: string; -} - export interface AuthResponse { accessToken: string; } diff --git a/src/app/features/auth/models/forgot-password-form-group.type.ts b/src/app/features/auth/models/forgot-password-form-group.model.ts similarity index 100% rename from src/app/features/auth/models/forgot-password-form-group.type.ts rename to src/app/features/auth/models/forgot-password-form-group.model.ts diff --git a/src/app/features/auth/models/index.ts b/src/app/features/auth/models/index.ts index f804db719..5d9696309 100644 --- a/src/app/features/auth/models/index.ts +++ b/src/app/features/auth/models/index.ts @@ -1,4 +1,6 @@ export * from './auth.model'; -export * from './forgot-password-form-group.type'; +export * from './forgot-password-form-group.model'; export * from './message-info.model'; -export * from './reset-password-form-group.type'; +export * from './reset-password-form-group.model'; +export * from './sign-up.model'; +export * from './sign-up-form.model'; diff --git a/src/app/features/auth/models/reset-password-form-group.type.ts b/src/app/features/auth/models/reset-password-form-group.model.ts similarity index 100% rename from src/app/features/auth/models/reset-password-form-group.type.ts rename to src/app/features/auth/models/reset-password-form-group.model.ts diff --git a/src/app/features/auth/models/sign-up-form.model.ts b/src/app/features/auth/models/sign-up-form.model.ts new file mode 100644 index 000000000..77fa5957d --- /dev/null +++ b/src/app/features/auth/models/sign-up-form.model.ts @@ -0,0 +1,10 @@ +import { FormControl } from '@angular/forms'; + +export interface SignUpForm { + fullName: FormControl; + email1: FormControl; + email2: FormControl; + password: FormControl; + acceptedTermsOfService: FormControl; + recaptcha: FormControl; +} diff --git a/src/app/features/auth/models/sign-up.model.ts b/src/app/features/auth/models/sign-up.model.ts new file mode 100644 index 000000000..07821db06 --- /dev/null +++ b/src/app/features/auth/models/sign-up.model.ts @@ -0,0 +1,8 @@ +export interface SignUpModel { + fullName: string; + email1: string; + email2: string; + password: string; + acceptedTermsOfService: boolean; + recaptcha: string; +} diff --git a/src/app/features/auth/pages/sign-up/sign-up.component.html b/src/app/features/auth/pages/sign-up/sign-up.component.html index 8932e499b..6ab346197 100644 --- a/src/app/features/auth/pages/sign-up/sign-up.component.html +++ b/src/app/features/auth/pages/sign-up/sign-up.component.html @@ -1,9 +1,9 @@ @if (!isFormSubmitted()) { -