Merge pull request #71 from AlineRinquin/blandine

Blandine
This commit is contained in:
AlineRinquin 2022-03-02 16:09:04 +01:00 committed by GitHub
commit 9f1c373403
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 62 additions and 65 deletions

View File

@ -19,6 +19,7 @@ export class AuthGuard implements CanActivate {
this.tokenKey = environment.tokenKey;
}
//s'il n'y a pas de token, le user ne peut pas naviguer sur les url où cette option est activée
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
@ -35,20 +36,17 @@ export class AuthGuard implements CanActivate {
console.log('decodedToken : ', decodedToken);
if (decodedToken.exp) {
console.log("Date d'exp decodedToken : ", decodedToken.exp);
const dateExp = new Date(decodedToken.exp * 1000);
if (new Date() >= dateExp) {
// le token a expiré, je n'autorise pas l'accès
// le token a expiré, je n'autorise pas l'accès et je redirige pour connexion
this.router.navigate(['accueil']);
return false;
}
}
console.log("C'est ok ! ");
return true;
} else {
console.log('You shall not pass !!!!');
this.router.navigate(['accueil']); // redirection de notre utilisateur vers une url de notre application (dans notre code TS)
this.router.navigate(['accueil']);
return false;
}
}

View File

@ -58,6 +58,11 @@
</button>
<div class="container mt-5 menu">
<app-alert
*ngIf="isShow"
[alert]="alert"
(eventClose)="onClickCloseAlert()"
></app-alert>
<div class="row d-flex justify-content-center">
<div class="col-md-auto" *ngFor="let menu of listMenus">
<div class="card p-3 py-4 align-items" style="width: 14rem">

View File

