connect backend for user registration
This commit is contained in:
parent
4397f91b65
commit
2ca605feb4
4
.gitignore
vendored
4
.gitignore
vendored
@ -42,3 +42,7 @@ __screenshots__/
|
|||||||
# System files
|
# System files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
|
||||||
|
# Sensetive files
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
|||||||
@ -45,7 +45,13 @@
|
|||||||
"development": {
|
"development": {
|
||||||
"optimization": false,
|
"optimization": false,
|
||||||
"extractLicenses": false,
|
"extractLicenses": false,
|
||||||
"sourceMap": true
|
"sourceMap": true,
|
||||||
|
"fileReplacements": [
|
||||||
|
{
|
||||||
|
"replace": "src/environments/environment.ts",
|
||||||
|
"with": "src/environments/environment.development.ts"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"defaultConfiguration": "production"
|
"defaultConfiguration": "production"
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import { Header } from "./core/layouts/header/header";
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-root",
|
selector: "app-root",
|
||||||
imports: [RouterOutlet, Products, Footer, Header],
|
imports: [RouterOutlet, Footer, Header],
|
||||||
templateUrl: "./app.html",
|
templateUrl: "./app.html",
|
||||||
styleUrl: "./app.css",
|
styleUrl: "./app.css",
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,9 +1,8 @@
|
|||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
import { DatePipe } from "@angular/common";
|
|
||||||
import { LucideAngularModule, Mail, Phone, MapPin } from "lucide-angular";
|
import { LucideAngularModule, Mail, Phone, MapPin } from "lucide-angular";
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-footer",
|
selector: "app-footer",
|
||||||
imports: [DatePipe, LucideAngularModule],
|
imports: [LucideAngularModule],
|
||||||
templateUrl: "./footer.html",
|
templateUrl: "./footer.html",
|
||||||
styleUrl: "./footer.css",
|
styleUrl: "./footer.css",
|
||||||
})
|
})
|
||||||
|
|||||||
8
src/app/core/models/user.model.ts
Normal file
8
src/app/core/models/user.model.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
export interface RegisterUserRequest{
|
||||||
|
name: string | null;
|
||||||
|
email: string | null;
|
||||||
|
mobile_number: string | null;
|
||||||
|
password: string | null;
|
||||||
|
password_confirmation: string | null;
|
||||||
|
city: string | null;
|
||||||
|
}
|
||||||
7
src/app/core/tokens/api-url-tokens.ts
Normal file
7
src/app/core/tokens/api-url-tokens.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import { InjectionToken } from "@angular/core";
|
||||||
|
import {environment} from '../../../environments/environment';
|
||||||
|
|
||||||
|
export const API_URL = new InjectionToken<string>('API_URL', {
|
||||||
|
providedIn: "root",
|
||||||
|
factory: () => environment.apiUrl
|
||||||
|
})
|
||||||
@ -4,36 +4,36 @@
|
|||||||
<h2 class="text-xl text-gray-600">Sign up with your<br />email address to get started</h2>
|
<h2 class="text-xl text-gray-600">Sign up with your<br />email address to get started</h2>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<form class="card max-w-11/12 sm:max-w-8/12 grid md:grid-cols-2 gap-4">
|
<form [formGroup]="registerForm" (ngSubmit)="registerUser()" class="card max-w-11/12 sm:max-w-8/12 grid md:grid-cols-2 gap-4">
|
||||||
<article class="space-y-4">
|
<article class="space-y-4">
|
||||||
<fieldset class="fieldset">
|
<fieldset class="fieldset">
|
||||||
<legend class="fieldset-legend">Name</legend>
|
<legend class="fieldset-legend">Name</legend>
|
||||||
<input type="text" class="input" placeholder="Jhon Doe" />
|
<input type="text" class="input" formControlName="name" placeholder="Jhon Doe" />
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset class="fieldset">
|
<fieldset class="fieldset">
|
||||||
<legend class="fieldset-legend">Mobile Number</legend>
|
<legend class="fieldset-legend">Mobile Number</legend>
|
||||||
<input type="text" class="input" placeholder="+X1 XXXXXXXXXX" />
|
<input type="text" class="input" formControlName="mobile_number" placeholder="+X1 XXXXXXXXXX" />
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset class="fieldset">
|
<fieldset class="fieldset">
|
||||||
<legend class="fieldset-legend">Email</legend>
|
<legend class="fieldset-legend">Email</legend>
|
||||||
<input type="text" class="input" placeholder="Enter email here" />
|
<input type="text" class="input" formControlName="email" placeholder="Enter email here" />
|
||||||
<p class="label">your-email-address@email.com</p>
|
<p class="label">your-email-address@email.com</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</article>
|
</article>
|
||||||
<article class="space-y-4">
|
<article class="space-y-4">
|
||||||
<fieldset class="fieldset">
|
<fieldset class="fieldset">
|
||||||
<legend class="fieldset-legend">Password</legend>
|
<legend class="fieldset-legend">Password</legend>
|
||||||
<input type="password" class="input" placeholder="Type here" />
|
<input type="password" class="input" formControlName="password" placeholder="Type here" />
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="fieldset">
|
<fieldset class="fieldset">
|
||||||
<legend class="fieldset-legend">Confirm Password</legend>
|
<legend class="fieldset-legend">Confirm Password</legend>
|
||||||
<input type="text" class="input" placeholder="Type here" />
|
<input type="text" class="input" formControlName="password_confirmation" placeholder="Type here" />
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="fieldset">
|
<fieldset class="fieldset">
|
||||||
<legend class="fieldset-legend">City</legend>
|
<legend class="fieldset-legend">City</legend>
|
||||||
<input type="text" class="input" placeholder="Your city name" />
|
<input type="text" class="input" formControlName="city" placeholder="Your city name" />
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</article>
|
</article>
|
||||||
<div class="flex flex-col col-span-2 gap-y-2">
|
<div class="flex flex-col col-span-2 gap-y-2">
|
||||||
|
|||||||
@ -1,9 +1,30 @@
|
|||||||
import { Component } from "@angular/core";
|
import { Component, inject } from "@angular/core";
|
||||||
|
import { FormControl, FormGroup, ReactiveFormsModule } from "@angular/forms";
|
||||||
|
import { AuthService } from "../../services/auth-service";
|
||||||
|
import { RegisterUserRequest } from "../../../../core/models/user.model";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-register",
|
selector: "app-register",
|
||||||
imports: [],
|
imports: [ReactiveFormsModule],
|
||||||
templateUrl: "./register.html",
|
templateUrl: "./register.html",
|
||||||
styleUrl: "./register.css",
|
styleUrl: "./register.css",
|
||||||
})
|
})
|
||||||
export class Register {}
|
export class Register {
|
||||||
|
|
||||||
|
authService = inject(AuthService);
|
||||||
|
|
||||||
|
registerForm = new FormGroup({
|
||||||
|
name :new FormControl(''),
|
||||||
|
email :new FormControl(''),
|
||||||
|
mobile_number : new FormControl(''),
|
||||||
|
password : new FormControl(''),
|
||||||
|
password_confirmation : new FormControl(''),
|
||||||
|
city : new FormControl(''),
|
||||||
|
});
|
||||||
|
|
||||||
|
registerUser() {
|
||||||
|
this.authService.register(this.registerForm.value as RegisterUserRequest)
|
||||||
|
.subscribe();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
16
src/app/features/auth/services/auth-service.spec.ts
Normal file
16
src/app/features/auth/services/auth-service.spec.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { AuthService } from './auth-service';
|
||||||
|
|
||||||
|
describe('AuthService', () => {
|
||||||
|
let service: AuthService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
TestBed.configureTestingModule({});
|
||||||
|
service = TestBed.inject(AuthService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be created', () => {
|
||||||
|
expect(service).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
19
src/app/features/auth/services/auth-service.ts
Normal file
19
src/app/features/auth/services/auth-service.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { Injectable, inject } from '@angular/core';
|
||||||
|
import { RegisterUserRequest } from '../../../core/models/user.model';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { API_URL } from '../../../core/tokens/api-url-tokens';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
export class AuthService {
|
||||||
|
|
||||||
|
private http: HttpClient = inject(HttpClient);
|
||||||
|
private apiUrl = inject(API_URL);
|
||||||
|
|
||||||
|
register(userRequest: RegisterUserRequest) {
|
||||||
|
console.log(this.apiUrl);
|
||||||
|
return this.http.post(`${this.apiUrl}/register`, userRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
4
src/environments/environment.development.ts
Normal file
4
src/environments/environment.development.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export const environment = {
|
||||||
|
production: false,
|
||||||
|
apiUrl: 'http://localhost:8000/api',
|
||||||
|
};
|
||||||
4
src/environments/environment.ts
Normal file
4
src/environments/environment.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export const environment = {
|
||||||
|
production: false,
|
||||||
|
apiUrl: 'http://my-dev-url',
|
||||||
|
};
|
||||||
Loading…
x
Reference in New Issue
Block a user