-
-
+
+
-
-
- Titre annonce
-
-
+
+
+ Titre annonce
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
Visible
+
+
Visible
-
-
-
- Images déjà associées:
-
-
-
-
- {{image.description}}
-
-
+
+
+
+ Images déjà associées:
+
+
+
+
+ {{image.description}}
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.scss b/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.scss
index b299124..2221b39 100644
--- a/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.scss
+++ b/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.scss
@@ -1,10 +1,24 @@
-.lightTheme, .darkTheme {
- background-image: none;
- overflow-y: hidden;
- overflow-x: hidden;
+.myContainer1 {
+ padding: 10px 10px 0px 25px;
+ margin: 0px 0px 0px 0px;
font-size: small;
}
+
+.myContainer2 {
+ padding: 0px 0px 0px 0px;
+ margin: 0px 0px 0px 0px;
+ overflow-y: hidden;
+ overflow-x: hidden;
+ -ms-overflow-style: none;
+ scrollbar-width: none;
+}
+.myContainer2::-webkit-scrollbar {
+ display: none;
+}
+
+
+
h1 {
text-align: center;
font-size: large;
@@ -26,6 +40,10 @@ h1 {
border: solid 1px grey;
}
+mat-dialog-actions {
+ margin-bottom: 0px;
+}
+
button {
font-size: small;
}
diff --git a/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.ts b/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.ts
index 23827fe..b224472 100644
--- a/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.ts
+++ b/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.ts
@@ -30,7 +30,7 @@ export class PopupUpdateAdvertiserComponent implements OnInit
_id: advertiser0._id,
login: advertiser0.login,
hashPass: advertiser0.hashPass,
- email: advertiser0.mail,
+ email: advertiser0.email,
role: {
name: advertiser0.role.name,
permission: advertiser0.role.permission,
@@ -79,14 +79,13 @@ export class PopupUpdateAdvertiserComponent implements OnInit
this.errorMessage = "Email invalide" ;
this.hasError = true;
}
- else if(this.changePassword) {
- if (this.newPassword.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'mot de passe'" ;
- this.hasError = true;
- } else if (this.newPassword !== this.confirmNewPassword) {
- this.errorMessage = "Le mot de passe est différent de sa confirmation" ;
- this.hasError = true;
- }
+ else if((this.changePassword) && (this.newPassword.length === 0)) {
+ this.errorMessage = "Veuillez remplir le champ 'mot de passe'" ;
+ this.hasError = true;
+ }
+ else if((this.changePassword) && (this.newPassword !== this.confirmNewPassword)) {
+ this.errorMessage = "Le mot de passe est différent de sa confirmation" ;
+ this.hasError = true;
}
else {
this.errorMessage = "" ;
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 28aa609..dc121e6 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -60,10 +60,8 @@ import { InputInterestsRegisterComponent } from './beforeConnexion/register/inpu
import {MatPaginatorModule} from "@angular/material/paginator";
import { PageAdListAdminComponent } from './admin/adList/page-ad-list-admin/page-ad-list-admin.component';
import { PopupDeleteAdAdminComponent } from './admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component';
-import { PopupVisualizeAdAdminComponent } from './admin/adList/popup-visualize-ad-admin/popup-visualize-ad-admin.component';
import { PopupVisualizeImagesAdminComponent } from './admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component';
import { PageUserListComponent } from './admin/userList/page-user-list/page-user-list.component';
-import { PopupVisualizeUserComponent } from './admin/userList/popup-visualize-user/popup-visualize-user.component';
import { PopupDeleteUserComponent } from './admin/userList/popup-delete-user/popup-delete-user.component';
import { PopupCreateUserComponent } from './admin/userList/popup-create-user/popup-create-user.component';
import { InputInterestsAdminComponent } from './admin/userList/input-interests-admin/input-interests-admin.component';
@@ -72,6 +70,7 @@ import {MatDatepickerModule} from "@angular/material/datepicker";
import { PagesPopularityComponent } from './advertiser/pages-popularity/pages-popularity.component';
import { ChartsModule } from 'ng2-charts';
import { PopupDeletePlaylistComponent } from './user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component';
+import { PopupForgottenPasswordComponent } from './beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component';
@NgModule({
@@ -112,16 +111,15 @@ import { PopupDeletePlaylistComponent } from './user/myPlaylists/popup-delete-pl
InputInterestsRegisterComponent,
PageAdListAdminComponent,
PopupDeleteAdAdminComponent,
- PopupVisualizeAdAdminComponent,
PopupVisualizeImagesAdminComponent,
PageUserListComponent,
- PopupVisualizeUserComponent,
PopupDeleteUserComponent,
PopupCreateUserComponent,
InputInterestsAdminComponent,
PageWatchingVideoComponent,
PagesPopularityComponent,
PopupDeletePlaylistComponent,
+ PopupForgottenPasswordComponent,
],
imports: [
BrowserModule,
diff --git a/src/app/beforeConnexion/login/page-login/page-login.component.html b/src/app/beforeConnexion/login/page-login/page-login.component.html
index 48258aa..675270e 100644
--- a/src/app/beforeConnexion/login/page-login/page-login.component.html
+++ b/src/app/beforeConnexion/login/page-login/page-login.component.html
@@ -25,7 +25,7 @@
diff --git a/src/app/beforeConnexion/login/page-login/page-login.component.ts b/src/app/beforeConnexion/login/page-login/page-login.component.ts
index 008a81f..f9414be 100644
--- a/src/app/beforeConnexion/login/page-login/page-login.component.ts
+++ b/src/app/beforeConnexion/login/page-login/page-login.component.ts
@@ -2,6 +2,9 @@ import {Component, OnInit} from '@angular/core';
import {MessageService} from "../../../utils/services/message/message.service";
import {Router} from "@angular/router";
import {ThemeService} from "../../../utils/services/theme/theme.service";
+import {MatDialog} from "@angular/material/dialog";
+import {PopupForgottenPasswordComponent} from "../popup-forgotten-password/popup-forgotten-password.component";
+import {MatSnackBar} from "@angular/material/snack-bar";
@@ -20,7 +23,9 @@ export class PageLoginComponent implements OnInit
constructor( private messageService: MessageService,
private router: Router,
- public themeService: ThemeService ) { }
+ public themeService: ThemeService,
+ public dialog: MatDialog,
+ private snackBar: MatSnackBar ) { }
ngOnInit(): void {}
@@ -43,6 +48,21 @@ export class PageLoginComponent implements OnInit
}
+ onForgottenPassword(): void
+ {
+ this.dialog
+ .open(PopupForgottenPasswordComponent, {width: '30%'})
+ .afterClosed()
+ .subscribe(result => {
+ if((result !== null) && (result !== undefined))
+ {
+ const config = { duration: 5000, panelClass: "custom-class" };
+ this.snackBar.open( "Un mail de réinitialisation de mot de passe vous a été envoyé.", "", config);
+ }
+ });
+ }
+
+
maCallback(retour): void
{
console.log(retour.data)
@@ -72,6 +92,7 @@ export class PageLoginComponent implements OnInit
}
}
+
// Fonction de hashage (faible)
hashage(input: string): string
{
diff --git a/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html b/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html
new file mode 100644
index 0000000..80a2fc9
--- /dev/null
+++ b/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html
@@ -0,0 +1,24 @@
+
Oubli mot de passe
+
+
+
+
+
+
+ Email
+
+
+
+
+
+
+ {{errorMessage}}
+
+
+
+
+
+
+
+
+
diff --git a/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss b/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss
new file mode 100644
index 0000000..fa75013
--- /dev/null
+++ b/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss
@@ -0,0 +1,12 @@
+h4 {
+ text-align: center;
+}
+
+.myDiv {
+ text-align: center;
+ font-size: small;
+}
+
+.myError {
+ text-align: center;
+}
diff --git a/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts b/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts
new file mode 100644
index 0000000..ebf101c
--- /dev/null
+++ b/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { PopupForgottenPasswordComponent } from './popup-forgotten-password.component';
+
+describe('PopupForgottenPasswordComponent', () => {
+ let component: PopupForgottenPasswordComponent;
+ let fixture: ComponentFixture
;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ PopupForgottenPasswordComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(PopupForgottenPasswordComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts b/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts
new file mode 100644
index 0000000..1ff70ce
--- /dev/null
+++ b/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts
@@ -0,0 +1,47 @@
+import { Component } from '@angular/core';
+import {MatDialogRef} from "@angular/material/dialog";
+
+
+
+@Component({
+ selector: 'app-popup-forgotten-password',
+ templateUrl: './popup-forgotten-password.component.html',
+ styleUrls: ['./popup-forgotten-password.component.scss']
+})
+export class PopupForgottenPasswordComponent
+{
+ email: string;
+ hasError: boolean = false;
+ errorMessage: string = "";
+
+
+ constructor(public dialogRef: MatDialogRef) {}
+
+
+ // Click sur valider
+ onValidate()
+ {
+ if(this.email.length === 0) {
+ this.errorMessage = "Veuillez remplir le champ 'email'." ;
+ this.hasError = true;
+ }
+ else if(!this.isValidEmail(this.email)) {
+ this.errorMessage = "Email invalide." ;
+ this.hasError = true;
+ }
+ else {
+ this.errorMessage = "" ;
+ this.hasError = false;
+ this.dialogRef.close(true);
+ }
+ }
+
+
+ // Indique si email a bien le format d'un email
+ isValidEmail(email): boolean
+ {
+ let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
+ return re.test(email);
+ }
+
+}
diff --git a/src/app/beforeConnexion/register/page-register/page-register.component.html b/src/app/beforeConnexion/register/page-register/page-register.component.html
index 42ad1a5..dc6d23c 100644
--- a/src/app/beforeConnexion/register/page-register/page-register.component.html
+++ b/src/app/beforeConnexion/register/page-register/page-register.component.html
@@ -105,7 +105,7 @@
Date de naissance
+ (ngModelChange)="user.dateOfBirth = $event">
diff --git a/src/app/beforeConnexion/register/page-register/page-register.component.ts b/src/app/beforeConnexion/register/page-register/page-register.component.ts
index c109478..66dd8bf 100644
--- a/src/app/beforeConnexion/register/page-register/page-register.component.ts
+++ b/src/app/beforeConnexion/register/page-register/page-register.component.ts
@@ -119,10 +119,6 @@ export class PageRegisterComponent
this.errorMessage = "Le mot de passe est différent de sa confirmation.";
this.hasError = true;
}
- else if((this.user.role.name === 'user') && ((this.user.dateOfBirth === undefined) || (this.user.dateOfBirth === null))) {
- this.errorMessage = "Veuillez remplir le champ 'date de naissance'.";
- this.hasError = true;
- }
else {
this.errorMessage = "" ;
this.hasError = false;
diff --git a/src/app/user/history/page-history-user/page-history-user.component.ts b/src/app/user/history/page-history-user/page-history-user.component.ts
index 6999167..b8f7fc8 100644
--- a/src/app/user/history/page-history-user/page-history-user.component.ts
+++ b/src/app/user/history/page-history-user/page-history-user.component.ts
@@ -12,6 +12,7 @@ import {Router} from "@angular/router";
interface VideoHistory {
+ videoId: string,
imageUrl: string,
title: string,
date: Date,
@@ -115,6 +116,7 @@ export class PageHistoryUserComponent implements AfterViewInit
videoAllToVideoHistory(videoAll: VideoAll): VideoHistory
{
return {
+ videoId: videoAll.videoId,
imageUrl: videoAll.imageUrl,
title: videoAll.title,
date: videoAll.watchedDates[videoAll.watchedDates.length-1],
diff --git a/src/app/user/myProfil/popup-update-user/popup-update-user.component.ts b/src/app/user/myProfil/popup-update-user/popup-update-user.component.ts
index 806b6c9..5424dca 100644
--- a/src/app/user/myProfil/popup-update-user/popup-update-user.component.ts
+++ b/src/app/user/myProfil/popup-update-user/popup-update-user.component.ts
@@ -30,7 +30,7 @@ export class PopupUpdateUserComponent implements OnInit
_id: user0._id,
login: user0.login,
hashPass: user0.hashPass,
- email: user0.mail,
+ email: user0.email,
role: {
name: user0.role.name,
permission: user0.role.permission,
@@ -79,18 +79,13 @@ export class PopupUpdateUserComponent implements OnInit
this.errorMessage = "Email invalide." ;
this.hasError = true;
}
- else if((this.userCopy.dateOfBirth === undefined) || (this.userCopy.dateOfBirth === null)) {
- this.errorMessage = "Veuillez remplir le champ 'date de naissance'.";
+ else if((this.changePassword) && (this.newPassword.length === 0)) {
+ this.errorMessage = "Veuillez remplir le champ 'mot de passe'" ;
this.hasError = true;
}
- else if(this.changePassword) {
- if (this.newPassword.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'mot de passe'." ;
- this.hasError = true;
- } else if (this.newPassword !== this.confirmNewPassword) {
- this.errorMessage = "Le mot de passe est différent de sa confirmation." ;
- this.hasError = true;
- }
+ else if((this.changePassword) && (this.newPassword !== this.confirmNewPassword)) {
+ this.errorMessage = "Le mot de passe est différent de sa confirmation" ;
+ this.hasError = true;
}
else {
this.errorMessage = "" ;
diff --git a/src/styles.scss b/src/styles.scss
index 8a615cc..80de7ef 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -31,6 +31,11 @@ body { margin: 0; }
}
+.custom-dialog-container .mat-dialog-container {
+ margin: 0px 0px 0px 0px;
+ padding: 0px 0px 0px 0px;
+}
+
// -------------------------------------------------------------------------