@ -19,6 +19,8 @@ import {
})
export class CardMenuComponent implements OnInit {
closeResult = '';
alert : any;
isShow : boolean;
public listMenus:any[];
public menuId : any;
public menuForm : FormGroup;
@ -35,30 +37,21 @@ public upMenuForm : FormGroup;
this.listMenus=[];
this.menuForm = new FormGroup({});
this.upMenuForm = new FormGroup({});
this.upMenuForm = this.initForm();
}
//Méthode qui initialise les champs du formulaire avec les infos de la BDD
private initForm(menu?: Menu): FormGroup {
return this.fb.group({
dateMenu: [menu ? menu.dateMenu : ''],
repasMidi: [menu ? menu.repasMidi : ''],
repasSoir: [menu ? menu.repasSoir : ''],
});
this.isShow = false;
}
//delete d'un menu
//delete d'un menu - fait appel au service dédié MenuService qui gère les observables
deleteMenu(id_menu : number): void {
// window.alert("Le menu a bien été supprimé!")
this.menusService.deleteMenu(id_menu)?.subscribe((resp) => {
// this.router.navigate(['menu']);
window.location.reload();
this.alert={"type":"danger", "content":"Le menu a bien été supprimé"};
this.isShow = true;
this.menusService.deleteMenu(id_menu)?.subscribe((resp) => {
window.location.reload();
});
}
//updateMenu
//updateMenu - fait appel au service dédié MenuService qui gère les observables
updateMenu(id_menu : number): void {
const dateValue = this.upMenuForm.value['dateMenuFc'];
@ -83,14 +76,14 @@ updateMenu(id_menu : number): void {
//ajout d'un menu
//ajout d'un menu - fait appel au service dédié MenuService qui gère les observables
saveMenu(): void {
const dateValue = this.menuForm.value['dateMenuFc'];
const repasMidiValue = this.menuForm.value['repasMidiFc'];
const repasSoirValue = this.menuForm.value['repasSoirFc'];
//permet de construire l'objet à passer en base
const menu: Menu = {
dateMenu: dateValue,
repasMidi: repasMidiValue,
@ -102,7 +95,7 @@ saveMenu(): void {
console.log(menu.dateMenu);
this.menusService.addMenu(menu)?.subscribe((resp) => {
window.location.reload();
window.location.reload(); //rechargement de la page pour affichage des modifications
});
} else {
@ -113,10 +106,10 @@ saveMenu(): void {
ngOnInit(): void {
//affichage des menus d'une team
//affichage des menus d'une team - fait appel au service dédié MenuService qui gère les observables
this.menusService.getMenu()?.subscribe((listMenus: any[])=>{
console.log(listMenus);
this.listMenus=listMenus;
this.listMenus=listMenus; //socke les objets récupérés de la base
});
@ -129,7 +122,6 @@ this.menusService.getMenu()?.subscribe((listMenus: any[])=>{
}
);
this.upMenuForm = this.fb.group(
{
dateMenuFc: new FormControl('',[Validators.required]),
@ -141,7 +133,7 @@ this.menusService.getMenu()?.subscribe((listMenus: any[])=>{
}
//gestion de la fenêtre modale, open au click
open(content: any) {
this.modalService.open(content,
{ariaLabelledBy: 'menu'}).result.then((result)=> {
@ -152,6 +144,7 @@ open(content: any) {
});
}
//gestion de la fenêtre modale, mode de fermeture
private getDismissReason(reason: any): string {
if (reason === ModalDismissReasons.ESC) {
return 'by pressing ESC';
@ -161,6 +154,11 @@ open(content: any) {
return `with: ${reason}`;
}
}
//fermeture du message d'alerte quand un menu est supprimé
onClickCloseAlert(){
this.isShow = ! this.isShow;
}
}

View File

@ -16,7 +16,7 @@ export class DeconnexionComponent implements OnInit {
ngOnInit(): void {
}
//au click on fait appel au ServiceToken pour supprimer le token et on redirige l'utilisateur
onClickDeco(){
this.tokenService.eraseToken();
this.router.navigate(['accueil']);

View File

@ -22,8 +22,9 @@ export class SigninComponent implements OnInit {
ngOnInit(): void {}
//quand on se connecte - appel au service d'authentification
public onSubmit(submittedForm: any): void {
console.log(submittedForm.form.value);
const email = submittedForm.form.value['email'];
const password = submittedForm.form.value['password'];
if (email !== '' && password !== '') {
@ -32,19 +33,20 @@ export class SigninComponent implements OnInit {
next: resp => {
this.router.navigate(['tableau-de-bord']);
},
error: err => {
error: err => { //gestion des alertes si les id/pwd sont faux
this.alert={"type":"danger", "content":"Le login ou paswword est invalide"};
this.isShow = true;
},
complete: () => console.log('DONE!')
});
} else {
// afficher une erreur à l'utilisateur
// affiche une erreur à l'utilisateur
this.alert={"type":"danger", "content":"Le login ou password est invalide"};
this.isShow = true;
}
}
//fermeture du message d'alerte
onClickCloseAlert(){
console.log('fermeture');
this.isShow = ! this.isShow;

View File

@ -92,7 +92,7 @@ export class PageAgendaComponent implements AfterViewInit {
{
next: result => {
this.viewChange();
this.alert={"type":"success", "content":"L'évènement à bien été modifié"};
this.alert={"type":"success", "content":"L'évènement a bien été modifié"};
this.isShow = true;
},
error: err => {
@ -105,7 +105,7 @@ export class PageAgendaComponent implements AfterViewInit {
);
}else{
this.viewChange();
this.alert={"type":"danger", "content":"Vous ne pouvez pas modifié cet évènement !"};
this.alert={"type":"danger", "content":"Vous ne pouvez pas modifier cet évènement !"};
this.isShow = true;
}

View File

@ -41,9 +41,7 @@ export class PageForgotPasswordComponent implements OnInit {
};
console.log(membre);
// this.authService.forgotPassword(membre).subscribe((resp) => {
// console.log('----'+resp)
// });
this.authService.forgotPassword(membre).subscribe(
{

View File

@ -36,16 +36,6 @@ export class PageResetPasswordComponent implements OnInit {
);
}
// public onSubmit(submittedForm: any): void {
// console.log(submittedForm.form.value);
// const password = submittedForm.form.value['password'];
// console.log(email);
// this.authService.resetPassword(email, password).subscribe((resp: any) => {
// window.alert("Votre mot de passe est bien ré-initialisé !")
// this.router.navigate(['accueil']);
// });
// }
public onSubmit(): void {
console.log('value : ', this.resetForm.value);

View File

@ -14,7 +14,6 @@ export class AuthInterceptor implements HttpInterceptor {
constructor(private tokenService: TokenService) {}
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
console.log('Coucou je suis le videur ! ');
const token = this.tokenService.getToken();
if(token) {

View File

@ -19,6 +19,7 @@ export class AuthService {
this.tokenKey = environment.tokenKey;
}
//methode pour s'inscrire - on passe l'objet en entier
signup(membre: Membre): Observable<any> {
console.log(membre);
@ -26,17 +27,15 @@ export class AuthService {
}
//methode pour se connecter - on passe id et pwd
signin(email: string, password: string): Observable<any> {
const body = {
email: email,
password: password,
};
console.log('Mon body : ', body);
return this.http.post(`${this.apiUrl}/membres/sign-in`, body).pipe(
map((x: any) => {
console.log('Service : ', x.token);
localStorage.setItem(this.tokenKey, x.token);
return x; // permet de renvoyer la réponse à l'initiateur (page Signin) après le traitement du map
})
@ -44,10 +43,12 @@ export class AuthService {
}
//permet d'envoyer un mail à l'utilisateur pour qu'il change son pwd
forgotPassword(membre: Membre): Observable<any> {
return this.http.post(`${this.apiUrl}/membres/forgot-password`, membre, {responseType: "text"});
}
//permet à l'utilisateur de changer son pwd
resetPassword(membre: Membre, uuid:string): Observable<any> {
console.log('--'+uuid+' / '+membre);
return this.http.put(`${this.apiUrl}/membres/reset-password/${uuid}`, membre);

View File

@ -19,7 +19,7 @@ apiUrl: string;
this.apiUrl = environment.apiUrl;
}
//on affiche les menus d'une team
//on affiche les menus d'une team - on récupère l'id de la team dans le token
getMenu(): Observable<any> | void {
const teamId = this.tokenService.getCurrentTeamId();
if (teamId){
@ -33,6 +33,7 @@ apiUrl: string;
return this.http.get(`${this.apiUrl}/menus/` + id);
}
//permet d'ajouter un menu et de lui attribuer l'id de la bonne team
addMenu(menu: Menu): Observable<any> | void {
console.log(menu);
const teamId = this.tokenService.getCurrentTeamId();
@ -44,11 +45,12 @@ apiUrl: string;
}
//suppression d'un menu
deleteMenu(id:number): Observable<any> {
return this.http.delete(`${this.apiUrl}/menus/delete/${id}`, {responseType:"text"});
}
//modification d'un menu - avec id du menu et id de la team
updateMenu(menu: Menu, id:number): Observable<any> | void {
const teamId = this.tokenService.getCurrentTeamId();
if (teamId){

View File

@ -11,6 +11,7 @@ tokenKey = environment.tokenKey;
constructor() { }
//récupère le token
public getToken(): string | null {
const token = localStorage.getItem(this.tokenKey);
if(token) {
@ -20,17 +21,18 @@ tokenKey = environment.tokenKey;
}
}
//supprime le token
public eraseToken(): string | null {
const token = localStorage.getItem(this.tokenKey);
if(token) {
localStorage.removeItem(this.tokenKey);
return token;
localStorage.removeItem(this.tokenKey); //.clear() supprime tous les token du localStorage !
return token; //utiliser remove()
}else {
return null;
}
}
//recupère l'id du membre stocké dans le token
public getCurrentMembreId(): number | null {
const token = this.getToken();
if(token) {
@ -42,6 +44,7 @@ tokenKey = environment.tokenKey;
}
}
//recupère l'id de la team stocké dans le token
public getCurrentTeamId(): number | null {
const token = this.getToken();
if(token){
@ -55,6 +58,7 @@ return null;
}
//recupère le role du membre stocké dans le token
public getRole(): string | null {
const token = this.getToken();
if(token){